gpt4 book ai didi

network-programming - iOS10 中的多点连接错误 "Send BINDING_REQUEST failed"

转载 作者:行者123 更新时间:2023-12-04 01:55:58 25 4
gpt4 key购买 nike

我在 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].

任何投入将不胜感激!

最佳答案

the reason and meaning of the error


NAT
为了解释错误的原因和意义,我们先从NAT说起(熟悉的可以跳过这部分)。
NAT 是一种为同一本地网络中的多个设备映射相同的“全局”IP 地址的方法,即多个设备共享相同的地址(可能在不同的时间,可能使用不同的端口 - NAPT),我们可以通过这种方式保存大量的“全局”地址和缓解 ipv4 地址的耗尽。也正因为如此,设备的本地地址只能在局域网内使用,不能在外面使用。要发送到外部的数据报将通过 NAT 设备(始终是路由器),该设备会将 header 中的地址修改为全局地址。还有一点是不同 LAN 中的设备可能使用相同的 IP 地址。
                 |
| /------------ 'Global'
X1':x1'|/ Address
+------------+
| NAT |
+------------+
|
| /------------ Local
X:x |/ Address
+--------+
| |
| Agent |
| |
+--------+

现在,我们想让对等点直接通信,所以我们必须知道对等点的地址。但是我们知道,NAT的使用使得设备的地址只是一个本地地址,不能在Internet之外使用,并且无法使用它进行通信。
ICE 的目的是发现对等点应使用哪个地址与其他对等点直接通信。
收集候选人地址
收集候选人地址的第一阶段:
  • 其接口(interface)地址
  • 在 NAT 的公共(public)端翻译地址(服务器反射候选)
  • (可选):TURN 服务器上的地址(中继候选人)

  • 为了获得公共(public)端地址,设备将向公共(public)服务器(称为 STUN 服务器,在 LAN 外部)发送“绑定(bind)请求”,服务器将返回称为“绑定(bind)响应”的地址。
    连接检查
    当设备拥有它们拥有的地址时,它们将通过信令 channel 发送给其他对等方。当对等点(我们称之为“R”)从我们的设备(我们称之为“L”)接收到地址列表时,R 将收集自己的地址并响应自己的列表。在此过程结束时,结果为 候选人对 .
    要查看哪些对有效,每个代理都会安排一系列带有“绑定(bind)请求”和“绑定(bind)响应”的 CHECKS。
    L                        R
    - -
    STUN request -> \ L's
    <- STUN response / check

    <- STUN request \ R's
    STUN response -> / check
    结论
    因此,总而言之,在更多细节之前可能的原因:
  • 无法连接 STUN 服务器;
  • 测试地址对时正常失败;

  • 建议:
  • 查看有关 ICE 阶段的信息以了解 ICE 实现在 ios10 和其他版本之间的差异。
  • This thread是一些关于mpc的bug的讨论,可能对你有所启发。

  • 引用:
  • ICS RFC
  • NAT
  • 关于network-programming - iOS10 中的多点连接错误 "Send BINDING_REQUEST failed",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41313951/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com