允许BitTorrent仅使用出站连接的机制是什么?
也就是说,没有端口转发。
BitTorrent 通常可以在 NAT(网络地址转换)环境中正常工作,因为它只能在出站连接下运行。
在这种情况下,其他对等点是否用作集合点服务器?
Wil*_*sum 10
据我所知,它使用反向连接工作- 基本上,您的客户端执行一个传出连接,该连接由远程机器保持打开状态,并且它们通过相同的连接泵送数据。
如果每个人都使用它并且没有人设置端口,它很可能会失败。当我在禁用端口的情况下使用 Bittorent 时,我获得了可怕的速度,但它确实有效,这就是为什么我认为它是这样工作的。
小智 9
BitTorrent 使用 P2P 连接工作。因此,必须有一种方法可以直接连接到对等方。如您所知,NAT 使 P2P 无法正常工作。但是有一些解决方案可以解决这个问题。大多数(据我所知)都是基于 STUN 协议的。
每个客户端使用 STUN 服务器获取其公共 IP 和临时端口号 (UDP)。STUN 服务器帮助客户端检测 NAT 的存在并检测公共 ip + 临时端口号(由 NAT 分配)。然后客户端尝试使用打孔技术建立与其他对等方的直接连接(请参阅维基百科)。
如果您启用了 UPnP,还有另一种解决方案。
有关详细信息,请参阅wikipedia 上的 NAT Traversal。
NAT 背后的对等点通过一种称为“打孔”的技术来工作。UDP和TCP的“打洞”有两种类型,但本质思想是相同的。但是还有第三个辅助器,有时也称为集合服务器,它可以帮助两个对等点建立连接。在 BitTorrent 的情况下,第三个对等点可以充当集合服务器,以促进其他两个对等点建立连接。从打算通信的对等方的角度来看,只有来自任何一方的传出连接。
需要注意的是,打洞可能适用于 60 - 70% 的 NAT,但不一定适用于所有 NAT,因为该技术取决于 NAT 服务器在本地和公共端点之间进行的 NAT 映射。如果 NAT 服务器采用稍微不同的方法来创建不易预测的映射,则打洞不起作用。
是的,其他对等点帮助各方建立连接。BEP 55 中对此进行了描述:http://bittorrent.org/beps/bep_0055.html
简而言之,它是https://en.wikipedia.org/wiki/UDP_hole_punching的实现,适合 BitTorrent 协议的分布式特性。