linux下bt种子解析模块

linux下bt种子解析模块

ID:31707959

大小:61.58 KB

页数:5页

时间:2019-01-17

linux下bt种子解析模块_第1页
linux下bt种子解析模块_第2页
linux下bt种子解析模块_第3页
linux下bt种子解析模块_第4页
linux下bt种子解析模块_第5页
资源描述:

《linux下bt种子解析模块》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Linux下BT种子解析模块概要介绍1.BT协议的介绍BitTorrent是一个文件分发协议,每个下载者在下载的同时不断向其他下载者上传已经下载的数据。而在FTP,HTTP协议中,每个下载者从FTP,或HTTP服务器处下载自己所需要的文件,各个下载者之间没有交互。当非常多的用户同时访问和下载服务器上的文件时,由于服务器的处理能力以及带宽限制,下载速度会急剧下降,有的用户根本访问不了服务器。BT协议与FTP协议不同,它的特点是下载的人越多下载的速度越快,其原因在于每个下载者将已下载的数据提供给其他下载者下载,它充分利用了用户的上载带宽。而Web服务器

2、上保存着种子文件,下载者使用网络浏览器从Web服务器上下载种子文件。种子文件,又成为元原文件或者metafile,它保存了共亨文件的一些信息,如共亨文档的文件名,文件大小,Tracker服务器的地址。种子文件通常很小,一般1G大小的共享文件,其种子文件不足100KB,种子文件以toixent为后缀。BT客户端下载一个共享文件的开始过程,往就是客户端首先解析种子文件,获取待下载文件的一些信息,其屮包括Tracker服务器的地址,然后根据得到的地址连接Tracker服务器,获得peer端信息,最后再在peer之间传送消息和数据。共享文件在逻辑上被划分为

3、大小相同的块,成为piece,每个piece的大小通常称为256K。对于共享文件,文件的第1字节到第256K字节为第一个piece,第256K+1字节到512K字节被称为第二个piece,依此类推。种子文件屮包含有每个piece的hash值。BT协议规定使用Shal算法对每个piece生成20字节的hash值,作为每个piece的指纹。2.B编码的介绍种子文件和Tracker的返回信息都是经过B编码的,要解析和处理种子文件以及Tracker的返回值,首先要熟悉B编码的规则。B编码小有4中类型:字符串,整型,列表和字典。字符串的编码格式为:v字符串的

4、长度>:<字符串〉,其中<>括号中的内容为必须的,例如有一个字符串spam,则经过B编码后为4:spamo整型的编码格式为:i<十进制的整型〉e,则B编码中的整数是以i作为起始符,以e作为终结符。例如,整数3,经过B编码后为i3e。列表的编码格式为:lv任何合法的类型〉c,列表以1为起始符,以c为终结符,屮间可以为任何合法的经过B编码的类型。例如,列表I4:spam4:eggse表示两个字符串,一个是spam,另一个是eggso字典的编码格式为:dv关键字>v值〉e,字典以d为起始符,以e为终结符,关键字是一个经过B编码的字符串,值可以是任何合法的

5、B编码类型,在d和e之间可以出现多个关键字和值对。例如,d4:spaml3:aaa3:bbbee,它是一个字典,该字典的关键字是spam,值是一个列表,列表中有两个字符串aaa和bbb。3・BT种子结构的介绍种子文件包含了提供共亨的文件的一些信息,它以.torrent为后缀名,种子文件也被称为元信息文件或metafile,它是经过B编码的。种子文件事实上就是一个B编码的字典,它包含有以下关键字:announce:tracker服务器的URL(字符串)announce-list(nJ*选):备用tracker服务器列表(列表)creationdate

6、(可选):种子创建的时间,Unix标准时间格式,从19701月1丨丨00:00:00到创建时间的秒数(整数)comment(可选):备注(字符串)createdby(可选):创建人或创建程序的信息(字符串)info:—个字典结构,包含文件的主要信息,为分二种情况:单文件结构或多文件结构单文件结构如下:length:文件长度,单位字节(整数)md5sum(可选):长32个字符的文件的MD5校验和,BT不使用这个值,只是为了兼容一些程序所保留!(字符串)name:文件名(字符串)piecelength:每个块的大小,单位字节(整数)pieces:每个块

7、的20个字节的SHA1Hash的值(二进制格式)多文件结构如下:files:—个字典结构length:文件长度,单位字节(整数)md5sum(可选)嗣单文件结构屮相同path:文件的路径和名字,是一个列表结构,女Dtesttest.txt列表为I4:test8test.txtename:最上层的目录名字(字符串)piecelength:同单文件结构中相同pieces:同单文件结构中相同4・GNUmakeI具的介绍Linux环境下的大型项目开发屮,通常把整个系统划分为若干模块,每个模块完成某一相对独立的功能,各个模块相互作用以构成一个完整的系统。

8、对于这样的一个软件系统,是不可能只用一条或者几条gcc命令就可以编译生成可执行程序的。而且模块通常要经历儿次修改,每次修改

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。