bit协议Word格式文档下载.docx
- 文档编号:16103244
- 上传时间:2022-11-20
- 格式:DOCX
- 页数:9
- 大小:24.51KB
bit协议Word格式文档下载.docx
《bit协议Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《bit协议Word格式文档下载.docx(9页珍藏版)》请在冰豆网上搜索。
2.开始运行普通网络服务器端程序,如apache,已运行的跳过这一步;
3.在网络服务器上将.torrent文件关联到mimetype类型application/x-bittorrent(已关联的跳过这一步);
4.用要发布的完整文件和tracker的uRl创建一个元信息文件(.torrent文件);
5.将元信息文件放置在网络服务器上;
6.在网页上发布元信息文件(.torrent文件)链接;
7.原始下载者提供完整的文件(原本)。
通过bt下载步骤如下:
1.安装bt客户端程序(已安装的跳过这一步);
2.上网;
3.点击一个链到.torrent文件的链接;
4.选择本地存储路径,选定需要下载的文件(对有选择下载功能的bt客户端用户);
5.等待下载完成;
6.用户退出下载(之前下载者不停止上传)。
连接状况如下:
网站正常提供静态文件连接,并且启动客户端上的bt程序;
tracker即时接收所有下载者信息,并且给每个下载者一份随机的peer列表。
通过http或https协议实现;
下载者每隔一段时间连一次tracher,告知自己的进度,并和那些已经直接连接上的peer进行数据的上传下载。
这些连接遵循bittorrentpeer协议,通过tcp协议进行通信。
·
原始下载者只上传不下载,他拥有整个文件,所以很必要向网络中传输完文件的所有部分。
在一些人气很旺的下载中,原始下载者经常可以在较短的时间内退出上传,由其它已经下载到整个文件的下载者继续提供上传。
元信息文件和tracker的回应信息都以一种简单高效可扩展的格式(bencoding,b编码)传送。
b编码过的信息就是以包含字符串和整型数据的字典和列表的嵌套(像在python中一样),可扩展性是指可以通过减少字典忽略的关键值来添加新的特性。
b编码规则如下:
字符串表示为十进制数的既定字符串长度加冒号再跟原字符串。
如4:
spam就相当于spam。
整型数据表示成前面加i后面加e中间是十进制数,如i3e就相当于3,i-3e就是-3。
整型数据没有长度限制。
i-0e无效,所有以i0开头的除了代表0的i0e,其它都无效。
列表编码为一个l开头后面跟它所包含的项目(已经编码过)最后加一个e,比如l4:
spam4:
eggse就等于[spam,eggs]。
字典编码为一个d开头后面跟一个交替关键值(key)及其对应值的列表最后加一个e。
如:
d3:
cow3:
moo4:
eggse相当于{cow:
moo,spam:
eggs}
d4:
spaml1:
a1:
bee相当于{spam:
[a,b]}
关键值必须是处理过的字符串(用原始字符串编码的,而且不是数字字母混合编码的)。
元信息文件就是b编码的有以下关键值的字典:
announce(声明)
tracker的uRl。
info(信息)
此关键值对应一个字典包含以下描述的关键值:
关键值name对应一个字符串,代表默认的下载文件或存成目录的名字。
它是纯粹建议性的。
关键值piecelength(块长)对应文件分割成的块的字节数。
出于传输需要,文件被分割成大小相等的块,除了最后一块通常会小一些。
块长一般来说是2的权值,大部分设块长为256k(2的18次幂)。
关键值pieces(块)对应一个字符串,此字符串长度是20的倍数。
它可以再分成每20字节一段的多个字符串,分别对应块在索引中的sha1校验码(hash)。
还有关键值length(长度)和files(文件),它们不能同时出现也不能都不出现。
当length出现说明这个元信息文件只是单文件下载,否则说明是多文件的目录结构下载。
单文件情况下,length对应文件长度的字节数。
多文件情况被看作是把许多单文件按文件列表中的顺序连成一个大文件下载,而关键值files就对应文件列表,是一个字典的列表,其中每个字典又包含以下关键值:
length(长度)
文件长度的字节数。
path(路径)
一个包含字符串的列表,字符串就是子目录名,最后一项的字符串是文件名。
(一个长度为零的length表单是错误的。
)
在单文件情况下,关键值name是文件名;
多文件情况下,它就成了目录名。
tracker质询是双向的。
tracker通过httpget参数获得信息,然后返回一个b编码后的信息。
尽管tracker需要在服务器端执行,但它运行流畅像apache的一个模块。
tracker的get请求有如下关键值:
info_hash
20字节长的sha1验证码,来自b编码过的元信息文件中的info值下,是元信息文件的一个支链。
这个值是自动转换的。
peer_id
一个20字节长的字符串,是每个用户开始下载时随机生成的id。
这个值也是是自动转换的。
ip
一个可选择的参数给出peer所在的ip(或dns主机名),一般是和tracker同机器的原始下载者得到后以便散发文件。
port
监听端口,官方默认的是从6881端口开始试,如果端口被占用则依次向后推一个端口找空闲端口,到6889端口为止。
uploaded
目前总上传量,编码为十进制ascii码。
downloaded
目前总下载量,编码为十进制ascii码。
left
未下载的字节数,编码为十进制ascii码。
这个数不是通过文件长度和已下载数算出来的,因为文件可能在被续传,还有一些已经下载的数据不能通过完整性检查必须重新下载。
event
这是个选择性的关键值,选项有started,completed或stopped(或empty,等同于没有运行)。
如果没有运行,这个声明会定期间隔一定时间发出。
开始下载时发出started值,完成下载时发出completed。
当文件完整后再开始,没有completed发出,下载者中止下载时发出stopped。
tracker的回应也是b编码字典。
如果tracker回应中有关键值failurereason(失败原因),就会对应一个人可以读懂的字符串信息解释质询失败的原因,不需要其它关键值。
否则,回应必须有两个关键值:
interval(间隔)对应下载者定期发出请求的间隔秒数;
peers,peer自选id,ip地址或dns主机名的字符串和端口号。
记住peers不会完全按照计划的间隔发送请求,假如他们发生一个事件或者想要更多的peers。
如果你想对元信息文件或者tracker质询进行扩展,请与bramcohen进行协调,确保所有扩展都兼容。
bittorrentpeer协议通过tcp协议进行操作。
它不用调节任何socket选项就可以流畅运行。
peer之间的连接是对称的。
两个方向送出的信息要协调一致,数据可以流入任一方。
peer协议指一个peer从零开始下载,每得到元信息文件索引中所描述的一个块且验证码一致,就向所有peer声明已得到此块。
连接的两个终端有2个状态指标,被阻塞与否,被关注与否,被阻塞(choking)是表明在恢复通畅之前数据不再发出的通知。
发生阻塞的原因和技术问题稍后会提到。
数据传输发生在一方关注对方且对方没有阻塞的情况下。
关注状态必须一致保持-如果一个没阻塞的peer没有别人需要的数据,别人对他就会失去关注,转而关注那些正在阻塞的peer。
完全执行这种条件需要非常慎重,但这样的确可以让下载者知道哪些peer在阻塞消失后可以马上开始下载。
连接会逐渐断开不感兴趣和阻塞的peer。
当数据传输时,下载者要备好多份请求排成队列,以获得较高的tcp传输效率(这叫“管运请求”)。
另一方面,不能被写入tcp缓冲区的请求要被立即排入内存,而不是一个应用程序级的网络缓冲,一旦阻塞出现,这些请求全部丢弃。
peer连线协议包括一次握手跟着不断的大小一致且确定的信息流。
握手的开始是字符十九(十进制),跟着是字符串bittorrentprotocol。
开头的字符是长度固定的,希望其它新协议也能这样以便区分。
此后所有送入协议的整数都编码为4字节大中止端。
在现有的应用中头部数据之后是8个全部预留为0的字节,若果你想通过改变这8个预留字节以扩展协议,请与bramcohen协调以保证所有扩展兼容。
然后是来自元信息文件中b编码的info值中长20字节的sha1验证码(和info_hash向tracker声明的值相同,但这里是原始值那里是引用)。
如果双方的值不同,连接断开。
一个例外是下载者想只用一个端口进行多个连接下载,它们会先从接入连接得到一个验证码,然后和列表里面的对照,有相同的就答复。
验证码之后是20字节的peerid,它包含在tracker回应的peer列表中,在向tracker的请求中被报告。
如果接受方peerid不符合发送方希望,连接断开。
握手完毕。
之后是长度固定的交互信息流。
零长度信息用来保持连接,被忽略。
这种信息一般2分钟发出一次,但是在等待数据期间很容易超时。
所有非保持连接用信息开头的字节给出类型,可能值如下:
0-阻塞
1-通畅
2-关注
3-不关注
4-有
5-比特组
6-请求
7-块
8-取消
“阻塞”、“通畅”、“关注”和“不关注”类信息没有荷载。
“比特组”类信息仅作为首信息发出。
它负载一个比特组,下载者有索引的设为1,其它为0。
开始下载时没有任何数据的下载者跳过“比特组”信息。
首字节高位到低位对应索引0-7,依次类推,第二字节对应8-15,等等。
尾部的剩余的比特位设为0。
篇二:
bittorrent协议规范(bt协议集合)一
bittorrent是一种分发文件的协议。
它通过uRl来识别内容,并且可以无缝的和web进行交互。
它基于http协议,它的优势是:
如果有多个下载者并发的下载同一个文件,那么,每个下载者也同时为其它下载者上传文件,这样,文件源可以支持大量的用户进行下载,而只带来适当的负载的增长。
(译注:
因为大量的负载被均衡到整个系统中,所以提供源文件的机器的负载只有少量增长)
一个bt文件分布系统由下列实体组成:
一个普通的web服务器
一个静态的“元信息”文件
一个跟踪(tracker)服务器
终端用户的web浏览器
终端下载者
理想的情况是多个终端用户在下载同一个文件。
要提供文件共享,那么一台主机需要执行以下步骤:
运行一个tracker服务器(或者,已经有一个tracker服务器在运行了也可以)运行一个web服务器,例如apache,或者已经有一个web服务器在运行了。
在web服务器上,将文件扩展名.torrent和
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- bit 协议