BT协议综述

引言

传统的HTTP和FTP文件传输都采用了客户-服务器的体系结构,下载文件极大地依赖于基础设施服务器,当访问人数增加时,文件传输速度会显著下降。与之不同的是P2P体系结构,连接网络的节点都可以作为文件服务器,每个对等方能够重新分发它所有文件的任何部分,既作为文件的获取者也作为文件的提供者。BitTorrent(简称BT)是一种用于文件分发流行的P2P协议[1],由Bram Cohen于2002年独立完成其核心程式码的撰写,通过分片策略,将一个文件分布到各个节点中去,然后再通过节点之间的协同作用共同提供文件传输服务。

原理

P2P是对等连接的简写,是指两台主机在通信时并不区别哪一个是服务请求方,哪一个是服务提供方[2]。网络中的资源和服务分散在所有的节点上,信息的传输和服务的实现都直接在节点之间进行,可以无需中间环节和服务器介入,网络的参与者既是资源的提供者又是资源的获取者。

BT协议是以资源共享为目的应用层协议,通过该协议网络节点可以在互联网上采用P2P网络技术自组形成资源共享的网络。该网络包含网络节点加入网络的起始文件、数据传输协议、数据查询协议和BT协议客户端软件[3]。

1.工作过程

根据BT协议,传送文件的过程可以大致分为发布文件和下载文件两个过程:

1.发布文件

根据BitTorrent协议,文件发布者会根据要发布的文件生成提供一个.torrent文件,即种子文件(简称“种子”)。种子文件本质上是文本文件,包含Tracker信息和文件信息两部分。Tracker信息主要是BT下载中需要用到的Tracker服务器的地址和针对Tracker服务器的设置,文件信息是根据对目标文件的计算生成的每个块的索引信息和Hash验证码,所以种子文件就是被下载文件的“索引”。

2.下载文件

下载者要下载文件内容,需要先得到相应的种子文件,然后使用BT客户端软件进行下载。下载时,BT客户端首先解析种子文件得到Tracker地址,然后连接Tracker服务器。Tracker服务器回应下载者的请求,提供下载者其他下载者(包括发布者)的IP。下载者再连接其他下载者,根据种子文件,两者分别告知对方自己已经有的块,然后交换对方所没有的数据。下载者每得到一个块,需要算出下载块的Hash验证码与种子文件中的对比,如果一样则说明块正确,不一样则需要重新下载这个块。当下载者下载了完整的文件时,它可以选择退出洪流,或者继续留在洪流中为其他对等方上传文件块。同时,拥有完整文件的用户也会越来越多,使文件的“寿命”不断延长。

2.实现原理

BT协议的网络结构主要由tracker服务器和对等方节点组成[4]。参与一个特定文件分发的所有对等方的集合称为一个洪流(torrent)。每个洪流具有一个基础设施节点,成为追踪器(tracker)。当一个对等方加入某洪流时,它向追踪器注册自己,并周期性地汇报它仍在洪流中,跟踪器通过这种方式跟踪正参与洪流的对等方。

当一个新的对等方A加入洪流时,追踪器随机选取一定数量的对等方,并把这些对等方的IP地址发送给A,A试图与这些对等方分别创建TCP连接,所有与A创建连接的对等方称为“邻近对等方”。邻近对等方是动态变化的,有些对等方可能会离开,其他对等方可能试图与A创建TCP连接。

在一个洪流中的对等方彼此下载特定长度的文件块(chunk),典型的长度为256KB。每个对等方拥有所共享资源的子集,并且不同的对等方拥有不同的子集,A 周期性询问邻近对等方的块列表,并对当前未拥有的块发送请求。此过程使用了一种成为最稀缺优先(rarest first)的技术,通过首先请求最稀缺的文件块,使得最稀缺块能够迅速得到分发,每个块在洪流中的数量大致均衡。同时为了决定对等方对哪个请求作出响应,BitTorrent使用了一种机灵的交换算法。一个对等方通过网络积累的文件块,同时能够提供给其他对等方下载。任何对等方可以在任何时刻退出洪流,并在以后重新加入该洪流继续下载文件。当某个对等方下载了完整的文件时,它可以选择退出洪流,或者继续留在洪流中为其他对等方上传文件块[5]。

结论

一般的HTTP/FTP下载,发布文件仅在某个或某几个服务器,下载的人太多,服务器的带宽很易不胜负荷,变得很慢。而BitTorrent协议下载的特点是,下载的人越多,提供的带宽也越多,下载速度就越快。BT协议能够很好地整合和分发资源[6],为人们进行大文件下载提供了极大的方便,但是BT的使用也侵占了大量的宝贵带宽,影响了其他应用的使用,因此对BT的合理控制也很有必要[7],这也是技术走向成熟的必经之路。

 

引用文献

[1] Zhang, C. , Dhungel, P. , Wu, D. , & Ross, K. W. . (2011). Unraveling the bittorrent ecosystem. IEEE Transactions on Parallel and Distributed Systems, 22(7), 1164-1177.

[2] 谢希仁. (2017). 计算机网络. 电子工业出版社.

[3] 席鹏弼. (0). BitTorrent网络测量与模型化研究. (Doctoral dissertation, 电子科技大学).

[4] 巴子言. (2015). 基于BT协议和Swift特性的分布式文件存储系统的设计与实现. (Doctoral dissertation, 北京邮电大学).

[5] Kurose J,Rose K著. 陈鸣译.计算机网络-自顶向下方法(原书第6版).北京:机械工业出版社,2014

[6] Pouwelse, J. , Paweł Garbacki, Epema, D. , & Sips, H. . (2005). The Bittorrent P2P File-Sharing System: Measurements and Analysis. International Workshop on Peer-to-Peer Systems. Springer, Berlin, Heidelberg.

[7] 汪燕, & 柳斌. (2006). Bittorrent协议分析及控制策略. 实验技术与管理, 23(1).

你可能感兴趣的:(网络基础)