我正在使用uTorrent下载新的Linux发行版,想知道uTorrent(以及其他BT客户端)如何通过NAT路由器互相发送文件。他们显然使用跟踪器进行介绍,但是他们如何相互传递信息呢? 是否有关于此的白皮书?我找不到: 谢谢
大多数情况下,它们并没有。我有一个受限制的网络,每次运行种子程序时,它都会警告我一些所需的端口/功能对我不可用。如果一方网络受限,而另一方网络开放,受限客户端将始终连接到开放客户端。如果您有两个受限客户端,它们将无法相互连接。之所以它能够工作,是因为大多数(足够多)在种子网络上的人都有某种端口转发或UPNP(通用即插即用)来促进此过程。
Torrent客户端基于所谓的分布式哈希表工作。它们从一组已知根开始,并向外扩展寻找其他连接的节点(即邻居)。与它们建立连接,并保持这种连接,直到达到一定限制。由于客户端发起连接,所有远程操作只需将数据返回,您就可以通过NAT正常获得数据。这就是网络流量的工作方式。