郑州网站建设哪家好,如何知道一个网站的流量,网页设计代码写入文字,wordpress 底部菜单ICE简介
ICE是用于UDP媒体传输的NAT穿透协议#xff08;适当扩展也可以支持TCP#xff09;#xff0c;它需要利用STUN和TURN协议来完成工作。
STUN协议提供了获取一个内网地址对应的公网地址映射关系#xff08;NAT Binding#xff09;的机制#xff0c;并且提供了它们…ICE简介
ICE是用于UDP媒体传输的NAT穿透协议适当扩展也可以支持TCP它需要利用STUN和TURN协议来完成工作。
STUN协议提供了获取一个内网地址对应的公网地址映射关系NAT Binding的机制并且提供了它们之间的保活机制。
TURN协议是STUN协议的一个扩展允许一个peer只使用一个转发地址就可以和多个peer实现通信。其本质是一个中继协议。
在WebRTC中ICE会在SDP中增加传输地址信息利用这个信息进行NAT穿透及确定媒体流传输地址。
ICE Candidate
WebRTC中的ICE Candidate是用来描述可以连接的远端的基本信息它至少包括addressportprotocol三元组还有Candidate类型、用户名等。
WebRTC将Candidate分成四种类型且类型间存在优先级次序从高到低分别为host、srflx、prflx和relay。
host从本机网卡上获取到的地址一般来说一个网卡对应一个地址。srflxserver reflexive从STUN服务器获取到的地址。relay从TRUN服务器获取到的地址。prflxpeer reflexive在联通测试中从对端数据报文中获取到的地址。
其中srflx和prflx地址可能是一样的但获取的途径不一样。
ICE的基本流程
ICE的基本流程有三步收集Candidate交换Candidate按优先级尝试连接。
收集Candidate
WebRTC在进行NAT穿透时也就是俗称的打洞首先会收集Candidate。客户端会按顺序先获取本地的host地址然后从STUN服务器获取srflx地址再从TRUN服务器获取relay地址。
交换Candidate
客户端收集到的这些地址会写到SDP报文中之后通过信令系统将它们发送给对端。对端收到这些Candidate后会与本地的Candidate组成CandidatePair。当然这种组合也是有规则的比如传输协议相同的Candidate才能组成CandidatePair。
需要说明的是WebRTC中的Candidate交换是使用的trickle方式也就是边收集边交换。
按优先级尝试连接
WebRTC会将CandidatePair按优先级排序然后按照这个顺序去进行连通性测试。如果有可以连通的CandidatePair就停止尝试将它作为数据传输地址。后续开始建立连接成功后就可以利用这个通道传输音视频数据了。
总结
WebRTC的ICE会选择出最好的连接通道来传输音视频数据。WebRTC的连通率几乎是100%因为即使无法完成P2P的连接最终也能通过中继relay的方式来实现端到端的连接。那么WebRTC具体是怎样利用ICE协议来实现P2P的NAT穿透的呢请关注后续文章。