例如收到一條ICE candidate如下:
candidate:240568271 1 udp 1686052607 174.139.8.82 64462 typ srflx raddr 10.1.1.19 rport 64462 generation 0 ufrag TWCy network-id 2 network-cost 50
欄位解析:
foundation(240568271):根據type、ip、protocol、replay_protocol計算出的字符串。一般於比較兩個candidate是否相等。
component(1):通道碼。 RTP通道碼是1、RTCP是2,這個例子表示這候選地址關聯RTP通道。
protocol(udp):傳輸層類型,upd或tcp。往往認為RTP、RTCP是用UDP,webrtc其實支持用TCP,但UDP較即時傳輸。
priority(1686052607):候選者的優先等級
ip(174.139.8.82):候選IP。它是真正須要的候選地址。當type是反射時,它就是NAT外的公網IP,此時raddr對應內網IP,
port(64462):候選IP關連的端口號。
typ(srflx):候選地址類型。它分本地(host)、反射(srflx),中轉(relay)。
raddr(10.1.1.19):候選IP基於的IP。對於host類型,它不存在。是type是srflx反射時,它就是內網IP。
rport(64462):raddr關聯的端口。
generation(0):代數。初始值是0,然後會不斷+1,大的代數會覆蓋掉低代數的候選地址。
ufrag(TWCy):用戶名,應該是用來檢查憑證用的,和SDP中的ufrag、pwd對應來看。
network-id(2):此網卡IP在網卡集合中的索引,從1開始。
network-cost:我猜是連線所花的成本,例如:連線所花時間。
類型 | 別名 | 如何傳給對端 | 用法 |
主機候選項 | host | 信令服務器 | 從網卡中獲取的本地傳輸地址,如果此地址位於NAT之后,则为内网地址 |
服務器反射候選項 | srflx | 信令服務器 | 從發送給Stun服务器的Binding检查中获取的传输地址。如果此地址位于NAT之后,则为最外层NAT的公网地址 |
對端反射候選項 | prflx | Stun Binding請求 | 從對端發送的Stun Binding请求获取的传输地址。这是一种在连接检查期间新发生的候选项 |
中繼候選項 | relay | 信令服務器 | 媒體中繼服務器的傳輸地址。通過使用TURN Allocate请求获取 |
沒有留言:
張貼留言