有关 SDP 中 UDP candidate 类型说明 ( host, srflx, prflx, relay )

----------------------------------------------------------------------------------------------------------------------

一分钟快速搭建 rtmpd 服务器: https://blog.csdn.net/freeabc/article/details/102880984

软件下载地址: http://www.qiyicc.com/download/rtmpd.zip

github 地址:https://github.com/superconvert/smart_rtmpd

----------------------------------------------------------------------------------------------------------------------

在学习 webrtc 的过程中,我们在学习  SDP 的过程中,发现有个字段 candidate,网上很多资料都一笔带过,或者解释含糊,或者解释错误。主要是 udp 下的 host, srflx, prflx, relay 四种 candidate 类型的解释不清,会导致很多疑惑。下面我就分享一下我的研究结果。最为权威的解释参见官方 RFC ,这个里面解释的最有权威。

https://tools.ietf.org/html/rfc5245

   Host Candidate:  A candidate obtained by binding to a specific port
      from an IP address on the host.  This includes IP addresses on
      physical interfaces and logical ones, such as ones obtained
      through Virtual Private Networks (VPNs) and Realm Specific IP
      (RSIP) [RFC3102] (which lives at the operating system level).

      这个地址来源于本地的物理网卡或逻辑网卡上的地址,对于具有公网地址或者同一内网的端可以用

   Server Reflexive Candidate:  A candidate whose IP address and port
      are a binding allocated by a NAT for an agent when it sent a
      packet through the NAT to a server.  Server reflexive candidates
      can be learned by STUN servers using the Binding request, or TURN
      servers, which provides both a relayed and server reflexive
      candidate.

      这个地址是端发送 Binding 请求到 STUN/TURN server 经过 NAT 时,NAT 上分配的地址和端口

   Peer Reflexive Candidate:  A candidate whose IP address and port are
      a binding allocated by a NAT for an agent when it sent a STUN
      Binding request through the NAT to its peer.

      这个地址是端发送 Binding 请求到对等端经过 NAT 时,NAT 上分配的地址和端口 
        PeerA           PeerB
      ( Full Cone <---> [Restricted Cone, Port Restricted Cone, Symmetric] )
      如果对方是 Full Cone 类型,对方就可以提供 prflx 类型的 candidate 了,个人理解,仅供参考。

   Relayed Candidate:  A candidate obtained by sending a TURN Allocate
      request from a host candidate to a TURN server.  The relayed
      candidate is resident on the TURN server, and the TURN server
      relays packets back towards the agent.

      这个地址是端发送 Allocate 请求到 TURN server ,由 TURN server 用于中继的地址和端口(这个可能是本机或 NAT 地址)

有关 TCP candidate type 的解释如下

https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API/Connectivity

TCP candidate types

TCP candidates (that is, candidates whose protocol is tcp) can be of these types:

active

The transport will try to open an outbound connection but won't receive incoming connection requests. This is the most common type, and the only one that most user agents will gather.

passive

The transport will receive incoming connection attempts but won't attempt a connection itself.

so

The transport will try to simultaneously open a connection with its peer.

你可能感兴趣的:(webrtc,流媒体,RTMP)