Ответ на торрент-рукопожатие превышает 68 байт - PullRequest
0 голосов
/ 29 октября 2018

Я пытаюсь создать свой собственный клиент Torrent, используя протокол bit torrent. В настоящее время я нахожусь на этапе, когда я могу получить список одноранговых устройств из трекера и получить IP-адрес и порт однорангового узла.

Проблема начинается после того, как я посылаю сообщение о рукопожатии партнеру. Я следовал инструкциям и отправил рукопожатие размером 68 байт с хешем, идентификатором клиента и т. Д.

Я получаю ответ от партнера, который составляет 370 байт, а не ожидаемое 68-байтовое рукопожатие. Когда я анализирую первые 68 байтов ответа, он напоминает ответ рукопожатия. Он имеет тот же хеш, идентификатор клиента и т. Д. Однако я не знаю, что представляют собой оставшиеся 302 байта. Это нормально?

Есть ли документация, которая это четко объясняет? Я не могу найти какую-либо информацию, чтобы помочь с этой ситуацией. Спецификация протокола bit torrent по меньшей мере неопределенна.

Это ответ, который я получаю, преобразованный в строку

\u0013BitTorrent protocol\0\0\0\0\0\u0010\0\u00051O???6H*\u00118$??U\r*?:?d-UT354S-X?\u001b\u0001???rwQ\t?\0\0\0R\u0005?????????????????????????????????????\u07ff??????????????????????????????????????????\0\0\0\u0005\u0004\0\0\u0002\"\0\0\0\u0005\u0004\0\0\0T\0\0\0\u0005\u0004\0\0\0?\0\0\0\u0005\u0004\0\0\0?\0\0\0\u0005\u0004\0\0\0?\0\0\0\u0005\u0004\0\0\05\0\0\0\u0005\u0004\0\0\0\t\0\0\0\u0005\u0004\0\0\u0001Z\0\0\0\u0005\u0004\0\0\u00025\0\0\0\u0005\u0004\0\0\u0001*\0\0\0\u0005\u0004\0\0\0y\0\0\0\u0005\u0004\0\0\u0001I\0\0\0\u0005\u0004\0\0\u0002G\0\0\0\u0005\u0004\0\0\u0001?\0\0\0\u0005\u0004\0\0\0\u0001\0\0\0\u0005\u0004\0\0\u0002\f\0\0\0\u0005\u0004\0\0\u0001?\0\0\0\u0005\u0004\0\0\0?\0\0\0\u0005\u0004\0\0\0?\0\0\0\u0005\u0004\0\0\u00011\0\0\0\u0005\u0004\0\0\u0001W\0\0\0\u0005\u0004\0\0\0\u0016\0\0\0\u0005\u0004\0\0\0?\0\0\0\u0005\u0004\0\0\u0001?

Первые 68 байтов - это то, что я ожидал, оставшиеся 302 байта, которые я понятия не имею о

1 Ответ

0 голосов
/ 29 октября 2018

Теперь я понял, что это за дополнительные байты.

Это битовое поле и несколько сообщений! Мои проблемы не понимали, эту информацию можно отправить сразу после рукопожатия

...