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