我刚刚开始研究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的跟踪器宣布自己?
答案 0 :(得分:1)
是的,两个对等体可以使用多个连接,同时共享具有不同 InfoHashes 的种子。根据连接的传输协议类型,有两种不同的情况。
当bittorrent对等体通过TCP共享时,它会打开一个向跟踪器通知的传入端口,该端口是用于连接到该对等端的每个其他对等端口的端口。但是,启动和建立传出连接的对等体会为每个传出连接使用不同的端口号 这使得可以通过其(IP:PORT< - > IP:PORT) -pair唯一地标识每个连接。
当对等体通过uTP / UDP共享时,它对传入和传出连接使用相同的端口。为了区分连接,the uTP protocol extension改为使用每个连接唯一的connection_id
。
为传入和传出连接使用相同端口的优点是它使UDP hole punching成为可能。
对等方为每个不同的 InfoHash 单独通知跟踪器。
所有现代客户端都会为它共享的所有种子重复使用相同的传入端口。