Bittorrent协议。同一对等体之间的多次下载

时间:2014-11-06 16:03:42

标签: sockets protocols p2p bittorrent handshake

我刚刚开始研究bittorent协议,并且对于所有传入连接使用相同端口的bittorrent客户端有一个问题。

以下是我的问题示例:

第一次连接:一个本地对等方正在侦听 1.0.0.1:1 并从远程对等方接收地址 2.0.0.2:2 的连接。 确定。启动PWP

第二个连接:一个本地对等方侦听 1.0.0.1:1 ,并从远程对等方接收地址 3.0.0.3:2 的连接。 确定。启动PWP

第3次连接:本地对等方正在侦听 1.0.0.1:1 并从远程对等方接收地址 2.0.0.2:2 的连接但与另一个InfoHash。的 ???

第三次连接是否可能或远程对等方( 2.0.0.2:2 )必须跟踪它与本地对等方的连接( 1.0.0.1 :1 )并通过不同的端口连接到本地对等体,并且第二次向不同端口或/和对等ID的跟踪器宣布自己?

1 个答案:

答案 0 :(得分:1)

是的,两个对等体可以使用多个连接,同时共享具有不同 InfoHashes 的种子。根据连接的传输协议类型,有两种不同的情况。

TCP连接

当bittorrent对等体通过TCP共享时,它会打开一个向跟踪器通知的传入端口,该端口是用于连接到该对等端的每个其他对等端口的端口。但是,启动和建立传出连接的对等体会为每个传出连接使用不同的端口号 这使得可以通过其(IP:PORT< - > IP:PORT) -pair唯一地标识每个连接。

uTP / UDP连接

当对等体通过uTP / UDP共享时,它对传入和传出连接使用相同的端口。为了区分连接,the uTP protocol extension改为使用每个连接唯一的connection_id
为传入和传出连接使用相同端口的优点是它使UDP hole punching成为可能。


对等方为每个不同的 InfoHash 单独通知跟踪器。
所有现代客户端都会为它共享的所有种子重复使用相同的传入端口。