要搞清webrtc ICE连接是否能成功 , 主要是搞懂NAT
NAT 类型 简单来说
一 是本地的ip和端口 决定外部的 ip和端口(和目的Ip和端口无关) , (这种情况又分为 , 无限制,仅限制 ip , 限制ip和port , 也就是要自己先给这个另外设备ip1和port1发过信息的情况下决定是否让这个ip1,port1的消息进来) (按理说 外部ip和port是固定的 , 那么双方都知道对方的ip和Port的情况下 都会往双方发消息,每一次发消息也行会失败,但是之后 双方都会记录对方的IP和port ,所以双方都能进入了,所以如果A,B设备没有其中一个是对称 NAT的情况下 ICE理论上打洞成功的话应该是能接通的)
二是 本地ip和端口和目的ip和端口决定 外部的ip和端口 , 这种情况STUN服务器得到和外部ip和端口就是无效的,所以另外 一个B设备是无法知道A设备的外部 ip和端口的 ,所以这时候一定要A设备能够访问到B设备先ICE从能接通, 如果 A设备是对称型NAT 那么B设备一定要full cone NAT才能接通了(设想 B设备无法知道A设备的外部Ip和port的情况下 就无法向A发消息,那就只能靠B能进去A了)