代码之家  ›  专栏  ›  技术社区  ›  rswayz

iOS10中的多点连接错误“发送绑定请求失败”

  •  12
  • rswayz  · 技术社区  · 8 年前

    我在iOS 10中的MPC应用程序中看到以下错误,我正在寻找一些帮助来解释它们。连接对等体后,会弹出以下几个错误。对等端最终连接,但速度比iOS 9慢(似乎导致错误消息的事件发生在主线程上)。在iOS<10

    [ViceroyTrace] [ICE][ERROR]     Send BINDING_REQUEST failed(C01A0041).
    Not in connected state, so giving up for participant [47CD8292] on channel [0].
    

    任何意见都将不胜感激!

    1 回复  |  直到 8 年前
        1
  •  16
  •   Community CDub    3 年前

    错误的原因和意义

    纳特

    为了解释错误的原因和含义,我们必须从NAT开始(如果您熟悉NAT,可以跳过这一部分)。

    NAT是一种为网络中的多个设备映射相同“全局”IP地址的方法 同一本地网络 也就是说,多个设备共享相同的地址(可能在不同的时间,可能使用不同的端口——NAPT),这样我们可以节省大量“全局”地址,并缓解ipv4地址的耗尽。也正因为如此,设备的本地地址只能在局域网内使用,不能在外部使用。要发送到外部的数据报将通过NAT设备(始终是路由器),该设备将头中的地址修改为全局地址。还有一点是 不同的局域网 可以使用相同的IP地址。

                     |
                     | /------------  'Global'
              X1':x1'|/               Address
               +------------+         
               |    NAT     |
               +------------+
                     |
                     | /------------  Local
                 X:x |/               Address
                 +--------+
                 |        |
                 | Agent  |
                 |        |
                 +--------+
    

    现在,我们想让对等体直接通信,所以我们必须知道对等体的地址。但正如我们所知,NAT的使用使得设备的地址只是一个本地地址,不能在互联网之外使用,并且无法使用它进行通信。 ICE的目的是发现对等体应该使用哪个地址直接与其他对等体通信。

    收集候选人地址

    第一阶段收集候选地址:

    • 接口地址
    • NAT公共端的翻译地址(服务器自反候选)
    • (可选):TURN服务器上的地址(中继候选者)

    为了获得公共端地址,设备将向公共服务器(称为STUN服务器,局域网外)发送“绑定请求”,并向服务器发送回称为“绑定响应”的地址。

    连通性检查

    当设备拥有它们拥有的地址时,它们将通过信令信道发送给其他对等方。当对等体(我们称之为“R”)从我们的设备(我们称其为“L”)接收到地址列表时,R将收集自己的地址并响应自己的列表。在这个过程结束时,它会导致 候选对 . 为了查看哪些对工作,每个代理都使用“绑定请求”和“绑定请求”,安排一系列检查绑定响应”。

    L                        R
    -                        -
    STUN request ->             \  L's
              <- STUN response  /  check
    
               <- STUN request  \  R's
    STUN response ->            /  check
    

    结论

    因此,总结而言,更多细节之前可能的原因:

    • 无法连接到STUN服务器;
    • 测试地址对时的正常故障;

    建议:

    • 查看有关ICE阶段的信息,了解ios10和其他ICE实现的差异。
    • This thread 是一些关于mpc缺陷的讨论,可能会启发您。

    裁判: