WebRTC-转弯和ICE功能

WebRTC-转弯和ICE功能,webrtc,Webrtc,我试图理解WebRTC的一个概念。正如我在一些描述中发现的(例如这里),有这样一种建立连接的方法: 打电话给STUN,获取您的IP:端口地址 从回合中获得一些通道-通过该通道,您可以向其他对等方发送信息 发送给其他同级ICE候选人 与其他同事一起接受ICE候选人-开始通话 问题是,我们需要ICE候选人做什么?我们知道自己的IP,我们可以将它发送给其他对等方,这样我们就可以与其他对等方建立良好的连接,所以我们不必担心NAT。除了我们发送ICE候选者(为什么很多?)以及为什么我们需要使用它们之外,还

我试图理解WebRTC的一个概念。正如我在一些描述中发现的(例如这里),有这样一种建立连接的方法:

  • 打电话给STUN,获取您的IP:端口地址
  • 从回合中获得一些通道-通过该通道,您可以向其他对等方发送信息
  • 发送给其他同级ICE候选人
  • 与其他同事一起接受ICE候选人-开始通话

  • 问题是,我们需要ICE候选人做什么?我们知道自己的IP,我们可以将它发送给其他对等方,这样我们就可以与其他对等方建立良好的连接,所以我们不必担心NAT。除了我们发送ICE候选者(为什么很多?)以及为什么我们需要使用它们之外,还有什么原因?

    我们这里有三个主要概念:

    • 转向
    • 眩晕
    冰上谈判不是那么简单。。。 要执行ICE,UAs必须识别所有候选地址、传输地址。传输地址是特定传输协议的IP地址和端口的组合。有三类候选人:

    • 候选主机–与UA本地接口关联的传输地址
    • 中继候选–与转弯服务器关联的传输地址(只能从转弯服务器获得)
    • 服务器自反候选地址–NAT公共端的翻译地址(从STUN服务器或TURN服务器获取)

    在UA1收集了所有候选对象后,它会按照优先级从高到低的顺序排列这些候选对象,并在SDP offer消息的属性中将它们发送给UA2。UA2执行相同的候选者收集,并发送带有其候选者列表的SDP响应。每个UA获取两个候选列表,并将它们配对,形成候选对。每个UA将这些数据收集到检查列表中,并安排连接检查、STUN请求/响应事务,以查看哪些数据对有效。图3显示了组成UA检查列表的候选对的组件

    ICE将其中一个代理指定为“控制代理”,另一个指定为“控制代理”。控制代理使用有效候选对指定一对用于媒体。可以使用两种提名方法:

    • 定期提名检查将继续进行,直到至少有一对有效候选人。控制代理从有效对中挑选,并在该对上发送第二个带标志的眩晕请求,告知对等方这是指定使用的一个
    • 积极提名——一旦第一次检查成功,媒体流的ICE处理完成,并且不需要第二次眩晕请求,则每次眩晕请求都会发送提名标志
    检查列表中的每个候选对都有一个与其关联的状态。一旦计算出检查表,UA就会分配状态。有五种可能的状态:

    • 冻结此对只有在处于等待状态后才能进行检查。要进入等待状态,其他一些检查必须首先成功
    • 等待一旦这是检查列表中的最高优先级对,将执行检查
    • 正在进行此对的检查已发送,事务正在进行中
    • 配对检查的结果已成功
    • 配对检查的结果失败
    下面的链接包括更多关于冰流的信息和图表

    参考:

    • RFC

    TURN通常仅在无法建立直接对等连接时用作备用。后者是硬的部分,也是冰的用途


    始终使用转弯是一种选择,但有点像边缘情况。

    虽然我非常了解ICE的重要性,但我无法给出答案。好问题!