洪流调试工具

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

【讨论】:

以上是关于洪流调试工具的主要内容,如果未能解决你的问题,请参考以下文章

CEF3 怎样调用调试工具

钉钉微应用H5开发调试工具

http调试工具,linux调试工具

JVM常用调试工具介绍

socket调试工具socket调试软件tcp调试工具tcp调试软件(sokit)

socket调试工具socket调试软件tcp调试工具tcp调试软件(sokit)