针对在IP上承载语音和视频的协议的控制通道/媒体通道无法穿越对称NlAT与公网进行互通的问题,设计并完成基于SIP协议上采用TURN技术的一种穿越对称NAT的方案:利用TURN服务器的中转,TURN客户端穿越对称NAT,与外部主机进行正常通信;与STUN结合,既可以穿越所有类型的NAT,又可降低TURN服务器的负载.提供该模块的封装接口,易于移植到其他类型的终端上.本方案已成功应用于基于嵌入式Linux平台的VoIP网关中。
TURN协议里有两个角色,client,和peer,TURN服务器常开TURN Server Address,如果client分配请求过来的时候,就重新开一个端口Relayed Transport Address,然后client发送标记数据是向TURN Server Address(标记数据里包含转发的目的地址,也就是peer的服务器反向候选地址,这个反向候选地址是相对于Relayed Transport Address的吧?),然后TURN服务器解析出目标地址,以Relayed Transport Address作为源地址发送到peer 。
反过来,peer发送UDP数据到Relayed Transport Address,然后服务器加上标记信息,标记信息包含peer的地址,然后以TURN Server Address作为源地址,发送给client。
有一个问题:是不是整个会话过程中,都是client和TURN Server Address交互,peer和Relayed Transport Address交互?
另外就是那个peer的服务器反向候选地址应该是到Relayed Transport Address获得的NAT映射地址吧?