如何连接到从 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 获得的对等点的主要内容,如果未能解决你的问题,请参考以下文章