比特流 UDP 实现

Bittorrent UDP implementation

谁能给我指点一些关于如何实现 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 个字节不同)。

所以我需要一些信息来帮助我理解这一切意味着什么。

基于 UDP 的 BitTorrent Peer Wire 协议,称为 uTP 指定于:
BEP29 - uTorrent transport protocol

BitTorrentInc 还发布了 uTP 作为 IETF RFC,他们称之为 LEDBAT:
RFC 6817 - Low Extra Delay Background Transport (LEDBAT)

但是,我不建议任何人自己实施(作为学习经验除外),因为它涉及大量时间关键、低级别的网络 IO,并且很难做到正确。

相反,我建议使用库:https://github.com/bittorrent/libutp
几乎所有实现 uTP 的客户端都使用这个库。据我所知,唯一的例外是 libtorrent/rasterbar (used by qBittorrent and Deluge) and it don't work as good as libutp