NAT类型:分两大类 锥形NAT:完全圆锥型 --私网IP1:port1访问公网IP2:port2映射的地址IP3:port3,其他任意IP都可以访问IP3:port3
约束型 --私网IP1:port1访问公网IP2:port2映射的地址IP3:port3,只有IP2可以访问IP3:port3
对称NAT --私网IP1:port1访问公网IP2:port2映射的地址IP3:port3,只有IP2:port2可以访问IP3:port3
注:现在大部分都是对称NAT,锥形NAT已经过时
ICE = STUN + TURN
STUN:stun client向stun server发送bind请求,server告诉其map地址,stun client将自己的map地址告诉通信对端,所以stun可以穿越完全圆锥型NAT的组网
TURN:turn clinet向turn server发送allocation请求,server告诉其中继地址,后续所有码流由中继地址转发,所以turn可以穿越所有NAT的组网,只是turn server负载很重
ICE:ice agent首先向ice server收集地址,并告诉对端;当双方都知道了对端可能通信的地址对后,对这些地址对进行探测,最终选择能够通信的地址
ICE的好处:(1)节省ice server的流量 ,尽量由两个agent之间通信。
以下场景可以节省流量:a.可以直接通信的不同私网,例如两个私网的agent可以通过vpn直接通信 b.一公一私 c.两个agent在不同私网,但是有一个私网的NAT是完全圆锥型(2)对于server而言,转发媒体码流的端口都是3478,实现了媒体端口的收敛;所以防火墙开放的端口范围大大缩小