BitTorrent磁铁链接是如何工作的?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (10)

维基说xt意思是“确切的主题”,然后是格式(btih具有SHA 1散列。我看到提到的base 32,知道它是每字符5位和32个字符,我发现它正好有160位,这正好是SHA 1的大小。

没有IP地址的空间,它只是SHA 1。那么BitTorrent客户端如何找到实际文件呢?我打开URLSnoper,看看它是否访问了一个页面(使用TCP)或进行查找之类的,但是什么都没有发生。我不知道客户是怎么找到同伴的。这是怎么回事?

还有,哈希是什么?它是所有文件散列的散列吗?可能是实际需要的洪流文件的散列?

在VM中,我尝试了一个带有uTorrent的磁铁链接(它是新安装的),它设法找到了对等点。第一个同伴是从哪里来的?它是新鲜的,没有其它的洪流。

提问于
用户回答回答于

对等发现

大多数P2P网络都是“种子”网络:当第一次启动时,一个对等点将连接到一个众所周知的(硬编码的)地址,以检索正在运行的对等点的列表。它可以直接播种,就像连接到dht.transmissionbt.com正如在另一篇文章或间接播种中提到的那样,通常使用JXTA,其中对等点连接到一个地址,该地址只提供其他节点网络地址的纯文本列表。

一旦与第一个(少数)对等点建立了连接,连接节点就会执行其他对等点的发现(通过发送请求)并维护它们的表。由于其他节点的数量可能很大,因此连接节点只维护节点的分布式哈希表(DHT)的一部分。根据网络的不同,决定连接对等点应该维护的表的哪一部分的算法不同。BitTorrent使用具有160位标识符/密钥的Kademlia。

资源发现

一旦连接节点发现了几个对等点,后者就会向它们发出几个请求,请求发现资源。磁铁链接标识这些资源,并以这样一种方式构建,即它们是资源的“签名”,并保证它们在所有对等方中唯一地标识请求的内容。然后,连接节点将向其周围的节点发送关于磁铁链路/资源的发现请求。DHT是以这样的方式构建的,它有助于确定应该首先向哪些对等方请求资源(请参阅维基百科中的Kademlia以获得更多信息)。如果被请求的对等点不保存所请求的资源,它通常会将查询“传递”给从自己的DHT获取的其他对等点。

查询可以传递的“跃点”数量通常是有限的;4是JXTA类型网络中常见的数目。

当对等方持有资源时,它会回复其详细信息。然后,连接对等体可以连接到持有资源的对等点,并开始获取它。

P2P网络中的资源/服务包括不直接连接到网络地址:它们是分布式的,这就是这些高度可伸缩网络的优点。

用户回答回答于

BitTorrent磁铁链接标识使用SHA-1或截断的SHA-256哈希值的洪流,称为“info散列”。这是与跟踪者或其他同行通信时,对等方(客户)用来识别洪流的相同值。传统的.torrent文件包含有两个顶级键的数据结构:announce,确定下载时使用的跟踪器,以及info,包含洪流的文件名和散列。“info散列”是编码的散列。info数据。

一些磁铁链接包括跟踪器或网络种子,但它们通常不。你的客户可能对洪流一无所知,除了它的信息散列。首先,它需要找到其他的同龄人谁正在下载洪流。它使用一个单独的对等网络2来实现这一点,它操作一个“分布式哈希表”(Dht)。DHT是一个大的分布式索引,它将洪流(由信息哈希标识)映射到参与该洪流(上传/下载数据或元数据)群的对等点列表(通过IP地址和端口标识)。

当客户第一次加入DHT网络时,它会从信息散列的相同空间随机生成一个160位ID。然后,它使用客户端开发人员控制的客户端硬编码地址或支持dht的客户端(以前在洪流群中遇到)引导其与dht网络的连接。当它想要参加一个给定的洪流群时,它会搜索DHT网络中的其他几个客户端,这些客户端的ID尽可能接近信息散列。它通知这些客户机它想要参与这个群,并询问他们已经知道的任何参与该群的节点的连接信息。

当对等点上传/下载一个特定的洪流时,他们试图告诉对方他们知道的所有参与同一洪流群的其他对等体。这使得对等方能够快速地了解彼此,而不需要跟踪器或DHT受到不断的请求。一旦从DHT中了解到几个对等点,客户端将能够向这些对等点询问洪流群中更多对等点的连接信息,直到拥有所需要的所有对等点为止。

最后,我们可以向这些同龄人询问急流info元数据,包含文件名和哈希列表。一旦我们下载了这些信息,并使用已知的infohash,我们作为一个客户的地位实际上是一样的,从一个普通的客户开始.torrent文件,并从包含的跟踪器中获得一个对等点列表。

1信息散列通常是十六进制编码的,但一些老客户端使用的是base 32(urn:btih:)直接使用sha-1摘要,而v2(urn:bimh:)。

2有两个主要的DHT网络:简单的“主线”DHT和Azureus使用的更复杂的协议。

3用异或法测量距离。

扫码关注云+社区