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,實現了媒體端口的收斂;所以防火牆開放的端口範圍大大縮小