ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:90.35KB ,
资源ID:4365932      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4365932.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Torrent 文件格式详解.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Torrent 文件格式详解.docx

1、Torrent 文件格式详解Torrent文件格式分析首先,我在网上找一个最近比较流行的大片环太平洋的torrent文件。通过用UE把它打开,我们来看一下此torrent文件的内容:d8:announce39:8077/announce13:announce-listll39:8077/announceel30:http:/tracker.prq.to/announceee8:codepagei936e13:creation datei1381766089e4:infod5:filesld6:lengthi202e4:pathl40:本片简介,海报,截图等,双击进入查看.urle10:path

2、.utf-8l58:鏈 墖绠浠嬶紝娴锋姤锛屾埅鍥剧瓑锛屽弻鍑昏繘鍏煡鐪?urleed6:lengthi275e4:pathl37:飞鸟网-和浪子一起来开心农场偷菜吧.urle10:path.utf-8l53:椋為笩缃?鍜屾氮瀛愪竴璧锋潵寮蹇冨啘鍦哄伔鑿滃惂.urleed6:lengthi266e4:pathl45:飞鸟娱乐-边看电影边学英语,娱乐学习两不误.urle10:path.utf-8l65:椋為笩濞变箰-杈圭湅鐢靛奖杈瑰 鑻辫 锛屽涔愬 涔犱袱涓嶈 .urleed6:lengthi2640e4:pathl37:飞鸟娱乐论坛-超多最新爆爽资源下载.rtfe10:path.utf-8l53

3、:椋為笩濞变箰璁哄潧-瓒呭 鏈鏂扮垎鐖借祫婧愪笅杞?rtfeed6:lengthi288e4:pathl45:飞鸟娱乐原创IMDB TOP250 经典大片 一网打尽.urle10:path.utf-8l59:椋為笩濞变箰鍘熷垱IMDB TOP250 缁忓吀澶墖 涓缃戞墦灏?urleed6:lengthi2195501970e4:pathl55:环太平洋 Pacific.Rim.2013.BluRay.720p.x264.AAC-LZHD.mp4e10:path.utf-8l59:鐜 骞虫磱 Pacific.Rim.2013.BluRay.720p.x264.AAC-LZHD.mp4eed6:l

4、engthi266e4:pathl35:老调网-下载中英字幕电影的好地方.urle10:path.utf-8l50:鑰佽皟缃?涓嬭浇涓 嫳瀛楀箷鐢靛奖鐨勫鍦版柟.urleee4:name51:环太平洋 Pacific.Rim.2013.BluRay.720p.x264.AAC-LZHD10:name.utf-855:鐜 骞虫磱 Pacific.Rim.2013.BluRay.720p.x264.AAC-LZHD12:piece lengthi2097152e6:pieces20940:(此处省略20940个字节的hash值,每个piece的hash值占用20个字节,即20940/20=1047

5、个piece。) 9:publisher8:飞鸟娱乐13:publisher-url21:19:publisher-url.utf-821:15:publisher.utf-812:椋為笩濞变箰e5:nodesll21:i6881eel20:i53eeee下面我们开始详细讲解一下torrent文件格式:B编码为了在torrent文件中存储bt下载所需信息,需要一定规范记录这些信息,在这里torrent文件使用的是BEncode格式规范,和JSON一样,本质都是用来交换和存储信息。BEncode有四种存储类型:(字符串型、数值型、列表型、字典型)1、 字符串string字符串表示方式为:数字前缀

6、:字符串,例如super表示为:5:super 数字前缀以十进制数字指出字符串的长度。例如:0:”4:大庆6:daqing15:2、 数值integers数值的表示方式为:以小写字母”i”开始,以小写字母”e”结尾,ie中间放置十进制数值。例如:i0e 表示数字0(零)i-3e 表示数字-3i7e 表示数字73、 列表list列表类型允许嵌套,列表中的可以存储列表,列表的表示方式:以小写字母”l”开始,以小写字母”e”结尾,le中间放置存储的内容。例如:l7:figos4:blog3:url23:e该list的内容为supers , blog , url , l4:yeari2013ee该li

7、st的内容为year,20134、 字典dictionary字典是为了让一个具体的名字name与一个具体的数据类型表示的数据关联,上面三种类型(字符串、整数、列表)的数据只是单纯的表示数据本身,并未有变量名来指出该数据名称。字典类似C语言变量的定义,例如定义一个名为strName的字符串如下:Char *strName=NULL;当strName指向字符串”Figo”时,那么当我们说strName时也即在说”Figo”。BEncode中字典类型的存在,就是为了让数据与名称关联配对,也即dictionary后的数据要两两配对。这里需要注意的是,名称必须为string类型。Dictionary可允

8、许嵌套使用,表示方式:以小写字母d开始,以小写字母e结尾,de中间放置要存储的内容。如下:d4:Name:4:Figo5:Hobbyl8:football5:sleep8:thinkingee该dictionary内容为name = Figo,Hobby = football,sleep,thinking d8:Name-dicd5:First4:Figo6:Second3:Tomee该dictionary内容为Name-dic= First=Figo,Second=Tom那么开头的torrent文件announce部分d8:announce39:8077/announce13:announc

9、e-listll39:8077/announceel30:http:/tracker.prq.to/announceee8:codepagei936e13:creation datei1381766089e即可理解为:announce = :8077/announceannounce-list = :8077/announce,http:/tracker.prq.to/announcecodepage = 936 #代码936 简体中文GBKcreation date = 1381766089 #unix时间格式,此处是2013-10-14 23:54:49种子文件结构关键字含义info该关键

10、字对应的值是一个字典,它有两种模式,”single file”和”multiple file”:单文件模式和多文件模式,单文件模式是指共享的文件只有一个,多文件模式是指提供共享的文件不止一个,而是两个或两个以上,如果使用BT软件下载一部影片时,影片的上下部分可能分别放在不同的文件里。announce必选该关键字的值为Tracker的URL。announce-list可选它的值存放的是备用Tracker的URL。creation-date可选该关键字对应的值存放的是种子文件创建的时间。comment可选它的值存放的是种子文件制作者的备注信息。created by可选值存放生成种子文件的BT客户端

11、软件的信息,如客户端名、版本号。在bitTorrent规范中,torrent文件又被称作Metainfo files,其主要有announce部分和info部分组成。1、announce部分(红色表示必选,蓝色部分表示可选)例如:announce默认的tracker服务器地址announce-list(对标准的扩展)备选的tracker服务器列表,这里需要说明一下备选服务器的选择和尝试连接顺序。如下的表示为announce-list的一种表示:announce-list = tracker1,tracker2,tracker3, backup2-list, backup3-list 在bt客户

12、端程序连接tracker服务器时,对于announce-list的处理过程如下:1)、首先依次尝试连接第一个列表提供的url,如果tracker1无响应,尝试tracker2.当tracker2连接成功时,则第一个备份列表中的处理顺序变为:tracker2,tracker1,tracker32)、如果第一个备份列表依次连接失败,则尝试backup2-list。如果backup2-list也依次连接失败。则尝试连接backup3-list。但是backup2-list与backup3-list不会因为连接失败而像backup1-list那样改变处理顺序;3)、改变的list顺序只对此次程序连接尝

13、试顺序有影响,原始的torrent文件并不更改,下次重启程序后依旧按照torrent文件中的announce-list次序尝试。creation datetorrent文件的创建时间,为UNIX时间格式。commentstring类型,是关于torrent文件的描述信息。created by创建此torrent文件的程序信息。encoding指出info中pieces部分的编码类型,一般为UTF-8,有时也会遇到GBK。例如文件前面的B编码d8:announce39:8077/announce13:announce-listll39:8077/announceel30:http:/tracke

14、r.prq.to/announceee8:codepagei936e13:creation datei1381766089e可分解为d 8:announce 39:8077/announce 13:announce-list l l39:8077/announcee l30:http:/tracker.prq.to/announcee e 8:codepage i936e 13:creation date i1381766089e#上图中:D表示字典型、S表示字符串型、L表示列表型、N表示数值型2、info部分(红色表示必须的部分,蓝色部分表示可选的部分)这里需要注意info部分的单文件传输和

15、多文件传输时的不同:单文件传输是指torrent文件只存储了单个文件下载信息;多文件传输指torrent中存储了一个以上的文件下载信息。关键字含义piece length每个piece的长度,值是B编码类型,通常为i262144e,即256Kpieces字符串类型,存放每个piece的hash值,这个字符串长度一定是20的倍数,因为每个piece的hash值的长度为20字节。private该值如果为1,则表明客户端必须通过连接Tracker来获取其他下载者信息,即peer的IP地址和端口号;如果为0,则表明客户端还可以通过其它方式获取peer的IP地址和端口号,如DHT方式,DHT(Distr

16、ibute Hash Tabel)即分布式哈希表,它是一种以分布式的方式来获取peer的方法,现在许多BT客户端既支持通过Tracker来获取peer,也支持通过DHT来获取peer,如果种子文件中没有private关键字,则表明不限制一定要通过连接tracker来获取peer。单文件name共享文件的文件名,也就是要下载的文件的文件名。length共享文件的长度,以byte为单位。md5sum可选,是共享文件的md5值,这个值在bt协议中根本不是用。多文件name存放共享文件的文件夹名字。file它的值是一个列表,含有多个字典,每个共享文件为一个字典。每个字典中含有三个关键字:length、

17、md5sum、pathfiles字典length共享文件的长度,以byte为单位。md5sum可选,同上。path存放共享文件的路径和文件名。1)、单文件传输形式:name要下载的文件名字length要下载文件的大小(单位为byte)md5sum32为的16进制MD5字符串。piece length要下载文件按照piece length指定大小分片,此处指明单个分片大小。pieces存储每个分片的SHA1值(每个SHA1的hash长度为20byte)例如:目标文件大小FileSpace为 1039143285 bytes,文件每个分片大小PerPieceSpace为 1048576 bytes

18、,计算可得:1039143285 = 1048576 x 991 + 4469即 FileSpace= PerPieceSpace*991 + 4469目标文件按照指定大小分片后,为991个满足分片大小的分片文件和1个余数文件,总共是992个小文件。其存储的SHA1每个长度为20 bytes,进而可知pieces中存储的SHA1个数为:NumberOfSHA1 = 19840/20 = 992 即torrent文件的pieces中存储了992个SHA1值。这样每个小文件都对应上了一个SHA1校验值。2)、多文件传输形式files表示该torrent为多文件形式,每个文件都是dictionary

19、类型数据表示。name表示多个文件存储在以name命名的文件夹。length要下载文件的大小(单位为byte)path指出要下载文件存储相对于name字段表示的文件夹的位置。假设name为dir1,此时:1) 如果path值为file1.rmvb,表示file1.rmvb的存储路径为dir1file1.rmvb2) 如果path值为dir2file1.rmvb,表示file1.rmvb的存储路径为dir1dir2file1.rmvbmd5sum32位的16进制MD5值字符串。piece length要下载文件安装piece length指定大小分片,此处指明单个分片大小。pieces存储每个分

20、片的SHA1值(每个SHA1的hash长度为20字节)下面我们看一下info部分的示例: 4:infod5:filesld6:lengthi202e4:pathl40:本片简介,海报,截图等,双击进入查看.urle10:path.utf-8l58:鏈 墖绠浠嬶紝娴锋姤锛屾埅鍥剧瓑锛屽弻鍑昏繘鍏煡鐪?urleed6:lengthi275e4:pathl37:飞鸟网-和浪子一起来开心农场偷菜吧.urle10:path.utf-8l53:椋為笩缃?鍜屾氮瀛愪竴璧锋潵寮蹇冨啘鍦哄伔鑿滃惂.urleed6:lengthi266e4:pathl45:飞鸟娱乐-边看电影边学英语,娱乐学习两不误.urle10

21、:path.utf-8l65:椋為笩濞变箰-杈圭湅鐢靛奖杈瑰 鑻辫 锛屽涔愬 涔犱袱涓嶈 .urleed6:lengthi2640e4:pathl37:飞鸟娱乐论坛-超多最新爆爽资源下载.rtfe10:path.utf-8l53:椋為笩濞变箰璁哄潧-瓒呭 鏈鏂扮垎鐖借祫婧愪笅杞?rtfeed6:lengthi288e4:pathl45:飞鸟娱乐原创IMDB TOP250 经典大片 一网打尽.urle10:path.utf-8l59:椋為笩濞变箰鍘熷垱IMDB TOP250 缁忓吀澶墖 涓缃戞墦灏?urleed6:lengthi2195501970e4:pathl55:环太平洋 Pacific.

22、Rim.2013.BluRay.720p.x264.AAC-LZHD.mp4e10:path.utf-8l59:鐜 骞虫磱 Pacific.Rim.2013.BluRay.720p.x264.AAC-LZHD.mp4eed6:lengthi266e4:pathl35:老调网-下载中英字幕电影的好地方.urle10:path.utf-8l50:鑰佽皟缃?涓嬭浇涓 嫳瀛楀箷鐢靛奖鐨勫鍦版柟.urleee4:name51:环太平洋 Pacific.Rim.2013.BluRay.720p.x264.AAC-LZHD10:name.utf-855:鐜 骞虫磱 Pacific.Rim.2013.BluR

23、ay.720p.x264.AAC-LZHD12:piece lengthi2097152e6:pieces20940: (此处省略20940个字节的hash值,每个piece的hash值占用20个字节,即20940/20=1047个piece。) 9:publisher8:飞鸟娱乐13:publisher-url21:19:publisher-url.utf-821:15:publisher.utf-812:椋為笩濞变箰e5:nodesll21:i6881eel20:i53eeee分解文件为4:infod 5:files ld 6:length i202e 4:path l40:本片简介,海报

24、,截图等,双击进入查看.urle 10:path.utf-8 l58:鏈 墖绠浠嬶紝娴锋姤锛屾埅鍥剧瓑锛屽弻鍑昏繘鍏煡鐪?urle e d 6:length i275e 4:path l37:飞鸟网-和浪子一起来开心农场偷菜吧.urle 10:path.utf-8 l53:椋為笩缃?鍜屾氮瀛愪竴璧锋潵寮蹇冨啘鍦哄伔鑿滃惂.urle e d 6:length i266e 4:path l45:飞鸟娱乐-边看电影边学英语,娱乐学习两不误.urle 10:path.utf-8 l65:椋為笩濞变箰-杈圭湅鐢靛奖杈瑰 鑻辫 锛屽涔愬 涔犱袱涓嶈 .urle e d 6:length i2640e 4:

25、path l37:飞鸟娱乐论坛-超多最新爆爽资源下载.rtfe 10:path.utf-8 l53:椋為笩濞变箰璁哄潧-瓒呭 鏈鏂扮垎鐖借祫婧愪笅杞?rtfe e d 6:length i288e 4:path l45:飞鸟娱乐原创IMDB TOP250 经典大片 一网打尽.urle 10:path.utf-8 l59:椋為笩濞变箰鍘熷垱IMDB TOP250 缁忓吀澶墖 涓缃戞墦灏?urle e d 6:length i2195501970e 4:path l55:环太平洋 Pacific.Rim.2013.BluRay.720p.x264.AAC-LZHD.mp4e 10:path.utf

26、-8 l59:鐜 骞虫磱 Pacific.Rim.2013.BluRay.720p.x264.AAC-LZHD.mp4e e d 6:length i266e 4:path l35:老调网-下载中英字幕电影的好地方.urle 10:path.utf-8 l50:鑰佽皟缃?涓嬭浇涓 嫳瀛楀箷鐢靛奖鐨勫鍦版柟.urle e e #这是紧随files后L的结束符。4:name 51:环太平洋 Pacific.Rim.2013.BluRay.720p.x264.AAC-LZHD #存放共享文件的文件夹名字 10:name.utf-8 55:鐜 骞虫磱 Pacific.Rim.2013.BluRay.7

27、20p.x264.AAC-LZHD 12:piece length i2097152e 6:pieces20940:. #20940/20=1047个piece 9:publisher8:飞鸟娱乐13:publisher-url21:19:publisher-url.utf-821:15:publisher.utf-812:椋為笩濞变箰e #这个e是紧随info后面d的结束符5:nodes l l 21: i6881e e l 20: i53e e ee #这个e是文件开头d的结束符#这个nodes部分是torrent文件的扩展,包含IP和端口的列表,用于连接DHT网络的初始节点,并通过这些节点进行find_node。最终维护一张完整的DHT路由表。至此!torrent文件格式全部讲解完毕,有时间再把BT的通信过程总结一下以作编程及(P2SP、P4P)网络使用。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1