比特流 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。
谁能给我指点一些关于如何实现 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。