Bit Torrent (BT种子)是什么?

BitTorrent(简称BT)是一个文件分发协议,每个下载者在下载的同时不断向其他下载者上传已下载的数据。而在FTP,HTTP协议中,每个下载者在下载自己所需文件的同时,各个下载者之间没有交互。当非常多的用户同时访问和下载服务器上的文件时,由于FTP服务器处理能力和带宽的限制,下载速度会急剧下降,有的用户可能访问不了服务器。BT协议与FTP协议不同,特点是下载的人越多,下载速度越快,原因在于每个下载者将已下载的数据提供给其他下载者下载,充分利用了用户的上载带宽。通过一定的策略保证上传速度越快,下载速度也越快。在很短时间内,BitTorrent协议成为一种新的变革技术。

以上说明来自百度百科

RexTrb.png

用通俗的话讲,BT种子(以下简称 种子 )技术其实就是将一个比较大的文件(比如电影或镜像)按照一定的规范分成多个块,当用户通过.torrent文件下载时,会连接上种子文件中记录的tracker服务器,而tracker服务器并不提供文件本身,而是通过查询返回当前同在下载该文件的其他客户端的地址,而主机接收到该地址后,会逐个逐个尝试连接,连接成功的便通过点对点(P2P)的方式获取对方计算机上的另一部分文件,然后再连接其他的客户端,获取文件的其他部分

Bit Torrent 与其他下载方式相比,有什么优势?

不同于传统的 C/S ( Client / Server )模式,P2P的下载方式避免了单个服务器提供多个客户端的服务时带宽负载大的问题;在P2P下载时,每一台计算机,既是客户端,又是服务端,在下载的过程中,也向其他有需要的客户端上传自己的文件,有效节省了带宽;

另外,由于P2P去中心化的特点,每个处于BT网络中的文件,其存在与否不再取决于文件的提供者或服务商,在一定程度上避免了文件因个人过失而永久消失的情况

Bit Torrent 与其他下载方式相比,有什么劣势?

有优势就肯定有劣势,如上文所说,BT下载是通过同在下载该文件的其他客户端提供的服务来获取文件的,那么,当同时在下载该文件的客户端很少,甚至我们可以假设一种极端情况:整个网络就只有你一台计算机在下载该文件,那么你将不会得到你想要的文件,因为没有其他节点给你提供你想要的文件

另一方面,同样由于BT技术中文件无法轻易清除的特点,文件一旦上传,想永久抹去的可能性不大,那么万一有不法分子上传了本不该出现在网络上的文件(比如有关国家机密或者个人隐私,有或者未上映的电影之类的),其后果不堪设想

torrent文件都记录了什么?

A)这个文件(文件夹)中数据的SHA1值,比如一个1G的文件,如果按1M每块进行分块,则会被分为了1000块,torrent中就会有这1000个数据块的指纹值(SHA1的hash值),这个占据了torrent文件的绝大部分空间。这些值的目的是为了下载的过程中进行数据校验,确保数据收到的和当时源头制作torrent时的源文件100%一致,防止恶意数据攻击。

B)一般制作torrent文件时,还会要指定一个或者多个Tracker的地址,比如http://www.a.com:8080/announce这种地址。torrent里面一般也会存储了这个信息,这个其实也尤为重要。相当于记录了一个问询服务器的地址,这个问询服务器的作用,后面我再解释。

C)文件或者文件夹内每个文件的名字,方便下载文件时,磁盘上直接命名好跟原始数据一样的目录结构、文件名。

D)其它一些辅助和可扩展的信息,比如可以配置一个P2SP的http地址辅助下载,比如制作软件的名字、备注……。 E)上面信息生成后,torrent会把A)里面的这些信息,以及torrent里面的文件名等关键信息,再进行一次Hash,生成一个新的SHA1值,作为torrent的HASH值,也就是我们经常看到的下载软件里面对这个种子命名的一个唯一的hash值,也有的在magnet这种磁力链接中可以看到这个值,这就是torrent的唯一标记。

以上就是.torrent文件的内容,可以用记事本打开,但可能看到乱码。这个文件的编码遵循了bencode编码规则。但实际内容就主要是上面这些。所以,torrent可以理解为对原始数据的一些记录。

如果下载时没有其他节点在线。又没有http服务器,是不是就不能进行下载了呢?

不一定,BT发明者提出了DHT(Distributed Hash Table)的概念,就算Tracker连不上了,也可以通过分布式哈希表DHT技术,通过DHT网络慢慢的寻找志同道合的邻居节点,只是没有Tracker那么直接那么快速,但慢一些总还是有机会找到邻居的

有关下载过程中的一些事

文件下载时,若存在提供下载服务的http服务器,那么就算没有其他的客户端在线,下载仍然可以进行

下载过程中出现卡在99.99%的原因是因为当所有分块都下载完毕时,电脑会对下载的文件进行文件校验(类似于哈希检验),而当文件校验不通过时,电脑就会对组成文件的所有分块逐个逐个进行检验,发现校验值不对的文件分块再重新下载,这就是为什么有时候下载卡住的原因

当文件下载完毕时,如果你没有关闭下载文件的客户端,那么如果有其他人需要你的文件,即使你没有在下载文件,你所拥有的文件分块依然可以上传给其他客户端,成为一名崇高的传递者

文件下载时,影响下载速度的,除了你的电脑当前的网速,其实还有你的电脑当前的上传速度;在BT网络的带宽分配中,上传速度快的客户端能够获得的下载速度会相对比较快

某些运营商会对BT下载时的通信进行拦截,它们会对通信过程中传输的内容进行分析,由于早期的下载传输的是明文,故很容易就能够被运营商截取;当然,道高一尺,魔高一丈,如今的下载过程传输的内容大部分都进行过加密

quote
BitTorrent_百度百科 (baidu.com)

https://www.zhihu.com/question/49829233/answer/160765176

评论