如何解决LibTorrent Nat 遍历
我正在尝试通过 LibTorrent 中的 add_peer()
函数连接到对等点。但是,如果我要从中下载文件的对等点位于 NAT 之后呢? Libtorrent 中是否有 NAT Traversal 功能?
解决方法
libtorrent 中的 NAT 穿越仅限于:
- 使用 UPnP、NAT-PMP 和 PCP 进行显式端口转发。
- 隐式(机会主义)尝试通过外部端口访问对等方
- 接收连接尝试的对等方不在 NAT 后面,但发起对等方在 NAT 后面。这就是 NAT 旨在支持的情况。
听起来您最感兴趣的是 (2),我们假设两个对等点都在 NAT 之后。这通常称为 UDP 打孔。
通常,如果您无法控制或无法影响您尝试连接的对等方,那么您可以采取的措施就会受到限制。
此外,如果这两个 NAT 都不是全锥(或者比方说,p2p 友好),则对等方可能无法连接。一个 p2p 友好的 NAT 通常接受来自他们之前没有交互的 IP 的传入连接。
libtorrent(以及通常的 bittorrent 客户端)使用的主要两种方法是:
-
通常连接的对等点可以通过对等交换扩展相互引入两个 NATed 对等点。在这种模式下,两个对等体同时尝试相互连接,希望两个 NAT 都会为正在尝试的端口打开针孔。这仅在 swarm 至少有一个不在 NAT 后面的对等点时才有效。您可以在 BEP 55
中找到更多相关信息 -
为 uTP、DHT 和 UDP 跟踪器共享 UDP 端口,并使侦听端口由跟踪器和 DHT 通告的源端口隐含。幸运的是,其他主机也可以使用该源端口来访问 NATes 客户端。这是有效的,因为 uTP 连接也通过 UDP 运行。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。