- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
BitTorrent Protocol Specifications v1.0 翻译
BitTorrent Protocol Specifications v1.0 翻译
原文(原始版本):/protocol.html
更详细的版本:/BitTorrentSpecification
注:
1) 本文是原始版本的翻译,如果有晦涩不清的地方,请参考上面的第二个link(更详细的版本)。
2) 因为没有任何实践,完全是基于文档的自己的理解,所以可能会有翻译和理解错误的地方。
3) 因为是老版本的协议原文,所述内容和现在实际的BT客户端肯定会有出入。
4) 协议扩展和DHT相关介绍在官网()上都有,需要请参考。
BitTorrent协议规范1.0
BitTorrent是一种用来传输文件的协议。它通过URL来识别被传输的文件并且被设计成能够无缝的集成到网络里。 它相对于单纯的HTTP协议的优势是当多个下载者同时下载同一个文件时,下载者之间可以互相传输文件内容(注:提高了下载速度),这使得被下载源(注:也就是指通常http下载时的http server)能够在只增加适量(少量/合理)负载的情况下支持非常大数量的下载者。
一个BitTorrent文件传输系统由以下几部分构成:
* 一个普通的web服务器
* 一个静态的元信息文件(注:也就是.torrent文件)
* 一个BitTorrent的Tracker(注:也就是Tracker服务器:用来追踪当前所有下载者信息的服务器。)
* 一个原始的下载者(注:即种子。或者叫原始上传者。在BT的世界里,下载者也是上传者。)
* 终端用户的网页浏览器(注:用来下载torrent文件)
* 终端用户下载者(注:可以理解为BT的Client端)
理想的情况下应该有很多的终端用户在下载同一个文件。(注:实际情况也正是如此!)
在网络上提供(发布)一个BT文件以供下载,需要进行以下的步骤:
1. 启动一个Tracker服务器(通常情况下,已经有一个Tracker服务器正在运行)。
2. 启动一个普通的web服务器,比如apache,通常应该已经有一个web服务器在运行。
3. 在web服务器上将扩展名为.torrent文件的mimetype关联为application/x-bittorrent(注:使客户端下载后知道用什么应用程序打开.torrent文件)。
4. 根据源文件(注:将要下载的文件)和Tranker服务器的URL生成元信息文件(.torrent文件)。
5. 将生成的元信息文件(.torrent文件)放到web服务器上。
6. 在某个网页上增加该元信息文件(.torrent文件)的下载link。
7. 启动一个拥有完整文件的下载者(即源)(注:这时我们有了第一个上传源,并且它有完整的文件,也就是通常所说有一个种子)。要开始通过BT下载文件,需要进行以下的步骤:
1. 安装BitTorrent(或者已经装好了)
2. 浏览网页(注:寻找你下载的文件的.torrent文件)
3. 点击.torrent文件的link(注:这是你的BT程序应该会自动运行)
4. 选择下载文件的保存路径,或者继续下载以前未下载完成的文件。
5. 等待下载完成。
6. 结束BitTorrent程序(它将继续上传直到你手动停止它)。(注:结束前你就是一个种子)传输的内容按如下方式编码(注:该编码方式称为bencode):
* 字符串编码为:其长度的10进制数加冒号加字符串本身。例如:4:span表示字符串spam
* 数字编码为i加10进制数加e。例如:i3e表示数字3,而i-3e表示数字-3。数字没有长度限制。i-0e是非法的。所有以0开头的编码,比如i03e,都是非法的,除了i0e,很自然的它表示数字0。
* 列表(List)编码为字母l加列表的元素(元素同样也是bencoded过的)加e。例如l4:spam4:eggs表示列表[spam, eggs]。
* 字典(Dictionary)编码为字母d加key加value加e。例如d3:cow3:moo:4spam4:eggse表示{cow:moo, spam:eggs},而d4:spaml1:a1:bee表示{spam: [a, b]}。key必须是字符串,并且必须按照排序后的顺序出现(按照key的原字串排序,不是字母顺序)。(注:sorted as raw strings应该是指基于binary compare的排序,而不是按照某种语言,比如英文,法文,字面意思/逻辑上的顺序)
元信息文件(.torrent文件)是一个以bencoded方式编码过的字典,该字典包含以下的key(及key对应的value):
announce
??? Tracker的URL。
info
??? 该key的value是一个map,包含以下的key(及其va
原创力文档


文档评论(0)