Реализация Bittorrent UDP - PullRequest
0 голосов
/ 09 мая 2018

Может кто-нибудь указать мне документацию о том, как реализовать приложение Bittorrent UDP?
Я работаю над приложением Bittorrent и могу успешно загрузить с использованием TCP, но я хочу реализовать UDP и не могу найти в нем никакой информации. Я получаю одноранговые узлы с помощью UDP-трекеров, но этот подход отличается от загрузки файлов. Если я снимаю UDP-рукопожатие, я вижу следующее в Wireshark:

172.16.49.213 5.31.44.30 UDP 62 35507 → 18318 Len = 20

5.31.44.30 172.16.49.213 UDP 62 18318 → 35507 Len = 20

Это сделано до рукопожатия. Кроме того, похоже, что к рукопожатию добавлено 20 байтов (отличается от 20 байтов выше).

Так что мне нужна информация, чтобы помочь мне понять, что все это значит.

1 Ответ

0 голосов
/ 09 мая 2018

Протокол BitTorrent Peer Wire по UDP, называемый uTP , указан в:
BEP29 - uTorrent транспортный протокол

BitTorrentInc также опубликовал uTP как IETF RFC, где они называют его LEDBAT:
RFC 6817 - Фоновая передача с малой дополнительной задержкой (LEDBAT)

Тем не менее, я бы никому не рекомендовал делать свою собственную реализацию (кроме как для обучения), так как она требует много времени критичного низкоуровневого сетевого ввода-вывода и очень сложна в реализации.

Вместо этого я рекомендую использовать библиотеку: https://github.com/bittorrent/libutp
Почти все клиенты, реализующие UTP, используют эту библиотеку. AFAIK, единственное исключение - libtorrent / rasterbar (используется qBittorrent и Deluge), и оно работает не так хорошо, как libutp .

...