在http://www.bittorrent.org/beps/bep_0005.html中,announce_peer 查询需要一个令牌,该令牌需要“响应先前的 get_peers 查询而收到的“令牌””。
这是否意味着如果节点 A 从未向节点 B 发送 get_peer 查询,那么节点 A 将永远不会收到来自节点 B 的 peer_announce 查询?
在http://www.bittorrent.org/beps/bep_0005.html中,announce_peer 查询需要一个令牌,该令牌需要“响应先前的 get_peers 查询而收到的“令牌””。
这是否意味着如果节点 A 从未向节点 B 发送 get_peer 查询,那么节点 A 将永远不会收到来自节点 B 的 peer_announce 查询?
这是否意味着如果节点 A 从未向节点 B 发送 get_peer 查询,那么节点 A 将永远不会收到来自节点 B 的 peer_announce 查询?
不,是相反的:
get_peers
向节点 B 进行查询。get_peers
节点 B 针对它刚刚发送的查询向节点 A 发送响应。节点 B 的响应包括token
.announce_peer
查询向节点 B发送查询。token
为什么要大惊小怪?
对等点查询的返回值包括一个称为“令牌”的不透明值。为了让节点宣布其控制对等方正在下载种子,它必须在最近对对等方的查询中显示从同一查询节点接收到的令牌。当一个节点试图“宣布”一个 torrent 时,被查询的节点会根据查询节点的 IP 地址检查令牌。这是为了防止恶意主机注册其他主机以获取种子。
令牌代表了宣布一个人正在加入一个群体的能力。就像你第一次问关于蜂群的问题——“嘿,这个蜂群怎么样了?” - 你问的对等点会告诉你它对那个群体的了解,如果你也想加入那个群体,它还会给你一张可以返回或不返回的票。细粒度的能力安全为赢!
是的,这是正确的。它确保宣布对等点的人实际上对相应的种子感兴趣,并且已经证明了对宣布的地址的控制。