【发布时间】:2016-09-18 23:07:10
【问题描述】:
我了解 NAT 穿越以及 STUN、TURN 和 ICE 及其用途。我想知道这些是否在像 bittorrent 这样的点对点文件共享应用程序中实现。跟踪器是否通过帮助创建使用 STUN 的直接连接或通过 TURN 中继来促进 NAT 后面的对等方相互通信。在分布式哈希表 (DHT) 的情况下,一个对等点如何与 NAT 后面的其他对等点通信?
【问题讨论】:
标签: p2p nat bittorrent stun dht
我了解 NAT 穿越以及 STUN、TURN 和 ICE 及其用途。我想知道这些是否在像 bittorrent 这样的点对点文件共享应用程序中实现。跟踪器是否通过帮助创建使用 STUN 的直接连接或通过 TURN 中继来促进 NAT 后面的对等方相互通信。在分布式哈希表 (DHT) 的情况下,一个对等点如何与 NAT 后面的其他对等点通信?
【问题讨论】:
标签: p2p nat bittorrent stun dht
BitTorrent 不需要连接到集群中的任何特定成员,它不是一个 p2p 聊天协议,两个特定端点想要相互交谈。它只关心swarm的连接图是否有足够高的连接度。
换句话说,让 NAT 后面的客户端相互通信是可取的,但不会达到将主要资源(例如流量转发)用于该目标的程度。失败是一种选择。
因此它不使用 sip/turn/etc.
各种客户端使用以下方法的某种组合来改善批量传输连接的连接性:
ut_holepunch extension,它使用可相互访问的 swarm 成员代替 stun 服务器。在 DHT 的情况下,仅使用前两点(网关协商和端口重用)。尝试对单个请求-回复周期进行 nat 遍历的开销将 >100%,不值得。
【讨论】: