BT协议解析•BT种子到底是什么
要想搞懂BT是什么,自然离不开去中心化网络。
去中心化,去的这个“中心”指的是中心服务器。假如🐢写了一部小说,并想把它分享给大家,最好的方法便是上传到服务器,得到一个例如https://www.turtlehome.top/test的链接,这种方法被称作直链。
但这种传统的下载方式,就像你去超市买东西,只有一个收银台,所有人都要排队等着付款。如果人太多,队伍就会很长,速度就会很慢。(同时能接待的顾客,就是带宽)
更可怕的是,假如有一天🐢的服务器被水淹了,或者到期了,那就没有办法继续下载了。
而BT协议就没有这种问题。简单来说,它就像一场“接力赛”。这种接力赛被称为P2P(Peer-to-Peer,点对点)。
具体来说,当你想下载一个文件时,BT协议会把这个文件分成很多个小块,就像把一个大蛋糕切成很多小块一样。然后,它会找到很多其他也在下载这个文件的人,这些人被称为“节点”。你从这些节点那里同时下载这些小块,而不是从一个地方慢慢下载整个文件。同时,当你下载了一部分小块之后,你也会变成一个节点,把这部分小块分享给其他需要的人。这样,大家互相帮助,文件的传输速度就会变得非常快。
欸,等一下,互联网上的用户这么多,我怎么知道谁拥有我想下载的文件块呢?
这就要让我们看一看一个种子文件的组成。
一个BT种子,通常是以.torrent结尾的一个文件。用编辑器打开,可以看到这些内容:
d
8:announce
32:http://tracker.example.com/announce
4:info
d
4:name
14:example_file.iso
12:piece length
i524288e
6:pieces
20:<哈希值1><哈希值2>...<哈希值N>
6:length
i104857600e
e
e
开始的两行是文件头,表示文件的开始。让我们跳过他们。
http://tracker.example.com/announce
停停停,不是说BT没有中心服务器吗,这又是什么?
这是.torrent文件中最关键的部分之一,用于指定Tracker服务器的地址。
在BitTorrent(BT)文件共享的过程中,Tracker服务器的主要工作是帮助各个节点找到彼此,从而顺利地进行文件的传输。
在下载开始时,你的BT客户端会主动联系文件内记录的Tracker服务器,同时,服务会记录你的信息,比如你的IP地址,以及你正在下载哪个文件。它还会告诉你,目前还有哪些其他人在下载或上传这个文件,他们的IP地址是什么。如果有人离开了网络(比如关掉了BT客户端),Tracker也会更新信息,避免其他节点浪费时间去联系一个已经离线的人。
再往下的部分是文件的核心部分,info字段。它包含了文件的元数据信息。这些信息用于唯一标识文件,并确保文件的完整性和一致性。
逐行解读分别是文件名,分块大小,分块哈希和文件大小。
到这,BT的原理就很清晰了,显然,Tracker服务器是必须的,这还是不够安全。下一篇就让我们讲一讲另一种无需Tracker服务器的分享方式——磁链并亲手尝试下载。