WebRTC如何运作?


哦哦了
2025-03-18 09:19:20 (21天前)
  1. 我对浏览器中的Peer-to-Peer连接感兴趣。因为这似乎是可能的


的WebRTC
</跨度>
,我想知道它如何工作exaclty。

我已经阅读了一些解释并看到了关于它的图表,并且从计算机B连接到该端口。但似乎并非如此。

的WebRTC
</跨度>
。我认为没有一个客户端开始监听端口。不知何故,他们可以创建一个没有倾听的连接

5 条回复
  1. 0# 产品你是狗 | 2019-08-31 10-32



    WebRTC向客户端JS应用程序提供SDP Offer以发送(但JS应用程序需要)到另一个设备,该设备使用它来生成SDP应答。



    诀窍是SDP包括ICE候选者(有效地“试图在这个IP地址和这个端口与我交谈”)。 ICE致力于打开防火墙中的开放端口;虽然如果双方都是对称NAT,一般情况下是不可能的,并且可以使用替代候选者(在TURN服务器上)。



    一旦他们直接谈话(或通过TURN,实际上是一个数据包镜像),他们就可以打开DTLS连接并使用它来锁定SRTP-DTLS媒体流,并通过DTLS发送DataChannel。



    编辑:
    缩略语:

    http://blog.1click.io/10-jargons-abbreviations-for-webrtc-fans/

    其余的还有谷歌。其中大部分是由IETF定义的(

    http://ietf.org/




    编辑2:
    Firefox和Chrome(以及规范)已经转向使用ICE候选者的“涓涓细流”,因此ICE候选人通常被添加到PeerConnection并独立于初始SDP进行交换(尽管您可以等到最初的候选人)在发送报价之前准备就绪,并将它们捆绑在一起)。
    看到

    https://webrtcglossary.com/trickle-ice/



    https://datatracker.ietf.org/doc/draft-ietf-ice-trickle/


  2. 1# 拥有小太阳的向日葵 | 2019-08-31 10-32



    WebRTC的工作原理



    本文档提供了WebRTC的快速和抽象的介绍。要获得有关WebRTC的更多信息,请查看本文档末尾的“进一步阅读”部分。



    的WebRTC



    WebRTC(Web实时通信)是一组为浏览器之间的对等双工实时通信而开发的技术。正如它的名字所提到的,它与Web兼容并且它是一个

    W3C中的标准

    WebRTC的一个重要特性是它甚至可以在NAT地址之后工作。



    <img src =“https://www.talkpoint.com/wp-content/uploads/bfi_thumb/fig-1-nlfz6p10n6mcizp0u2pdzc4wzhjap8m1cvw8p5wdrs.png"alt =”WebRTC Peer to Peer“/>



    WebRTC使用多种技术在浏览器之间提供实时对等通信。这些技术是
    *

    SDP(会话描述协议)

    *

    ICE(交互连接建立)

    *

    RTP(实时协议)



    还有一件事是

    信令服务器
    </强>
    运行WebRTC需要。但是,在实现信令服务器方面没有明确的标准。每个实现都创建自己的风格。本节稍后将提供有关信令服务器的更多信息。



    让我们快速介绍一下上面的技术。



    SDP(会话描述协议)



    SDP是一种简单的协议,用于浏览器支持的编解码器。例如,假设有两个同伴(

    客户A.



    客户B.

    )将通过WebRTC连接。

    客户A.



    客户B.

    创建SDP字符串,定义它们支持的编解码器。例如,

    客户A.

    可支持H264,VP8和VP9编解码器用于视频,Opus和PCM编解码器用于音频。

    客户B.

    可能只支持视频的H264和音频的Opus编解码器。对于这种情况,将在其间使用的编解码器

    客户A.



    客户B.

    是H264和Opus。如果对等体之间没有共同的编解码器,则无法建立对等通信。



    您可能对如何在彼此之间发送这些SDP字符串有疑问。这是信令服务器发生的地方。



    ICE(交互连接建立)



    即使它们落后于NAT,ICE也是建立对等体之间连接的神奇之处。我们再假设一次

    客户A.



    客户B.

    将得到连接并看看ICE是如何用于此的。






    • 客户A.

      通过使用STUN服务器找出他们的本地地址和公共Internet地址,并将这些地址发送到

      客户B.

      通过信令服务器。从STUN服务器接收的每个地址都被调用

      ICE候选人








    在上图中,有两个服务器。其中一个是STUN,其他是TURN服务器。



    STUN服务器用来让

    客户A.

    了解它的所有地址。让我举个例子,我们的计算机通常在192.168.0.0网络中有一个本地地址,当我们连接到时,我们看到第二个地址

    www.whatismyip.com

    ,这个IP地址实际上是我们的Internet网关(调制解调器,路由器等)的公共IP地址,所以让我们定义STUN服务器; STUN服务器允许对等方知道它们的公共和本地IP地址。顺便说一句,谷歌提供免费的STUN服务器(stun.l.google.com:19302)。



    图像中还有一台服务器TURN服务器。当在对等体之间无法建立对等连接时,使用TURN服务器。 TURN服务器只是转发同伴之间的数据。






    • 客户B.

      这样做,从STUN服务器获取本地和公共IP地址,并将这些地址发送到

      客户A.

      通过信令服务器。






    • 客户A.

      收到

      客户B.

      通过发送特殊的ping来寻址和尝试每个IP地址,以便与之建立连接

      客户B.

      。如果

      客户A.

      从任何IP地址接收响应,它将该地址放在一个列表中,其中包含响应时间和其他性能凭据。最后

      客户A.

      根据性能选择最佳地址。






    • 客户B.

      为了连接而做同样的事情

      客户A.





    RTP(实时协议)



    RTP是用于传输实时数据的成熟协议。它基于UDP。音频和视频通过WebRTC中的RTP传输。存在RTP的姐妹协议,其名称是RTCP(实时控制协议),其在RTP通信中提供QoS。 RTP也用于RTSP(实时流协议)



    信令服务器



    最后一部分是WebRTC中未定义的信令服务器。如上所述,信令服务器用于发送SDP字符串和ICE候选者

    客户A.



    客户B.

    。信令服务器还决定哪些对等体相互连接。 WebSocket技术通常用于信令服务器进行通信。



    <img src =“https://image.slidesharecdn.com/introductiontowebrtcslideshare-160120114421/95/introduction-to-webrtc-6-638.jpg?cb=1453290542"alt =”“/>



    兼容性



    在过去的一年中,包括Safari,Edge在内的所有浏览器都发布了支持WebRTC的新版本。 Chrome,Firefox和Opera已经支持WebRTC一段时间了。浏览器常见的视频编解码器是H264。对于音频,Opus在浏览器中很常见。 PCM也可以用于音频编解码器,但是由于许可问题,即使所有浏览器都支持AAC,也不会使用AAC。 IP摄像机通常支持视频编解码器的H264和音频编解码器的PCM或AAC。



    进一步阅读和参考




    顺便说一句,我是开发人员

    Ant媒体服务器

    它支持可扩展的一对多WebRTC和对等WebRTC连接


  3. 2# CTO啊哦 | 2019-08-31 10-32



    在本书中可以找到一个非常好的解释

    http://chimera.labs.oreilly.com/books/1230000000545/ch03.html#STUN_TURN_ICE

    它提供了WebRTC如何使用ICE技术的基础知识。








    特别是假设STUN服务器的IP地址已知,WebRTC应用程序首先向STUN服务器发送绑定请求。 STUN服务器回复一个响应,该响应包含从公共网络看到的客户端的公共IP地址和端口。



    现在应用程序发现它的公共IP和端口元组,它们可以通过SDP发送给另一个对等体。 (请注意,SDP是通过外部信令通道发送的,通过Web服务建立的f.i. websocket)



    有了这个机制,每当两个对等体想要通过UDP相互通信时,他们就可以使用已建立的公共IP和端口元组来交换数据。



    不幸的是,在某些情况下,UDP可能会被防火墙阻止。为了解决这个问题,每当STUN失败时,我们都可以使用NAT(TURN)协议的遍历使用中继作为回退,它可以在UDP上运行并在所有其他方法都失败时切换到TCP。


  4. 3# Innate Mind | 2019-08-31 10-32



    建立p2p WebRTC连接有3个步骤(10.000英尺概述):





    1. 步骤1:

      信令
      </强>
      :两个对等体连接到信令服务器(使用超过80/443,彗星,SIP等的websockets)并交换信息(关于它们的媒体功能,公共IP:端口对,当它们变得可用时等)





    2. 第2步:

      发现
      </强>
      :连接到LAN或移动网络的设备不知道他们可以到达的公共IP(和端口),因此他们使用位于公共Internet上的STUN / TURN服务器来发现他们的ip:端口对(ICE候选者)。在这个过程中,他们在步骤3中使用的NAT /路由器上打了一个洞:





    3. 第3步:

      P2P连接
      </强>
      :一旦通过初始信令信道交换ICE候选者,每个对等体都知道彼此的ip:端口(并且在NAT /路由器中已经打孔),因此可以建立对等UDP连接。



    4. </醇>







      上述方案解释了连接到本地网络的2个设备的过程。这是我写的一篇文章的一部分

      解决连接问题

      但它很好地解释了WebRTC的工作原理。


登录 后才能参与评论