比特彗星使用UTP协议进行NAT1 UDP打洞实现原理
比特彗星使用UTP协议进行NAT1 UDP打洞实现原理比特彗星NAT1打洞主要为以下两个方面
核心改进:添加对DHT协议里的implied_port 参数支持,以增强对透过NAT网络进行uTP传输的支持
核心改进:通过PEX发送peer列表时,对已连接的uTP peer提供其UDP外网端口,而不采用其本地监听端口
对于DHT
发送包
回复包
对方peer获得端口号与NAT1端口一致
对于PEX
与另一个peer建立连接后,双方都会把NAT1正确的端口通过PEX传递给对方与其它所有人,实现打洞
比特彗星的打洞和tracker汇报时发送为监听端口,而不是NAT端口,当前版本没有借助tracker去打洞
PT打洞原理
私有种子根据规范,使用BEP55协议,打洞需要等待2分钟左右
UTP直接发起请求连接失败后,则对自身客户端已经建立TCP和UTP传输连接的所有peer发起BEP55协议请求,随后响应可用于打洞的peer
截至目前libtorrent-2.0.10版本,依旧无法进行NAT1打洞
借助其它脚本实现外部方式的打洞也是可以的,但是实现过程比较复杂,不如直接在软件中内置PEX、DHT打洞算法,毕竟讲究的是默认值,不可能人人都会怎么去使用脚本
页:
[1]