我正在寻找在Ruby中构建一个bittorrent客户端(尽管语言在这里并不重要)。
我读了一个BEP规范,该规范说明在/announce
(没有DHT支持)查询跟踪器会给出当前为给定信息哈希连接的对等列表。
检查一下。我创建了一个torrent文件,我发现跟踪器返回我的机器的IP以及端口(我确认是我的机器上的Bittorrent客户端的运行端口,即Utorrent)
但问题是,同行信息返回了我的ISP的IP,即111.125.209.41
(面向IP的公众,因为我在NAT后面)。
现在我无法通过 TCP 连接到我的机器上运行的进程,其中包含我的ISP的公共IP。
任何人都可以建议bitorrent如何处理这个问题以及我该怎么做才能解决这个问题。
通过UDP Bittorrent可能会使用UDP保持打孔而不确定TCP上会发生什么。
答案 0 :(得分:0)
有两个不同的问题。
第一种方法是通过各种nat traversal方法实现的,包括与nat设备协商或手动配置。
第二个问题要求路由器能够hairpin routing与转发端口结合使用,或者本地对等体通过其他方式发现内部地址,例如LSD。