Bittorrent 在多个对等点之间维护状态

Posted

技术标签:

【中文标题】Bittorrent 在多个对等点之间维护状态【英文标题】:Bittorrent maintain states among multiple peers 【发布时间】:2020-04-10 19:22:17 【问题描述】:

我正在关注Kristen Widman 编写bittorrent 客户端的教程,以及Wiki,但是我有一点困惑,我无法从在线资源中清除。

到目前为止,我已经能够发送一个跟踪器请求并接收一个对等点列表,我已经这样存储了它们的 IP 地址和端口:

['IP': IPv4Address('76.126.244.88'), 'port': 6881, ... ]

Kristen 在她的教程中建议我先尝试连接到单个对等点。我想我会先尝试与列表中的第一个对等方连接,到目前为止一切都很好。

但是,对于每个对等点,都有某些状态,例如 'am_choking' 、 'peer_choking' 、 'am_interested' 、 'peer_interested'。对于列表中的每个对等点,我是否需要跟踪这些状态中的每一个?

【问题讨论】:

【参考方案1】:

是的,与每个对等方的连接需要维护一组独立的状态,以记住远程发送的最新状态是什么。

official bittorrent specification 中明确提到了这一点:

连接在两端包含两个状态位:阻塞与否,以及是否感兴趣。

还有on the wiki:

客户端必须维护它与远程对等方的每个连接的状态信息:

【讨论】:

以上是关于Bittorrent 在多个对等点之间维护状态的主要内容,如果未能解决你的问题,请参考以下文章

使用 SOCKS 时的 BitTorrent 本地对等点发现

BitTorrent:发送请求的最佳速率?

如何在 Bittorrent 跟踪器中完成对等点的识别

P2P 分发 - 用于监督对等点的抽象算法

C++ 中的 Bittorrent 客户端,在非阻塞套接字上连接到对等点总是超时

未从 bittorrent 对等握手接收到任何数据