未知的 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:e
ut_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 消息的主要内容,如果未能解决你的问题,请参考以下文章
使用 libtorrent 获取 Bittorrent DHT 消息的所有字段
Bittorrent:响应消息“???ackeConnection ID 不匹配”是啥意思。 from tracker server 是啥意思?