设为首页收藏本站

ZMX - IT技术交流论坛 - 无限Perfect,追求梦想 - itzmx.com

 找回密码
 注册论坛

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

用百度帐号登录

只需两步,快速登录

搜索
查看: 406|回复: 0

比特彗星使用UTP协议进行NAT1 UDP打洞实现原理

[复制链接]
 成长值: 333

签到天数: 4736 天

[LV.Master]伴坛终老

发表于 2024/10/27 10:50 | 显示全部楼层 |阅读模式 |Google Chrome 130.0.0.0|Windows 10
天涯海角搜一下: 百度 谷歌 360 搜狗 有道 雅虎 必应 即刻
比特彗星使用UTP协议进行NAT1 UDP打洞实现原理

比特彗星NAT1打洞主要为以下两个方面
核心改进:添加对DHT协议里的implied_port 参数支持,以增强对透过NAT网络进行uTP传输的支持
核心改进:通过PEX发送peer列表时,对已连接的uTP peer提供其UDP外网端口,而不采用其本地监听端口

对于DHT
发送包
1.jpg

回复包
2.jpg

对方peer获得端口号与NAT1端口一致
3.jpg

对于PEX
与另一个peer建立连接后,双方都会把NAT1正确的端口通过PEX传递给对方与其它所有人,实现打洞

比特彗星的打洞和tracker汇报时发送为监听端口,而不是NAT端口,当前版本没有借助tracker去打洞

PT打洞原理
私有种子根据规范,使用BEP55协议,打洞需要等待2分钟左右
UTP直接发起请求连接失败后,则对自身客户端已经建立TCP和UTP传输连接的所有peer发起BEP55协议请求,随后响应可用于打洞的peer

截至目前libtorrent-2.0.10版本,依旧无法进行NAT1打洞

借助其它脚本实现外部方式的打洞也是可以的,但是实现过程比较复杂,不如直接在软件中内置PEX、DHT打洞算法,毕竟讲究的是默认值,不可能人人都会怎么去使用脚本

评分

参与人数 3樱币 +6 收起 理由
zsygooe + 2 很给力!
寻宝人2339 + 2 很给力!
algoblue + 2 神马都是浮云

查看全部评分

欢迎光临IT技术交流论坛:http://bbs.itzmx.com/
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册论坛 新浪微博账号登陆用百度帐号登录

本版积分规则

手机版|Archiver|Mail me|网站地图|IT技术交流论坛 ( 闽ICP备13013206号-7 )

GMT+8, 2024/12/22 19:52 , Processed in 0.438752 second(s), 23 queries , MemCache On.

Powered by itzmx! X3.4

© 2011- sakura

快速回复 返回顶部 返回列表