【发布时间】: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)
标签: nat bittorrent