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

NAT遍历在对等协议(如bittorrent)中是如何工作的。

  •  27
  • user1887464  · 技术社区  · 8 年前

    我知道NAT穿越和STUN、TURN和ICE及其使用。我想知道这些是否在像bittorrent这样的对等文件共享应用程序中实现。追踪器是否通过使用STUN或通过TURN中继创建直接连接来帮助NAT后面的对等方相互通信。在分布式哈希表(DHT)的情况下,一个对等方如何与NAT后面的其他对等方通信?

    1 回复  |  直到 8 年前
        1
  •  44
  •   the8472    3 年前

    BitTorrent不需要连接到群中的任何特定成员,它不是一个p2p聊天协议,在这个协议中,两个特定的端点想要相互交谈。它所关心的是群的连接图具有足够高的连通度。

    换言之,让NAT后面的客户机相互交谈是有点可取的,但不会花费主要资源,例如流量转发,来实现这个目标。对于单个节点级别的故障是一个选项。 因此,它不使用sip/turn/etc。

    当然,在聚合群级别上,随着不可到达节点比例的增加,性能仍将降低。如果没有人可以接受传入的连接,那么BitTorrent就无法工作。

    各种客户使用以下方法的一些组合来改善散装运输连接的连通性:

    对于DHT,只使用前两点(网关协商和端口重用)。在单个请求-应答周期内尝试nat遍历的开销将是>100%,不值得。