P2P文件传输协议之BitTorrent协议

网络 网络管理
BitTorrent协议是网络数据传输中重要的协议之一,也是非常具有典型特点的。所以我们就来着重讲解一下这个协议。首先还是从它的基本概念开始吧。

BitTorrent协议是支持网络当中数据的上下传输的一个P2P文件传输协议。那么基于这个协议的BT软件大家肯定更不会陌生。但是它却有着更为广泛的使用,尤其是在一些大型网络数据交换平台中,也常常会使用这个协议。那么今天我们就来对这个协议进行一下基础讲解。

Bittorrent简介

Bittorrent已经成为最为流行的P2P软件,在2004年6月的Cachelogic的一份测试是报告中提到Bittorrent的数据流量已经占到整个P2P数据流量的52%。与其他传统P2P软件如Gnutella,Fasttrack不同,Bittorrent只是一个纯粹的文件下载协议,并提供搜索功能,所以往往资源的获取要跟其他一些应用结合起来,比如说发布Bittorrent种子信息的网站如5Q、或者是网络搜索引擎如百度、google等。

Bittorrent工作原理

Bittorrent的工作原理其实很简单,他就是将一份数据分隔成256K大小的数据分组,并在Bittorrent 网络中一群用户相互协作完成这些数据的分发,用户参与数据分发的信息已文件的形式存储,一般可以通过web网站获取这些信息。但是实际数据传输依靠的不是Http协议,而是由专门的P2P协议来完成,这些对于用户都是透明的。

普通的HTTP/FTP下载使用TCP/IP协议,BitTorrent协议是架构于TCP/IP协议之上的一个P2P文件传输协议,处于TCP/IP结构的应用层。 BitTorrent协议本身也包含了很多具体的内容协议和扩展协议,并在不断扩充中。

根据BitTorrent协议,文件发布者会根据要发布的文件生成提供一个.torrent文件,即种子文件,也简称为“种子"。 .torrent文件本质上是文本文件,包含Tracker信息和文件信息两部分。Tracker信息主要是BT下载中需要用到的Tracker服务器的地址和针对Tracker服务器的设置,文件信息是根据对目标文件的计算生成的计算结果根据BitTorrent协议内的B编码规则进行编码。它的主要原理是需要把提供下载的文件虚拟分成大小相等的块,块大小必须为2k的整数次方(由于是虚拟分块,硬盘上并不产生各个块文件),并把每个块的索引信息和Hash验证码写入.torrent文件中;所以,.torrent文件就是被下载文件的“索引"。

下载者要下载文件内容,需要先得到相应的.torrent文件,然后使用BT客户端软件进行下载。

下载时,BT客户端首先解析.torrent文件得到Tracker地址,然后连接Tracker服务器。Tracker服务器回应下载者的请求,提供下载者其他下载者(包括发布者)的IP。下载者再连接其他下载者,根据.torrent文件,两者分别对方告知自己已经有的块,然后交换对方没有的数据。此时不需要其他服务器参与,分散了单个线路上的数据流量,因此减轻了服务器负担。

下载者每得到一个块,需要算出下载块的Hash验证码与.torrent文件中的对比,如果一样则说明块正确,不一样则需要重新下载这个块。这种规定是为了解决下载内容准确性的问题。

一般的HTTP/FTP下载,发布文件仅在某个或某几个服务器,下载的人太多,服务器的带宽很易不胜负荷,变得很慢。而BitTorrent协议下载的特点是,下载的人越多,提供的带宽也越多,种子也会越来越多,下载速度就越快。而有些人下载完成后关掉下载任务,提供较少量数据给其他用户,为尽量避免这种行为,在非官方BitTorrent协议中存在超级种子的算法。这种算法允许文件发布者分几步发布文件,发布者不需要一次提供文件所有内容,而是慢慢开放的下载内容的比例,延长下载时间。此时,速度快的人由于未下载完必须提供给他人数据,速度慢的人有更多机会得到数据。

责任编辑:佟健 来源: 互联网
相关推荐

2022-07-19 16:59:04

流媒体传输IPC物联网

2010-07-13 14:41:14

2010-07-07 10:31:45

2023-02-16 07:12:43

P2P协议服务器

2023-02-15 07:10:59

P2P协议系统

2010-07-01 15:55:54

FTP文件传输协议

2010-06-28 14:25:16

2011-08-24 10:18:56

2020-03-05 20:30:15

Syncthing文件同步工具开源

2012-12-10 09:46:21

P2P云存储Symform

2015-04-27 11:49:23

2010-10-29 09:43:50

Wi-Fi DirecWi-Fi联

2010-06-09 15:40:01

FTP文件传输协议

2015-05-28 11:14:53

2010-03-22 15:27:40

云计算

2024-08-06 14:03:35

2010-06-24 17:03:45

BitTorrent协

2010-07-13 16:17:03

BitTorrent协

2013-11-25 10:07:31

P2P对等网络

2015-09-16 11:33:29

PMCP2P数据传输
点赞
收藏

51CTO技术栈公众号