P2P 点对点 下载技术基本原理(2)
2023-03-16 来源:你乐谷
No.3 Tracker
是指运行于服务器上的一个程序,这个程序能够追踪到底有多少人同时在下载同一个文件。 客户端连上tracker服务器,就会获得一个下载人员的名单,根据这个,BT会自动连上别人的机器进行下载。它是提供bt的服务器。把文件用bt发布出来的人需要知道该使用哪个服务器来为要发布的文件提供tracker。由于不指定服务器,BitTorrent采用BT文件来确定下载源。
tracker服务器是BT下载中必须的角色。一个BT客户端在下载开始以及下载进行的过程中,要不停的与tracker服务器进行通信,以报告自己的信息,并获取其它下载client的信息。这种通信是通过HTTP协议进行的,又被称为tracker HTTP协议,它的过程是这样的:
client向tracker发一个HTTP的GET请求,并把它自己的信息放在GET的参数中;这个请求的大致意思是:我是xxx(一个唯一的id),我想下载yyy文件,我的ip是aaa,我用的端口是bbb。。。
tracker对所有下载者的信息进行维护,当它收到一个请求后,首先把对方的信息记录下来(如果已经记录在案,那么就检查是否需要更新),然后将一部分(并非全部,根据设置的参数已经下载者的请求)参与下载同一个文件(一个tracker服务器可能同时维护多个文件的下载)的下载者的信息返回给对方。
Client在收到tracker的响应后,就能获取其它下载者的信息,那么它就可以根据这些信息,与其它下载者建立连接,从它们那里下载文件片断。
No.4 Torrent文件
Torrent文件本质上是文本文件,包含Tracker信息和文件信息两部分。Tracker信息主要是BT下载中需要用到的Tracker服务器的地址和针对Tracker服务器的设置,文件信息是根据对目标文件的计算生成的,计算结果根据BitTorrent协议内的B编码规则进行编码。它的主要原理是需要把提供下载的文件虚拟分成大小相等的块,块大小必须为2k的整数次方(由于是虚拟分块,硬盘上并不产生各个块文件),并把每个块的索引信息和Hash验证码写入.torrent文件中;所以,.torrent文件就是被下载文件的“索引”。
Torrent文件通常很小,大约几十K、几百K大小。
根据BitTorrent协议,文件发布者会根据要发布的文件生成提供一个.torrent文件,即种子文件,也简称为“种子”。
No.5 磁力链接
简单的说:类似下面这样以“magnet:?”开头的字符串,就是一条“磁力链接;确切的说:“磁力链接”的主要作用是识别【能够通过“点对点(即:P2P)”下载的文件】。这种链接是通过不同文件内容的Hash结果生成一个纯文本的“数字指纹”,来识别文件的。而不是基于文件的位置或者名称。
范例:【magnet:?xt=urn:sha1:YNCKHTQCWBTRNJIV4WNAE52SJUQCZO5C】
众所周知,BT下载速度不够稳定,当断种时则无法完整下载。但是,这还不是最严重的。从2010年开始,BT下载遭遇到了“更大的困难”——很多的BT服务器被关,不仅很多种子文件无法找到,BT Tracker服务器也断开解析工作,这就使得BT下载成为很大的难题。磁力链接很好地解决了这个问题。磁力链接的问世与大行其道,标志着BT 1.0时代已经过去,BT 2.0 时代已经到来。
磁力链接是一种特殊链接,但是它与传统基于文件的位置或名称的普通链接(如
是指运行于服务器上的一个程序,这个程序能够追踪到底有多少人同时在下载同一个文件。 客户端连上tracker服务器,就会获得一个下载人员的名单,根据这个,BT会自动连上别人的机器进行下载。它是提供bt的服务器。把文件用bt发布出来的人需要知道该使用哪个服务器来为要发布的文件提供tracker。由于不指定服务器,BitTorrent采用BT文件来确定下载源。
tracker服务器是BT下载中必须的角色。一个BT客户端在下载开始以及下载进行的过程中,要不停的与tracker服务器进行通信,以报告自己的信息,并获取其它下载client的信息。这种通信是通过HTTP协议进行的,又被称为tracker HTTP协议,它的过程是这样的:
client向tracker发一个HTTP的GET请求,并把它自己的信息放在GET的参数中;这个请求的大致意思是:我是xxx(一个唯一的id),我想下载yyy文件,我的ip是aaa,我用的端口是bbb。。。
tracker对所有下载者的信息进行维护,当它收到一个请求后,首先把对方的信息记录下来(如果已经记录在案,那么就检查是否需要更新),然后将一部分(并非全部,根据设置的参数已经下载者的请求)参与下载同一个文件(一个tracker服务器可能同时维护多个文件的下载)的下载者的信息返回给对方。
Client在收到tracker的响应后,就能获取其它下载者的信息,那么它就可以根据这些信息,与其它下载者建立连接,从它们那里下载文件片断。
No.4 Torrent文件
Torrent文件本质上是文本文件,包含Tracker信息和文件信息两部分。Tracker信息主要是BT下载中需要用到的Tracker服务器的地址和针对Tracker服务器的设置,文件信息是根据对目标文件的计算生成的,计算结果根据BitTorrent协议内的B编码规则进行编码。它的主要原理是需要把提供下载的文件虚拟分成大小相等的块,块大小必须为2k的整数次方(由于是虚拟分块,硬盘上并不产生各个块文件),并把每个块的索引信息和Hash验证码写入.torrent文件中;所以,.torrent文件就是被下载文件的“索引”。
Torrent文件通常很小,大约几十K、几百K大小。
根据BitTorrent协议,文件发布者会根据要发布的文件生成提供一个.torrent文件,即种子文件,也简称为“种子”。
No.5 磁力链接
简单的说:类似下面这样以“magnet:?”开头的字符串,就是一条“磁力链接;确切的说:“磁力链接”的主要作用是识别【能够通过“点对点(即:P2P)”下载的文件】。这种链接是通过不同文件内容的Hash结果生成一个纯文本的“数字指纹”,来识别文件的。而不是基于文件的位置或者名称。
范例:【magnet:?xt=urn:sha1:YNCKHTQCWBTRNJIV4WNAE52SJUQCZO5C】
众所周知,BT下载速度不够稳定,当断种时则无法完整下载。但是,这还不是最严重的。从2010年开始,BT下载遭遇到了“更大的困难”——很多的BT服务器被关,不仅很多种子文件无法找到,BT Tracker服务器也断开解析工作,这就使得BT下载成为很大的难题。磁力链接很好地解决了这个问题。磁力链接的问世与大行其道,标志着BT 1.0时代已经过去,BT 2.0 时代已经到来。
磁力链接是一种特殊链接,但是它与传统基于文件的位置或名称的普通链接(如