注:以下图片来自慕课网,侵权可删
TURN介绍
- 其目的是解决对称NAT无法穿越的问题
- 其建立在STUN之上,消息格式使用STUN格式消息
- TURN Client 要求服务端分配一个公共IP和Port用于接收或发送数据
TURN使用的传输协议
在上图的传输过程中 TURN Client端到 TURN server端可以使用 UDP、TCP、TLS over TCP
TURN server端到 peer端 统一使用UDP
TURN发送机制
- Send And Data(每次发送数据前都要带三十多字节的头)
TURN Client给TURN server发送请求时带有请求头,TURN server给Peer传数据时将请求头去掉
Peer再返回数据的时候,在TURN server给TURN Client的过程中,要再把头加上
- Channel(规定一个Channel Id,不用每次都带头消息,只要发送数据就可以了)
TURN Client首先发送一个绑定Channel请求,生成一个Channel Id(0x4001),再进行数据输出
Send And Data、Channel这两种方式是可以共存的
TURN的使用
- STUN binding
客户端到服务端打通,拿到映射的IP地址 - Caller TURN allocation
发起方(Caller)调用 allocation,让TURN server开辟一个服务,接收发送数据的IP地址和端口 - Caller sends offer
Caller 通过信令 SDP的offer 将媒体信息,网络信息等发送给被调用者 - Callee TURN allocation
对方(Callee)接到信息后也要发送给TURN服务发送 allocation - Callee answers OK
Callee 回复OK - Exchange candidate IP addresses
交换 IP地址 - ICE check for P2P connection
首先检查 P2P是否能打通NAT - If P2P unsuccessful, make relay connection
不成功的话,通过中继服务
网友评论