Bittorrent 在多个对等点之间维护状态
Bittorrent maintain states among multiple peers
我正在关注 Kristen Widman tutorial for writing a bittorrent client, as well as following the Wiki,但是我有一点困惑,我无法从在线资源中清除。
到目前为止,我已经能够发送一个跟踪器请求并接收一个对等点列表,我已经像这样存储了它们的 IP 地址和端口:
[{'IP': IPv4Address('76.126.244.88'), 'port': 6881}, ... ]
Kristen 在她的教程中建议我首先尝试连接到单个对等点。我想我会首先尝试与列表中的第一个同行联系,到目前为止一切顺利。
然而,关于每个对等点,存在某些状态,例如 'am_choking'、'peer_choking'、'am_interested'、'peer_interested'。对于列表中的每个点,我是否需要跟踪每个状态?
是的,与每个对等点的连接需要维护一组独立的状态,以记住远程发送的最新状态是什么。
official bittorrent specification中明确提到了这一点:
Connections contain two bits of state on either end: choked or not, and interested or not.
和on the wiki也是:
A client must maintain state information for each connection that it has with a remote peer:
我正在关注 Kristen Widman tutorial for writing a bittorrent client, as well as following the Wiki,但是我有一点困惑,我无法从在线资源中清除。
到目前为止,我已经能够发送一个跟踪器请求并接收一个对等点列表,我已经像这样存储了它们的 IP 地址和端口:
[{'IP': IPv4Address('76.126.244.88'), 'port': 6881}, ... ]
Kristen 在她的教程中建议我首先尝试连接到单个对等点。我想我会首先尝试与列表中的第一个同行联系,到目前为止一切顺利。
然而,关于每个对等点,存在某些状态,例如 'am_choking'、'peer_choking'、'am_interested'、'peer_interested'。对于列表中的每个点,我是否需要跟踪每个状态?
是的,与每个对等点的连接需要维护一组独立的状态,以记住远程发送的最新状态是什么。
official bittorrent specification中明确提到了这一点:
Connections contain two bits of state on either end: choked or not, and interested or not.
和on the wiki也是:
A client must maintain state information for each connection that it has with a remote peer: