09 | 让我们揭开WebRTC建立连接的神秘面纱
该思维导图由 AI 生成,仅供参考
在 WebRTC 处理过程中的位置
连接建立的基本原则
- 深入了解
- 翻译
- 解释
- 总结
WebRTC建立连接的过程是一个复杂而精妙的技术挑战。文章深入浅出地解释了WebRTC建立连接的基本原则和技术细节,为读者提供了全面的了解。在媒体协商过程中,双方商定使用的编解码器和传输协议,然后WebRTC开始建立连接,确保传输的高效性和端与端之间的连通率。通过候选者的收集和连通性测试,WebRTC巧妙地解决了内网之间的连通性检测问题。文章还介绍了STUN协议和TURN协议,以及NAT打洞/P2P穿越和ICE的相关知识。WebRTC使用优先级的方法去建立连接,即局域网内的优先级最高,其次是NAT穿越,再次是通过中继服务器进行中转,巧妙地实现了“既要高效传输,又能保证连通率”这个目标。虽然WebRTC处理得很好,但仍有不够完美的地方,例如对于同一级别多个Candidate的情况,WebRTC无法从中选出哪个Candidate更优。整体而言,本文为读者提供了对WebRTC建立连接过程的深入理解,使其能够快速了解WebRTC技术特点和连接建立的复杂性。
《从 0 打造音视频直播系统》,新⼈⾸单¥59
全部留言(17)
- 最新
- 精选
- 花果山の酸梅汤srflx candidate是通过信令方式向STUN服务器发送binding request,通过该请求找到NAT映射后的地址(server视角);prflx candidate用于链接检查,当A按照优先级向目标peer B发送binding request,B收到peer A的连通性成功时获得的地址(peer视角)。不知道是否是这样。
作者回复: 赞,很到位!
2019-08-0514 - 山石尹口连通性检测时的超时设置比较重要,设置短了,会把可以连通的判断为不能连通,设置长了,就会在不能连通的配对上浪费时间
作者回复: 没错!
2019-08-035 - Benjamin这篇总算把 STUN 和 TURN 差别搞清楚了 理论上来说 relay 的 TURN 保证一定可以连接上,但是被中转了一次后,后续音视频 UDP 包效率会受到影响。
作者回复: 是的
2020-02-113 - Hengstar李老师你好。非常喜欢你的课,讲解很详细。我正好工作中有遇到很多麻烦的问题。比如有很多人家里会安装Wifi的扩展器(extender)设备,这样在家里的时候这些人在不同的位置可能会自动连接到不同的wifi设备(可能是路由器或者是扩展器之间来回切换)。对于这种情况,我们移动端用WebRTC实现的app在通过Host local网络连接上以后,切换wifi的时候是不是会断开WebRTC连接呢?我们如何能够判断这种情况?有没有办法可以很好的实现这种无缝的重连呢?
作者回复: 当发生网络切换时,移动端自己是可以检测出网络变化的,之后你需要调用pc restart,然后用replace复用原来的通道,这样应该就可以达到无缝切换了
2021-02-082 - Geek_fc668a老师,有个问题一直很不解,很希望获得您的解答:在一般的C/S架构中,服务器可以很轻松地获取客户端的ip地址,拿为什么不能由信令服务器获取一方的ip交给另一方发起连接,而需要STUN/TURN呢?
作者回复: stun 协议是专门定义的规范用于打洞的;你这是想自己再实现一套吗?
2020-12-0122 - Geek_82d1fd老师,我又几个问题 1. candidate是不是可以直接设置到SDP里面? 2. 跟媒体服务器通信的时候为什么要发Stun包?
作者回复: 1. candidate一开始就是放在 SDP中的,后来因为连接效率的问题所以才被拿出来 2. 发 STUN 包是为了 P2P 打洞
2020-04-1142 - 刘丹请问ICE是哪3个英文单词的缩写?是Internet Communication Engine吗?能否创建一个术语表章节?
作者回复: Interactive Connectivity Establishment (ICE) ,可以参考 https://tools.ietf.org/html/rfc5245
2019-08-0432 - piboye老师, 我一直纳闷 turn 服务器为什么一定要分配 relay port 出来, 这样分配后服务器很难部署了。 不分配端口也是可以做转发啊?
作者回复: 为什么难以部署呢?不分配端口通信双方如何通信呢?
2021-03-0321 - SherwinFengprflx和srflx都是为了获取内网主机IP映射的公网IP,只是srflx是通过STUN协议,prflx是直接向目的主机发起连接并请求响应的方式。
作者回复: 是的。对于 prflx 来说,它也用的 STUN协议!
2019-11-2321 - Jason是不是这样的?srflx:内网地址被NAT映射后的地址,对称型 NAT 与对称型 NAT 、对称型 NAT 与端口限制型 NAT是无法进行 P2P 穿越的;prflx:TUN Server上为客户端分配的中继地址,与各种NAT类型地址都可以进行P2P连接;
作者回复: 在进行NAT穿越时,如果可以进行穿越,则它向对端发送 binding request请求,binding response就会带回 prflx 类型的 IP 地址和端口,它们就形成了 prflx类型的 candidate。如果NAT穿越不过去,就要走 STUN服务,此时就会获 srflx 类型的 candidate
2019-08-051