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

How identification of a peer is done in Bittorrent tracker

根据 Bittorrent tracker (https://wiki.theory.org/BitTorrentSpecification) 的规范,peer 由它们的 peer_id 和 ip 标识。 peer_id 在 announce 请求中传递给跟踪器,ip - 来自请求 headers,但可以选择作为查询参数传递。 tracker 如何知道这个请求实际上是从这个 peer 发送的(不是欺诈),没有任何密钥?

请注意,official specification 将该参数列为可选参数,这意味着它不是客户端身份的一部分。相反,它应该被视为对跟踪器的提示,即跟踪器应该将该 IP 分发给其他客户端而不是宣布连接的来源。如果跟踪器不信任客户端,则应忽略此提示。

如果客户端向跟踪器验证自己的身份(例如,通过 HTTP 基本身份验证或公告中的秘密令牌 URL),则可以建立信任。

除了信任客户端之外,跟踪器还可以验证它,例如通过打开一个 bittorrent 连接到已宣布的 IP 和端口,然后为已宣布的 infohash 发送一个 bittorrent 握手,以检查远程是否可以接受 bittorrent 连接。这也有拒绝由于防火墙或 NAT 限制而无法访问的通告的优势。

对于open,public trackers这两种方法都不实用,所以他们通常会忽略&ip=...参数。部署在更受限制的环境中的跟踪器确实使用了信任 and/or 验证方法。