BitTorrent是如何相互连接的?

4
我正在使用uTorrent下载新的Linux发行版,想知道uTorrent(以及其他BT客户端)如何通过NAT路由器互相发送文件。他们显然使用跟踪器进行介绍,但是他们如何相互传递信息呢? 是否有关于此的白皮书?我找不到:
谢谢
2个回答

2
大多数情况下,它们并没有。我有一个受限制的网络,每次运行种子程序时,它都会警告我一些所需的端口/功能对我不可用。
如果一方网络受限,而另一方网络开放,受限客户端将始终连接到开放客户端。如果您有两个受限客户端,它们将无法相互连接。之所以它能够工作,是因为大多数(足够多)在种子网络上的人都有某种端口转发或UPNP(通用即插即用)来促进此过程。

3
大多数情况下,我会同意。问题是一些路由器具有允许转发端口的UPnP功能,您还可以使用NAT穿透等技术。但就一般目的而言,你是正确的。 - Jess

0
Torrent客户端基于所谓的分布式哈希表工作。它们从一组已知根开始,并向外扩展寻找其他连接的节点(即邻居)。与它们建立连接,并保持这种连接,直到达到一定限制。由于客户端发起连接,所有远程操作只需将数据返回,您就可以通过NAT正常获得数据。这就是网络流量的工作方式。

是的,但客户端如何与位于NAT后面的另一个客户端建立连接呢?这对于因特网来说没有问题,因为每个Web服务器都有一个公共IP。 - Jess
有各种技术,例如通用即插即用(Universal Plug & Play),可以帮助促进这种行为。 - jer
1
DHT 用于补充或替代基于 Tracker 的对等发现。但它并不是 NAT 穿透解决方案,尽管 NAT 也会影响它。 - Alex Jasmin
我并没有说他们是,不过看到我写的内容,我可以很容易地理解为什么会这样推断。对于我没有表达清楚,我表示歉意。 - jer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接