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

Posted

技术标签:

【中文标题】如何在 Bittorrent 跟踪器中完成对等点的识别【英文标题】:How identification of a peer is done in Bittorrent tracker 【发布时间】:2021-04-22 13:32:29 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

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

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

对于开放的公共跟踪器,这两种方法都不实用,因此它们通常会忽略&ip=... 参数。部署在更受限制的环境中的跟踪器确实使用了信任和/或验证方法。

【讨论】:

以上是关于如何在 Bittorrent 跟踪器中完成对等点的识别的主要内容,如果未能解决你的问题,请参考以下文章

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

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

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

洪流调试工具

为啥我从对等端接收的数据与预期输出不匹配?

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