TURN:Traversal Using Relays around NAT
参考链接:http://www.rfc-editor.org/rfc/rfc5766.txt(RFC5766)和http://www.cnblogs.com/ishangs/p/3816689.html(思路很清晰)
应用场景
STUN协议可以使内网主机获取到STUN Server看到的反射地址,其他主机可以向该反射地址发数据,被内网的主机收到。但当其他主机与该反射地址必须通过中继才能通信时,STUN需要扩展才能满足这种场景,这种扩展协议即是TURN。
TURN服务器负责通信两端数据的中继转发,因此就要求服务器高带宽。在ICE(交互式连接建立)时,会列出所有可以连接两端的候选通路,ICE协议从中选择优先级高的一条出来,而使用TURN建立的通路优先级很低。
重要术语
Transport Address:IP地址+端口号
Host Transport Address:客户端局部IP地址+端口号
Server-Reflexive Transport Address:客户端在公网被看到的IP地址+端口号
Relayed Transport Address:TRUN服务器为客户端分配的中继IP+端口,微客户端接收对端数据
TURN Server Transport Address:TURN服务器上的地址+端口,与客户端直接互发数据
Peer Tansport Address:TURN看到的对端公网上的IP+端口,若对端在NAT后面,则为对端的Server-Reflexive Transport Address
扩展的新STUN方法
Allocate、Refresh、Send、Data、CreatePermission、ChannelBind
新扩展的属性
CHANNEL-NUMBER:通道号
LIFETIME:allocation的持续时间
XOR-RELAYED-ADDRESS:中继地址
XOR-PEER-ADDRESS:对端地址
DATA:用于Send和Data indications消息中,表示应用数据