微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

LibTorrent Nat 遍历

如何解决LibTorrent Nat 遍历

我正在尝试通过 LibTorrent 中的 add_peer() 函数连接到对等点。但是,如果我要从中下载文件的对等点位于 NAT 之后呢? Libtorrent 中是否有 NAT Traversal 功能

解决方法

libtorrent 中的 NAT 穿越仅限于:

  1. 使用 UPnP、NAT-PMP 和 PCP 进行显式端口转发。
  2. 隐式(机会主义)尝试通过外部端口访问对等方
  3. 接收连接尝试的对等方不在 NAT 后面,但发起对等方在 NAT 后面。这就是 NAT 旨在支持的情况。

听起来您最感兴趣的是 (2),我们假设两个对等点都在 NAT 之后。这通常称为 UDP 打孔。

通常,如果您无法控制或无法影响您尝试连接的对等方,那么您可以采取的措施就会受到限制。

此外,如果这两个 NAT 都不是全锥(或者比方说,p2p 友好),则对等方可能无法连接。一个 p2p 友好的 NAT 通常接受来自他们之前没有交互的 IP 的传入连接。

libtorrent(以及通常的 bittorrent 客户端)使用的主要两种方法是:

  1. 通常连接的对等点可以通过对等交换扩展相互引入两个 NATed 对等点。在这种模式下,两个对等体同时尝试相互连接,希望两个 NAT 都会为正在尝试的端口打开针孔。这仅在 swarm 至少有一个不在 NAT 后面的对等点时才有效。您可以在 BEP 55

    中找到更多相关信息
  2. 为 uTP、DHT 和 UDP 跟踪器共享 UDP 端口,并使侦听端口由跟踪器和 DHT 通告的源端口隐含。幸运的是,其他主机也可以使用该源端口来访问 NATes 客户端。这是有效的,因为 uTP 连接也通过 UDP 运行。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。