我想在Ruby中构建一个BitTorrent客户端(虽然语言对此并不重要)。
我阅读了BEP规范,其中指出在没有DHT支持的情况下查询跟踪器上的/announce
将为给定信息哈希提供当前连接的对等方列表。
为了检查这个,我创建了一个种子文件,发现跟踪器返回了我的机器的IP和端口(我确认这是我的机器上运行的BitTorrent客户端的运行端口,即uTorrent)。
但问题在于,Peer信息返回的是我的ISP的IP地址,即111.125.209.41
(因为我在NAT后面,这是公共面向互联网的IP地址)。
现在我无法使用我的ISP的公共面向互联网的IP地址通过TCP连接到在我的机器上运行的进程。
有人能建议一下BitTorrent是如何处理这个问题的,我应该怎么做来解决它。
也许在UDP上,BitTorrent会使用UDP穿透,不确定TCP上会发生什么。