2022年Linux下BT种子解析模块 .pdf
《2022年Linux下BT种子解析模块 .pdf》由会员分享,可在线阅读,更多相关《2022年Linux下BT种子解析模块 .pdf(4页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Linux 下 BT 种子解析模块一 概要介绍1.BT 协议的介绍BitTorrent 是一个文件分发协议,每个下载者在下载的同时不断向其他下载者上传已经下载的数据。而在FTP,HTTP 协议中,每个下载者从FTP,或 HTTP 服务器处下载自己所需要的文件, 各个下载者之间没有交互。当非常多的用户同时访问和下载服务器上的文件时, 由于服务器的处理能力以及带宽限制,下载速度会急剧下降,有的用户根本访问不了服务器。 BT 协议与 FTP 协议不同,它的特点是下载的人越多下载的速度越快,其原因在于每个下载者将已下载的数据提供给其他下载者下载,它充分利用了用户的上载带宽。而 Web 服务器上保存着种
2、子文件,下载者使用网络浏览器从Web 服务器上下载种子文件。种子文件,又成为元原文件或者metafile,它保存了共享文件的一些信息,如共享文档的文件名, 文件大小, Tracker 服务器的地址。种子文件通常很小,一般 1G 大小的共享文件,其种子文件不足100KB,种子文件以torrent 为后缀。 BT 客户端下载一个共享文件的开始过程,往就是客户端首先解析种子文件,获取待下载文件的一些信息,其中包括Tracker 服务器的地址,然后根据得到的地址连接Tracker 服务器,获得peer 端信息,最后再在 peer之间传送消息和数据。共享文件在逻辑上被划分为大小相同的块,成为 piece
3、, 每个 piece的大小通常称为256K。对于共享文件,文件的第1 字节到第256K 字节为第一个piece,第 256K+1 字节到 512K字节被称为第二个piece,依此类推。种子文件中包含有每个piece 的 hash值。 BT 协议规定使用 Sha1算法对每个piece 生成 20 字节的 hash 值,作为每个piece 的指纹。2.B 编码的介绍种子文件和Tracker 的返回信息都是经过B 编码的,要解析和处理种子文件以及Tracker的返回值,首先要熟悉B 编码的规则。B 编码中有4 中类型:字符串,整型,列表和字典。字符串的编码格式为::,其中 括号中的内容为必须的,例如
4、有一个字符串spam,则经过B 编码后为4:spam。整型的编码格式为:ie,则 B 编码中的整数是以i 作为起始符, 以 e作为终结符。例如,整数3,经过 B 编码后为i3e。列表的编码格式为:le,列表以l 为起始符,以e 为终结符,中间可以为任何合法的经过B 编码的类型。 例如,列表l4:spam4:eggse 表示两个字符串,一个是spam,另一个是eggs。字典的编码格式为:de,字典以d 为起始符,以e 为终结符,关键字是一个经过B 编码的字符串,值可以是任何合法的B 编码类型,在d 和 e 之间可以出现多个关键字和值对。例如,d4:spaml3:aaa3:bbbee,它是一个字典
5、,该字典的关键字是spam,值是一个列表,列表中有两个字符串aaa和 bbb。3.BT 种子结构的介绍种子文件包含了提供共享的文件的一些信息,它以.torrent 为后缀名,种子文件也被称为元信息文件或metafile,它是经过B 编码的。种子文件事实上就是一个B 编码的字典,它包含有以下关键字:announce:tracker 服务器的URL( 字符串 ) announce-list(可选 ):备用 tracker 服务器列表 (列表 ) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - -
6、 第 1 页,共 4 页 - - - - - - - - - creation date(可选 ):种子创建的时间,Unix 标准时间格式, 从 1970 1 月 1 日 00:00:00 到创建时间的秒数(整数 ) comment(可选 ):备注 (字符串 ) created by(可选 ):创建人或创建程序的信息(字符串 ) info:一个字典结构,包含文件的主要信息,为分二种情况:单文件结构或多文件结构单文件结构如下:length:文件长度,单位字节(整数 ) md5sum(可选 ):长 32 个字符的文件的MD5 校验和, BT 不使用这个值,只是为了兼容一些程序所保留!(字符串 )
7、name:文件名 (字符串 ) piece length:每个块的大小,单位字节(整数 ) pieces:每个块的20 个字节的SHA1 Hash 的值 (二进制格式 ) 多文件结构如下:files:一个字典结构length:文件长度,单位字节(整数 ) md5sum(可选 ):同单文件结构中相同path:文件的路径和名字,是一个列表结构,如testtest.txt 列表为 l4:test8test.txte name:最上层的目录名字(字符串 ) piece length:同单文件结构中相同pieces:同单文件结构中相同4.GNU make 工具的介绍Linux 环境下的大型项目开发中,通
8、常把整个系统划分为若干模块,每个模块完成某一相对独立的功能,各个模块相互作用以构成一个完整的系统。对于这样的一个软件系统,是不可能只用一条或者几条gcc命令就可以编译生成可执行程序的。而且模块通常要经历几次修改, 每次修改后如果都有人工输入命令以完成编译,这样子既效率低下又容易出错。在 Linux 中,有一个用来维护程序模块关系和生成可执行程序的工具-make。它可以根据程序模块的修改情况重新编译链接生成中间代码或最终的可执行程序。执行 make 命令,需要一个名为“makefile ”或者“ Makefile ”的文本文件,这个文件定义了整个项目的编译规则。它定义了模块间的依赖关系,指定文件
9、的编译顺序,以及编译所使用的命令,有了 make 命令和 Makefile 文件, 整个项目的源程序文件可以自动编译,极大的提高了软件开发的效率。二 模块的设计与实现根据需求,在模块中实现查找特定关键字功能的函数find_keyword (keyword ,position ) ,其中 keyword 为待查的关键字,而position 为一返回参数,返回查找到的关键字所在位置。为了提高查找效率,将种子文件的内容读入内存,直接在内存中进行字符串匹配。函 数read_announce_list() 获 取Tracker地 址 , 并 将 获 取 的 地 址 保 存 到 全 局 变 量announ
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年Linux下BT种子解析模块 2022 Linux BT 种子 解析 模块
限制150内