没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
BitTorrent (BT) 相关研究
BitTorrent (BT) 相关研究
1 BitTorrent 系统简介
BitTorrent(简称 BT)是一个内容分发协议,每个下载者在下载的同时不断向
其他下载者上传自己已下载的数据。而在 FTP、HTTP 协议中,每个下载者从 FTP
或 HTTP 服务器上下载自己所需要的文件,各个下载者之间没有交互。当非常多的
用户同时访问和下载服务器上的文件时,由于 FTP 服务器的处理能力和带宽的限制,
下载速度会急剧下降,甚至有的用户根本访问不了服务器。BT 协议与 FTP 协议不同,
它的特点是下载的人越多下载的速度越快,其原因在于每个下载者将已下载的数据
提供给其他下载者下载,它充分利用了用户的上载带宽。
可以这样理解:首先在客户端把一个完整的文件分成了 Z 个部分,用户 A 在服
务器随机下载了第 N 个部分,用户 B 在服务器随机下载了第 M 个部分,这样用户 A
的 BT 就会根据情况到用户 B 的电脑上去拿已经下载好的第 M 部分,用户 B 的 BT
也会根据情况到甲的电脑上去拿已经下载好的第 N 部分,这样不但减轻了服务器端
的负荷,也加快了用户方(A、B)的下载速度,效率也提高了。而且用户在下载的同
时,也在上传。BT 这种下载方式实际上是下载者之间“互助协助",一个下载者不再
是简单的“下载”者,他既要下载,又要充当服务器把自己已经下载的文件或者某些
已经下载的部分提供给其他用户使用。BT 下载把过去那种“peer-to-peer”的下载方式
进化成为“peers-to-peers”,大大提高了下载速度。具体地讲,过去的“点对点”,是指
一个具有完整文件的点对应多个下载该文件的点,而 BT 的“点对点"则是真正意义上
的“多点对多点"。
在 BitTorrent 系统中,为了保证系统的公正性,节点使用一定策略选择合作节点
并向它们提供上传服务,保证上传的速度越快,下载的速度也越快。作为一个非常
流行的协作内容分发工具,BitTorrent 已经得到了广泛的关注,以 BitTorrent 为代表
的 P2P 内容分发系统已经发展成为一种主要的互联网应用,所以深入研究 BitTorrent
内容分发系统的基本思想和核心技术很具有必要性。
1.1 BitTorrent 系统中的术语
BitTorrent 内容分发系统中出现了如下一些专业术语:
Downloader(下载者)
当节点没有拥有完整文件时,便称之为下载者,它需要从最初的种子节点、种
子节点、其他下载者处获得文件片段,并同时为其他下载者提供文件片段的上传服
务。
Initial Seed/ Seed(最初的种子节点/种子节点)
当节点拥有完整的文件时,便称之为种子节点。最初的种子节点和种子节点的
区别在于:前者是为其他所有节点提供文件片段的最初来源,后者是从下载者转变
过来的。
BitTorrent (BT) 相关研究
Tracker(追踪器)
追踪器是一个中央目录服务器。其主要作用是跟踪系统中所有的最初的种子节
点、种子节点、下载者,并收集和统计这些节点的状态,以便节点间互相发现去交
换文件片段。
Piece/ Block(文件片段/文件块)
文件被所有节点下载之前,首先被划分成若干个固定大小的文件片段,文件以
文件片段为请求单位在节点间进行交互;文件片段再次被划分为固定大小的文件块,
文件以文件块为传输单位在节点间进行传输。
Choked/UnChoked(阻塞/疏通)
当节点 A 不向节点 B 提供上传文件片段服务,则称 A 阻塞 B;当节点 A 可以向
节点 B 提供上传文件片段服务,则称 A 疏通 B。
Neighbor Set(合作节点集)
每个节点会保留和维护系统中由其它一些节点构成的列表,节点会和其列表中
的节点进行数据交换。列表中的所有节点被称为此节点的合作节点,而这些节点的
集合被称为合作节点集。
.torrent file(元信息文件)
元信息文件包含文件的 Tracker 服务器地址、文件大小、文件片段大小、各个文
件片段的 hash 校验值等等,作用是描述文件信息以及保证文件内容的正确性。
1.2 BitTorrent 系统的构成
与其他 P2P 内容分发系统相比,BitTorrent 在用户的使用方面具有自己的特点。
基于 BT 协议的文件分发系统由以下几个实体构成。
(1)一个 Web 服务器。
(2)一个种子文件。
(3)一个 Tracker 服务器。
(4)一个原始文件提供者。
(5)一个网络浏览器。
(6)一个或多个下载者。
Web 服务器上保存着种子文件,下载者使用网络浏览器(如 IE、Firefox)从
Web 服务器上下载种子文件。种子文件,又称为元文件或 metafile,它保存了分发共
享的文件的一些信息,如共享文件的文件名、文件大小、Tracker 服务器的地址。种
子文件通常很小,一般大小为 1GB 的共享文件,其种子文件不足 100KB,种子文件
以.torrent 为后缀。Tracker 服务器保存着当前下载某共享文件的所有下载者的 IP 和
端口。原始文件提供者提供完整的共享文件供其他下载者下载,它也被称为种子,
种子文件就是提供者使用 BT 客户端生成的。每个下载者通过运行 BT 客户端软件下
载共享文件。这个下载者本身就称为客户端,其他下载者称为 peer。
BT 客户端下载一个共享文件的过程是:客户端首先解析种子文件,获取待下载
的共享文件的一些信息,其中包括 Tracker 服务器的地址。然后客户端连接 Tracker
获取当前下载该文件的所有下载者的 IP 和端口。之后客户端根据 IP 和端口连接其他
下载者,从它们那里下载文件,同时把自己已下载的部分提供给其他下载者下载。
共享文件在逻辑上被划分为大小相同的块,称为 piece,每个 piece 的大小通常
BitTorrent (BT) 相关研究
为 256KB。对于共享文件,文件的第 1 字节到第 256K(即 262144)字节为第一个
piece,第 256K+1 字节到第 512K 字节为第二个 piece,依此类推。种子文件中包含
有每个 piece 的 hash 值。BT 协议规定使用 Sha1 算法对每个 piece 生成 20 字节的 hash
值,作为每个 piece 的指纹。每当客户端下载完一个 piece 时,即对该 piece 使用
Sha1 算法计算其 hash 值,并与种子文件中保存的该 piece 的 hash 值进行比较,如果
一致即表明下载了一个完整而正确的 piece。一旦某个 piece 被下载,该 piece 即提供
给其他 peer 下载。在实际上传和下载中,每个 piece 又被划分为大小相同的 slice,
每个 slice 的大小固定为 16KB(16384 字节)。peer 之间每次传输以 slice 为单位。
从以上描述可以得知,待开发的 BT 软件(即 BT 客户端)主要包含以下几个功
能:解析种子文件获取待下载的文件的一些信息,连接 Tracker 获取 peer 的 IP 和端
口,连接 peer 进行数据上传和下载、对要发布的提供共享文件制作和生成种子文件。
种子文件和 Tracker 的返回信息都以一种简单而高效的编码方式进行编码,称为 B 编
码。客户端与 Tracker 交换信息基于 HTTP 协议,Tracker 本身作为一个 Web 服务器
存在。客户端与其他 peer 采用面向连接的可靠传输协议 TCP 进行通信。
2 BitTorrent 协议分析
本小节主要从 B 编码规则、元信息文件、BitTorrent 客户端与 Tracker 服务器之
间的通信协议和 BitTorrent 客户端之间的通信协议几个方面分析 BitTorrent 协议。
2.1 B 编码
种子文件和 Tracker 的返回信息都是经过 B 编码
[12]
的。要解析和处理种子文件以
及 Tracker 的返回信息,首先要熟悉 B 编码的规则。B 编码中有 4 种类型:字符串、
整型、列表、字典。
字符串的编码格式为:<字符串的长度>:<字符串>,其中<>括号中的内容为必
需。例如,有一个字符串 spam,则经过 B 编码后为 4:spam。
整型的编码格式为:i<十进制的整型数>e,即 B 编码中的整数以 i 作为起始符,
以 e 作为终结符,i 为 integer 的第一个字母,e 为 end 的第一个字母。例如,整数
3,经过 B 编码后为 i3e,整数−3 的 B 编码为 i−3e,整数 0 的 B 编码为 i0e。
注意 i03e 不是合法的 B 编码,因为 03 不是十进制整数,而是八进制整数。
列表的编码格式为:l<任何合法的类型>e,列表以 l 为起始符,以 e 为终结符,
中间可以为任何合法的经过 B 编码的类型,l 为 list 的第一个字母。例如,列表
l4:spam4:eggse 表示两个字符串,一个是 spam,一个是 eggs。
字典的编码格式为:d<关键字><值>e,字典以 d 为起始符,以 e 为终结符,关
键字是一个经过 B 编码的字符串,值可以是任何合法的 B 编码类型,在 d 和 e 之间
可 以 出 现 多 个 关 键 字 和 值 对 , d 是 dictionary 的 第 一 个 字 母 。 例 如 ,
d4:spaml3:aaa3:bbbee,它是一个字典,该字典的关键字是 spam,值是一个列表(以
l 开始,以 e 结束),列表中有两个字符串 aaa 和 bbb。
又如:d9:publisher3:bob17:publisher-webpage15:www.example.come,它也是一个
字典,第一个关键字是 publisher,对应的值为 bob ,第二个关键字是 publisher-
webpage,对应的值是 www.example.com。
BitTorrent (BT) 相关研究
BitTorrent 协议中的元信息文件是使用 B 编码构成的。B 编码是 BitTorrent 早期
开发时定义的一套简单的编解码标准,由于 BitTorrent 客户端一直是使用 Python 语
言开发的,所以 B 编码中含有 Python 自带的数据结构,如字典、列表等。B 编码的
对象可以是整数、字符串、列表和字典,编码之后成为字符串,便于在网络上传输。
2.2 元信息文件
元信息文件是采用 B 编码的字典,包括以下主键:
1. announce:必选项,描述 Tracker 服务器的 URL 地址。
2. info:必选项,描述目标文件的摘要信息。info 字段对应一个字典,有两种
格式,分别对应于目标文件是单一文件和同一目录下的多个文件两种情况。
单一文件情况下,info 字段结构由 length、name、piece length 和 pieces 四项构
成: length:必选项,描述目标文件的长度; name:必选项,描述目标文件的名称;
piece length:必选项,描述目标文件的文件片段的长度(除最后一个文件片段以
外);pieces:必选项,描述目标文件的所有文件片段的 hash 摘要值。pieces 字段是
一个长度为 20 字节的整数倍的字符串,其中每一个 20 字节长的字符串,表示相应
文件片段的 SHA1 hash 值。
多个文件情况下,是将多个文件看成是一个大文件,相应的 info 字段结构由
files、name、piece length 和 pieces 四项构成: files:必选项,对应着一个列表,其
中每一个元素是一个字典,表示一个文件。其中的字典包含 length 和 path 两个主键,
分别描述每一个文件的长度和文件名; name:必选项,描述所有文件共同的目录名;
piece length:必选项,描述所有目标文件的文件片段的长度(除最后一个文件片段
以外);pieces:必选项,描述所有目标文件的所有文件片段的 hash 摘要值。
3. creation date:可选项,描述元信息文件的创建日期。
4. comment:可选项,对目标文件进行简单描述。
5. created by :可选项,描述制作元信息文件的软件。
2.3 种子文件的结构
种子文件包含了提供共享的文件的一些信息,它以.torrent 为后缀名,种子文件
也被称为元信息文件或 metafile,它是经过 B 编码的。种子文件事实上就是一个 B 编
码的字典,它含有以下关键字如表 1 所示。
表 1 种子文件的关键字
关 键 字 含 义
info
该关键字对应的值是一个字典,它有两种模式,“singel file”和“multiple file”,单文件模
式和多文件模式。单文件模式是指待共享的文件只有一个,多文件模式是指提供共享
的不止一个文件,而是两个或两个以上。如使用 BT 软件下载一部影片时,影片的上下
部可能分别放在不同的文件里
announce
该关键字的值为 Tracker 的 URL
announce-list 可选,它的值存放的是备用 Tracker 的 URL
creation-date 可选,该关键字对应的值存放的是创建种子文件的时间
comment
可选,它的值存放的是种子文件制作者的备注信息,对于下载来说,该关键字基本没有
用处,因此不必理会
剩余15页未读,继续阅读
资源评论
- Nosky1002013-07-10非常不错的文档,详细的说明了BT协议。
zhang953737145
- 粉丝: 1
- 资源: 17
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 柯尼卡美能达Bizhub C266打印机驱动下载
- java游戏之我当皇帝那些年.zip开发资料
- 基于Matlab的汉明码(Hamming Code)纠错传输以及交织编码(Interleaved coding)仿真.zip
- 中国省级新质生产力发展指数数据(任宇新版本)2010-2023年.txt
- 基于Matlab的2Q-FSK移频键控通信系统仿真.zip
- 使用C++实现的常见算法
- travel-web-springboot【程序员VIP专用】.zip
- 基于Matlab, ConvergeCase中部分2D结果文件输出至EXCEL中 能力有限,代码和功能极其简陋.zip
- java桌面小程序,主要为游戏.zip学习资源
- Java桌面-坦克大战小游戏.zip程序资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功