洪流调试工具
Posted
技术标签:
【中文标题】洪流调试工具【英文标题】:Torrent debugging tools 【发布时间】:2014-12-15 19:07:04 【问题描述】:是否有某种工具可以调试 bittorrent? 例如我希望查询跟踪器以获取对等列表。 我想检查我是否能够连接到某个对等方。
我的家庭网络有奇怪的行为。 我想了解它是如何工作的,但我找不到任何模拟种子的工具。
PS我已经做了一个简单的python应用来检查我是否可以接收UDP数据包
import socket
port = 50000
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind(("", port))
print "waiting on port:", port
while 1:
data, addr = s.recvfrom(1024)
print data
我可以发送ncat $IP $PORT -u -v
但是现在当我知道我可以将数据包发送到某个端口并且它被打开时。 我想检查我是否可以与该端口上的 torrent 应用程序通信。
一个 torrent 客户端可以工作,而另一个我不想知道出了什么问题。
【问题讨论】:
我发现最简单的方法是在客户端停用加密,然后使用wireshark.org 查看发生了什么。 【参考方案1】:没有“Bittorrent 调试器”,但您可以使用各种工具来诊断问题。
您可以使用本地 nmap 或为远程 nmap 实例提供前端的 Web 服务来探测端口的可达性。
您可以使用带有bittorrent解析器的wireshark来调试协议本身,这需要对bittorrent协议有一定的了解。
一些客户端(例如 vuze)提供了非常详细的日志记录,包括可以帮助诊断问题的单个 bittorrent 消息。
您可以在不同的端口或虚拟机上运行第二个客户端,并让它们通过本地网络相互通信,以排除潜在的路由器/防火墙问题。
【讨论】:
关于最后一点,有没有办法将 bittorrent 客户端直接指向另一个节点(我要调试的节点),而无需通过跟踪器? 取决于客户端,有些具有通过 ip:port 显式添加对等点的功能。【参考方案2】:我在自己的代码中调试协议问题的做法是,我设置了各种 VM/容器,其中 1 个运行跟踪器 (opentracker),其他运行各种客户端,而我的主机运行我自己的客户端,我定期测试。然后我有选择地启动和停止客户端,让他们与我的客户端和跟踪器交谈,然后我可以轻松地分析所有在所有片段之间通过的 bittorrent 流量。您可以轻松扩展相同的设置以在真实网络中包含多台机器,而不是虚拟机/容器和虚拟网络。
要“让”客户端相互交谈,只需与其中一个客户端创建一个 torrent(大多数客户端可以从您拥有的文件中制作 torrent)并将您自己的跟踪器添加到 torrent。然后将 torrent 文件添加到您的其他客户端,它们就会开始相互交谈并立即分发数据。
最后,你会得到这样的东西:
+-----------+
Debug client <----> | | <----> opentracker <--------> another client
^ | Wireshark | ^
| | | |
+------------> | | <-----------------------------------+
+-----------+
您可以精确分析通过 bittorrent 协议获得的流量。 Wireshark 甚至有用于 bittorrent TCP 协议的解析器,因此您甚至不必自己破译神秘的字节。
请注意,您必须了解协议本身:
Protocol and .torrent file spec Tracker spec【讨论】:
以上是关于洪流调试工具的主要内容,如果未能解决你的问题,请参考以下文章