欢迎来到天天文库
浏览记录
ID:10302099
大小:77.50 KB
页数:9页
时间:2018-07-06
《nat穿透技术分析报告》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、nat穿透技术分析报告总结了ICE的优势及应用前景。关键词ICE;SymmetricNAT;STUN;TURN;SIP1问题背景多媒体会话信令协议是在准备建立媒体流传输的代理之间交换信息的协议,例如SIP、RTSP、H.323等。媒体流与信令流截然不同,它们所采用的网络通道也不一致。由于协议自身设计上的原因,使得媒体流无法直接穿透网络地址转换/防火墙(NAT/Fessage)包含了描述会话发起者媒体流的配置与特征,并经过信令调停者(也叫信令中继),最后到达会话响应者。假设会话响应者同意通信,接受信息(
2、AcceptMessage)将产生并反馈至会话初始者,媒体流建立成功。此外,信令协议还对媒体流参数修改以及会话终止消息等提供支持。对于SIP,会话发起者即UAC(UserAgentClient),会话响应者即UAS(UserAgentServer),初始化消息对应SDP请求里面的INVITE,接受消息对应于SDP应答里面的200OK,终止消息对应于BYE。2.3算法流程2.3.1收集传输地址会话发起者需要收集的对象包括本地传输地址(LocalTransportAddress)和来源传输地址(Deriv
3、edTransportAddress)。本地传输地址通常由主机上一个物理(或虚拟)接口绑定一个端口而获得。会话发起者还将访问提供UNSAF(Unilateralself-addressfixing)的服务器,例如STUN、TURN或TEREDO。对于每一个本地传输地址,会话者都可以从服务器上获得一组来源传输地址。显然,实现物理或虚拟连通方式越多,ICE将工作得越好。但为了建立对等通信,ICE通常要求至少有一个来源地址由位于公网上的中继服务器(如TURN)所提供的,而且需要知道具体是哪一个来源传输地址。
4、2.3.2启动STUN会话发起者获得一组传输地址后,将在本地传输地址启动STUN服务器,这意味着发送到来源地址的STUN服务将是可达的。与传统的STUN不同,客户端不需要在任何其它IP或端口上提供STUN服务,也不必支持TLS,ICE用户名和密码已经通过信令协议进行交换。客户端将在每个本地传输地址上同时接受STUN请求包和媒体包,所以发起者需要消除STUN消息与媒体流协议之间的歧义。在RTP和RTCP中实现这个并不难,因为RTP与RTCP包总是以0b10(v=2)打头,而STUN是0b00。对于每个运
5、行STUN服务器的本地传输地址,客户端都必须选择相应的用户名和密码。用户名要求必须是全局唯一的,用户名和密码将被包含在初始化消息里传至响应者,由响应者对STUN请求进行鉴别。2.3.3确定传输地址的优先级STUN服务器启动后,下一步就是确定传输地址的优先级。优先级反映了UA在该地址上接收媒体流的优先级别,取值范围在0到1之间,通常优先级按照被传输媒体流量来确定。流量小者优先,而且对于相同流量者的Ipv6地址比Ipv4地址具有更高优先级。因此物理接口产生的本地Ipv6传输地址具有最高的优先级,然后是本地
6、Ipv4传输地址,然后是STUN、RSIP、TEREDO来源地址,最后是通过VPN接口获得的本地传输地址。构建初始化信息(Initiate2.3.4构建初始化信息(InitiateMessage)初始化消息由一系列媒体流组成,每个媒体流都有一个缺省地址和候选地址列表。缺省地址通常被Initiate消息映射到SIP信令消息传递地址上,而候选地址列表用于提供一些额外的地址。对于每个媒体流来说,任意Peer之间实现最大连通可能性的传输地址是由公网上转发服务器(如TURN)提供的地址,通常这也是优先级最低的传
7、输地址。客户端将可用的传输地址编成一个候选地址列表(包括一个缺省地址),并且为每个候选元素分配一个会话中唯一的标识符。该标识符以及上述的优先级都被编码在候选元素的id属性中。一旦初始化信息生成后即可被发送。响应处理:2.3.5响应处理:连通性检查和地址收集会话应答方接收到初始化信息InitiateMessage后,会同时做几个事情:首先,执行2.3.1中描述的地址收集过程。这些地址可以在呼叫到达前预收集,这样可以避免增加呼叫建立的时间。当获得来源地址以后,应答方会发送STUNBind请求,该请求要求必
8、须包含Username属性和Pass和c中的地址。Media块中可能会有多个alt属性,这时每个alt应该包括不重复的IP地址和端口。语法属性如下:alt-attribute=alt:idSPqvalueSPderived-fromSPusernameSPpassRFC3261;unicast-address,portfromRFC2327username=non-=:/id33.1实例设计SymmetricNAT/Fessage如下:v=0o=Dodo
此文档下载收益归作者所有