Неизвестное Bittorrent-сообщение

Я получаю странное/неизвестное сообщение при попытке связаться с некоторыми одноранговыми узлами BitTorrent. В этом конкретном случае я нахожусь в процессе загрузки фрагментов, и вдруг это новое/странное сообщение появляется перед ответом на фрагмент. Сообщение нечетное, потому что оно не соответствует протоколу, предполагается, что все сообщения выглядеть так

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

префикс длины — 4 байта, идентификатор сообщения — 1 байт и полезная нагрузка. Я включаю захват, чтобы показать, что я имею в виду, в строке 509 захвата вы увидите запрос на кусок, в строке 510 вы увидите начало ответа.

Первые 4 байта ответа — 00 00 00 00, то есть сообщение длиной 0 (что вызывает у меня проблемы), следующие 4 байта — фактическая длина сообщения, равная 30. Фактический ответ на запрос части начинается в строке 513, так что я получаю то, что просил, но это новое/странное сообщение сбивает меня с толку. Я уверен, что смогу найти обходной путь, но мне бы очень хотелось понять, что это значит.

Кроме того, я понятия не имею, что означает настоящее сообщение, и нигде не могу найти никакой информации об этом.

Вот захват Wireshark.

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


person Ray_Write    schedule 14.06.2017    source источник
comment
Это не бинарник, это захват Wireshark   -  person Ray_Write    schedule 15.06.2017
comment
Ах, мой плохой. Возможно, вы захотите поместить это туда, возможно, также показать снимок экрана с выводом Wireshark для тех, кто не хочет загружать файл для просмотра его содержимого.   -  person cs95    schedule 15.06.2017
comment
эта ссылка не очень удобна для разработчиков, я не могу ее получить   -  person the8472    schedule 15.06.2017
comment
Это ссылка из моего OneDrive, не знаю, почему не работает wget.   -  person Ray_Write    schedule 15.06.2017


Ответы (2)


Данные из пакета 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 байта сообщение проверки активности

00 00 00 1e длина сообщения 30 байт
14 тип сообщения расширенное сообщение (BEP10)
01 идентификатор расширенного сообщения = 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 (закодированные с добавлением пробелов)

person Encombe    schedule 14.06.2017
comment
Ах, сохрани, спасибо. Все еще не понимаю, что означает расширенное сообщение, - person Ray_Write; 15.06.2017
comment
Тогда почему вы указываете в рукопожатии расширения, что ваш клиент поддерживает ut_pex?! - person Encombe; 15.06.2017

Первые 4 байта ответа: 00 00 00 00, т.е. сообщение длиной 0 (что вызывает у меня проблемы)

В спецификации BitTorrent говорится

Сообщения нулевой длины считаются активными и игнорируются.

person the8472    schedule 14.06.2017