未知的 Bittorrent 消息

Posted

技术标签:

【中文标题】未知的 Bittorrent 消息【英文标题】:Unknown Bittorrent Message 【发布时间】:2017-06-14 22:07:54 【问题描述】:

我在尝试与一些 bittorrent 对等方通信时收到一条奇怪/未知的消息。在这种特殊情况下,我正在下载片段,突然这条新/奇消息在片段响应之前弹出。消息很奇怪,因为它似乎不遵循协议,所有消息都应该看起来像这样

'<length prefix><message ID><payload>'

长度前缀是 4 个字节,消息 ID 是 1 个字节和有效负载。我包括一个捕获来说明我的意思,在捕获的第 509 行你会 看到一个片段的请求,在第 510 行你会看到响应的开头。

响应的前 4 个字节是 00 00 00 00,即 0 长度消息(这引起了我的问题),接下来的 4 个字节是消息的实际长度,即 30。对块请求的实际响应从第 513 行开始,所以我得到了我要求的部分,但是这条新/奇怪的消息把我弄乱了。我确信我可以找到解决方法,但我真的很想了解这意味着什么。

另外,我不知道实际消息的含义,也无法在任何地方找到有关它的任何信息。

这是 Wireshark 的捕获。

https://1drv.ms/u/s!Agj06pa-wu0tnFqsYn_KnHmVz3x2

【问题讨论】:

它不是二进制文件,而是 Wireshark 捕获 啊,我的错。可能想把它放在那里,也可能显示 Wireshark 输出的屏幕截图,供那些不想下载文件查看其内容的人使用。 那个链接对开发者不太友好,我看不懂 这是我 OneDrive 的链接,不知道为什么 wget 不起作用。 【参考方案1】:

来自数据包 510 的数据:

0000   00 00 00 00 00 00 00 1e 14 01 64 35 3a 61 64 64  ..........d5:add
0010   65 64 36 3a 63 f2 7a 48 17 f4 37 3a 64 72 6f 70  ed6:c.zH..7:drop
0020   70 65 64 30 3a 65                                ped0:e

00 00 00 00 4 字节 keep-alive 消息

00 00 00 1e 消息长度 30 字节14 消息类型 扩展 消息 (BEP10)01 扩展消息 ID = 1,由先前的扩展握手指定:ut_pex

64 35 3a 61 64 64 65 64 36 3a 63 f2 7a 48 17 f4 37 3a 64 72 6f 70 70 65 64 30 3a 65 d5:added6:c.zH..7:dropped0:eut_pex 消息数据(编码)

d
 5:added
  6:c.zH..
 7:dropped
  0:
e

ut_pex 消息数据(加了空格的编码)

【讨论】:

啊,保持活力,谢谢。还是不明白扩展消息是什么意思, 那么,你为什么在扩展握手中表明你的客户端支持ut_pex?!【参考方案2】:

响应的前 4 个字节是 00 00 00 00,即长度为 0 的消息(这导致了我的问题)

bittorrent spec 说

长度为零的消息是keepalive,并被忽略。

【讨论】:

以上是关于未知的 Bittorrent 消息的主要内容,如果未能解决你的问题,请参考以下文章

BitTorrent 协议实现:未收到“Piece”消息

使用 libtorrent 获取 Bittorrent DHT 消息的所有字段

Bittorrent:响应消息“???ackeConnection ID 不匹配”是啥意思。 from tracker server 是啥意思?

BitTorrent:发送请求的最佳速率?

未从 bittorrent 对等握手接收到任何数据

aria2下载ftp未知错误