当我打开一个 Bittorrent 文件时,我是否会与当前正在下载/播种该 Bittorrent 文件的所有人建立联系?
或者我只与当前正在下载/播种该 Bittorrent 文件的一小部分人建立了联系?
我想要说的是,假设当前有 100 万人正在下载/播种这个文件,Bittorrent 是否只会选择其中的 1000 人(比如基于国家/地区,那些与我的 IP 相比位置较近的人)还是 Bittorrent 会简单地将我连接到所有人?
答案1
你的客户端将使用多种方法(咨询跟踪器、DHT 和对等交换)来定位所有共享该文件的对等点(或尽可能多的对等点)。但它不会,连接对所有节点。定位过程的一部分是确定每个节点拥有文件的哪些部分。然后,它只联系拥有您没有的文件部分节点的节点,并且它只联系每个块的一个节点。这将下载连接的最大数量限制为文件中的块数量,尽管您的客户端很少会同时尝试超过 30 个连接(您的客户端将尝试根据您的互联网服务和其他因素自动优化连接数量)。同样,如果您拥有他们没有的文件部分,其他节点也会联系您。如果太多节点同时请求块,您的客户端将开始拒绝,直到连接数回落。
通常,您可以手动配置客户端将提供的最大传入和传出连接数,或者,如果您不手动设置限制,客户端将考虑到您的带宽尽可能地提供最大连接数。例如,以下是 mutorrent 中的带宽和连接设置:
答案2
您连接到所有可用源的子集。而且您实际上可以控制连接的数量。
例如,我在 Mac 上使用 uTorrent。它默认最多有 200 个连接,每个 torrent 最多有 50 个连接。uTorrent 将尝试获得最佳连接(即更快的下载/更大的带宽/更低的 ping)。
答案3
您的 Bittorrent 应用程序将定期向跟踪器查询(“抓取”)以获取对等点列表。
跟踪器有可能不会返回完整列表,而是返回其中的随机子集,我相信许多跟踪器确实都是这样做的。
许多 Bittorrent 应用程序都有一个设置,限制同时传出的连接数,通常默认为一个合理的值。