RFC 5245 ICE
1, offer/answer model
2, ICE Step:
1) 产生候选地址(1.公网 2.NAT反射 3.Relay转发地址) Generate candidates
2) 本地对端交换候选地址,完成连接性检查。(用RTP包,一个四次握手的过程,如下图:)
3) 根据优先级进行排序 Sorting Candidates
4) 冻结候选地址 Frozen Candidates
5) 安全性检查 Security for Checks
6) 结束ICE过程 Concluding ICE
3. STUN (request/response model)
1) binding message format
2) binding request/binding response
3) 目前定义了三种STUN用途:
Interactive Connectivity Establishment(ICE)[MMUSIC-ICE],交互式连接建立
Client-initiated connections for SIP [SIP-OUTBOUND],用于SIP的客户端初始化连接
NAT Behavior Discovery [BEHAVE-NAT],NAT行为发现
4. TURN
1)Relayed Transport Address:TURN服务器上的传输地址,用于客户端和对端中继数据。
TURN Server Transport Address:TURN服务器上的传输地址,用于客户端发送STUN消息给服务器。
Peer Transport Address:服务器看到的对端的传输地址,当对端是在NAT后面,则是对端的服务器反射传输地址。
Allocation:通过Allocate请求将中继传输地址提供给客户端,除了中继状态外,还有许可和超时定时器等。
5-tuple:五元组,包括客户端IP地址和端口,服务器IP地址和端口和传输协议(包括UDP、TCP、TLS)的组合。
Channel:通道号与对端传输地址的关联,一旦一个通道号与一个对端的传输地址绑定,客户端和服务器就能够利用带宽效应更大的通道数据消息来交换数据。
Permission:一个对端允许使用它的IP地址和传输协议来发送数据到TURN服务器,服务器只为从对端发来的并且匹配一个已经存在的许可的流量中继到相应的客户端。
Realm:服务器内用于描述服务器或内容的一个字符串,这个realm告诉客户端哪些用户名和密码的组合可用于认证请求。
Nonce:服务器随机选择的一个字符串,包含在报文摘要中。为了防止中继攻击,服务器应该有规律的改变这个nonce。
2)方法:
0x003 Allocate
0x004 Refresh
0x006 Send
0x007 Data
0x008 CreatePermission
0x009 ChannelBind