如何连接到从 bittorrent 获得的对等点

Posted

技术标签:

【中文标题】如何连接到从 bittorrent 获得的对等点【英文标题】:How to connect to peers in obtained from bittorrent 【发布时间】:2017-10-16 20:31:09 【问题描述】:

我希望在 Ruby 中构建一个 bittorrent 客户端(尽管语言在这里并不重要)。

我阅读了一个 BEP 规范,其中说在 /announce(不支持 DHT 支持)查询跟踪器将给出当前连接到给定信息哈希的对等点列表。

对此进行检查。我创建了一个 torrent 文件,发现跟踪器返回了我机器的 IP 以及端口(我确认这是我机器上 Bittorrent 客户端的运行端口,即 Utorrent)

但问题是 Peers 信息返回了我的 ISP 的 IP,即 111.125.209.41(因为我在 NAT 后面,所以面向公众的 IP)。

现在我无法(通过 TCP)连接到在我的机器上运行的进程,使用我的 ISP 的面向公众的 IP。

谁能建议bitorrent如何解决这个问题以及我应该怎么做才能解决这个问题。

可能通过 UDP Bittorrent 会使用 UDP 保持打孔,不确定 TCP 上会发生什么。

【问题讨论】:

这就是为什么许多 BitTorrent 客户端推荐某种端口转发的原因。此外,播种客户端通常会主动连接到其他客户端,但如果两者都位于 NAT 之后,则不会发生这种情况。 您的实际问题是什么,从外部还是从家庭网络内部可访问性?如果它来自您的网络内部,那么它对 bittorrent 的关注度较低,因为大多数对等方将拥有外部视图。 @the8472 首先是内部和外部,我将如何连接到位于 NAT 后面的外部对等体,如果可以回答,我想那么内部一个是自我解释的,就像对等体如何来自外部连接到我位于 NAT 后面的 torrent 服务器。 您是否考虑过构建一个在您的 NAT 内部运行的私有跟踪器?如果所有设备都在 NAT 之后,则跟踪器应该能够使用内部 IP。 @Tyzoid 点我正在尝试了解如何构建一个简约的 Bitorrent 客户端(支持 Public) 【参考方案1】:

有两个不同的问题。

    互联网上的对等点(也就是全球 99.99999%)如何连接到您的 NAT 节点 网络内的对等方如何连接到同一网络上的节点。

第一种是通过各种nat traversal方法实现的,包括与nat设备协商或者手动配置。

第二个问题要么需要能够hairpin routing 与转发端口相结合的路由器,要么需要本地对等方通过其他方式(例如LSD)发现内部地址。

【讨论】:

@nullptr 这很复杂,我认为这应该是它自己的问题。

以上是关于如何连接到从 bittorrent 获得的对等点的主要内容,如果未能解决你的问题,请参考以下文章

未从 bittorrent 对等握手接收到任何数据

使用 ruby​​ 连接到 torrent "swarm" 或 DHT

如何在 Bittorrent 跟踪器中完成对等点的识别

Bittorrent 在多个对等点之间维护状态

为啥我从对等端接收的数据与预期输出不匹配?

wifi-direct端连接到Android上的对等点?