DHT中announce_peer的令牌

3
http://www.bittorrent.org/beps/bep_0005.html中,announce_peer查询需要一个令牌,该令牌要求“在先前的get_peers查询的响应中收到的”token“”。
这是否意味着如果节点A从未向节点B发送过get_peer查询,则节点A永远不会从节点B接收到peer_announce查询?
3个回答

3
这是否意味着,如果节点A从未向节点B发送get_peer查询,则节点A永远不会收到来自节点B的peer_announce查询?
不是的,情况正好相反:
- 节点A想要宣布正在下载某个特定的种子。 - 节点A向节点B发出一个get_peers查询。 - 节点B向刚刚发送的get_peers查询的节点A发送响应。节点B的响应包括token。 - 现在,节点A可以使用刚从节点B的响应中接收到的token向节点B发送announce_peer查询。 为什么要这样麻烦?
查询节点的返回值包括一个不透明的值,称为“令牌”,与节点控制对等方正在下载种子相关。为了宣布其控制对等方正在下载种子,节点必须呈现从最近一次查询对等方所接收的令牌。当节点尝试“宣布”一个种子时,被查询的节点会检查该令牌是否与查询节点的IP地址匹配。这是为了防止恶意主机为其他主机注册种子。 http://www.bittorrent.org/beps/bep_0005.html

因为DHT使用UDP,而“announce”不需要回复,所以没有令牌,接收者无法真正知道“announce”消息来自哪个IP地址,这是正确的吗? - redfish64
@redfish64 是的,那是我的理解,它基本上防范了使用欺骗IP的情况。 - 1110101001

0

令牌代表加入一个群集的能力。就像你首先询问关于群集的信息 - “嘿,这个群集怎么样?” - 你询问的同行会告诉你它所知道的关于那个群集的信息,并且还会给你一张票据,如果你想加入那个群集,你可以返回或不返回。 细粒度的能力安全性获胜!


-1
是的,没错。它确保宣布一个对等方的人实际上对应的种子文件感兴趣,并且已经证明了对所宣布地址的控制能力。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接