注:以下圖片來自慕課網(wǎng),侵權(quán)可刪
ICE (Interactive Connectivity Establishment)
將NAT TURN打包在一起,做一個最優(yōu)選擇
首先嘗試p2p,如有兩臺服務通過,也會選擇一個最優(yōu)服務
不通則選擇TURN,如有多個節(jié)點,上海TURN不通,則選擇北京的TURN
總之,將所有可能性羅列好,在其中找到一條最優(yōu)路徑,將數(shù)據(jù)發(fā)送

ICE就是讓兩個終端去得到所有能夠連接到對方終端的通路,并找出最優(yōu)的可通通路
- 第一種通路,本機IP,如果兩個終端在一個服務下,直接通過本機IP連通
- 第二種通路,穿越NAT,雙方終端訪問STUN服務,都拿到外網(wǎng)IP,嘗試P2P穿越,成功既可以連接
- 第三條通路,P2P不成功,通過中繼服務器Relay server
ICE 具體工作
- 收集 Candidate
- 對 Candidate Pair 排序 (對候選者對 進行排序,認為優(yōu)先級高的 先做測試)
- 連通性檢查(嘗試連通)
ICE Candidate
每個 candidate(候選者)是一個地址
例如:a = candidate: ...UDP/TCP ...192.169.1.2 1816 type host
每個候選者包括:協(xié)議、IP、端口、類型
Candidate 類型
- 主機候選者(網(wǎng)卡自己的IP地址和端口)
- 反射候選者(通過NAT之后的IP地址和端口)
- 中繼候選者(通過TURN服務開通的IP地址和端口)
形成 Candidate Pair
- 一方收集到所有候選者后,通過信令傳給對方
- 同樣,另一方收到候選者后,也做收集工作
- 當雙方拿到全部列表后,將候選者形成配對兒
連通性檢查
- 對候選對進行優(yōu)先級排序
- 對每個候選對進行發(fā)送檢查
- 對每個候選對進行接收檢查(和發(fā)送同時進行)
SDP
SDP(Session Description Protocol)它只是一種信息格式的描述標準,本身不屬于傳輸協(xié)議,但是可以被其他傳輸協(xié)議用來交換必要的信息(媒體信息,網(wǎng)絡信息)。

SDP的例子,其中Candidate只有主機候選者和反射候選者