admin管理员组

文章数量:1650780

2024年3月12日发(作者:)

BitTorrent协议特征分析

1、概述

BitTorrent(简称BT)是一种文件分发协议,属于P2P协议。它通过URL

识别内容并且和网络无缝结合。它在HTTP平台上的优势在于,同时下在一

个文件的下载者在下载的同时不断互相上传数据,使文件源可以在很有限的

负载增加的情况下支持大量下载者同时下载。

2、工作原理

BT由如下几部分组成:.torrent文件、种子提供站点、目录服务器和内

容发布者/下载者。.torrent文件是一个文本文件,包含了tracker信息和文件

信息两部分。tracker信息主要是BT下载中需要用到的tracker服务器的地

址和针对tracker服务器的设置;文件信息是指将目标文件计算处理后再根

据BT协议的B编码规则编码后得到的信息。BT的主要原理是把提供下载

的文件虚拟分成大小相等的块,块大小必须为2Kbyte的整数次方(由于是

虚拟分块,硬盘上并不产生各个块文件),并把每个块的索引信息和Hash

验证码写入.torrent文件中,所以.torrent文件就是被下载文件的“索引”。种

子提供站点也就是.torrent文件的提供站点,为下载者提供.torrent文件下载

服务。目录服务器记录被下载的文件的索引信息及下载该文件的用户的信息

(主要是IP地址及端口号)。

BT协议主要包括3个部分:.torrent文件的格式、tracker HTTP/HTTPS

协议和Peerwire协议(使用TCP)。其中tracker HTTP/HTTPS协议是BT

客户机与tracker服务器之间的通信协议,Peer wire协议是BT客户机之间

的通信协议。

torrent文件内容采用了B编码。B编码是一种简洁的数据组织方式,支

持4种数据类型:bytestrings、integers、lists和dictionaries。integers、lists

和dictionaries类型分别以字母i、l、d作为首定界符,以字母e作为尾定界

符。bytestrings类型不使用首/尾定界符,其格式为<十进制表示的字符串长

度>:<字符串>,如4:spam表示字符串“spam”。这4种数据类型嵌套使用

构成了.torrent文件的内容。其中,用*号代替空格以便于分析。

BT客户机依次向.torrent中的tracker服务器发送连接请求,以获得正在

下载该文件的对等方列表(主要是IP地址和监听端口)。假如连接成功获得

列表,就关闭连接,尝试与列表中的对等方建立连接;假如不成功,尝试下

一个tracker服务器。用ethereal抓包是如下数据:

GET

/announce?info_hash=%B39%BEeJB%7B%BA%08%8C%DA%B7%E3y

%E9sN%20%B2%DC&peer_id=%2DSD0100%2D%CFQ%91%05%86%0

6%AD%DF%A9%90N%27&ip=192.168.34.52&port=80&uploaded=0&dow

nloaded=0&left=116569407&numwant=200&key=22446&compact=1&eve

nt=started HTTP/1.0

Host:

User-Agent: Bittorrent

Accept: */*

Accept-Encoding: gzip

Connection: closed

GET请求内容格式说明如下:

●info_hash:.torrent文件中的info部分的Shal校验码,共20byte。tracker

服务器通过它在发布列表中找到对应的记录。

●peer_id:BT客户机的惟一性标志,在客户机启动时产生,共20bit。

在BTV1.0中没有规定产生peer_id的算法,只要求能够保证惟一性即可。

●port:提供上传的端口号,亦即常说的监控端口。

●key:可选。一个扩展的惟一性标志,即使改变了IP地址,也可以使用

该字段标志该BT客户机。

●uploaded/downloaded:上传/下载的字节数(从客户机向tracker服务

器发送“started”开始计算),服务器可以用它来做流量分析。

●left:还需要下载的字节数。

●compact:压缩标志。假如值为1表示接受压缩格式的对等方列表,即

用6byte表示一个对等方(前4byte表示IP地址,后2byte表示端口号);

值为0表示不接受。

●event:表明客户机的状态,只能是started、completed、stopped等3

种中的一种。

除了上面这些例子中包含的参数外,可选的参数还有:

●ip:可选。IP地址,没有的话服务器会自己找到。

●numwant:可选。客户机希望从tracker服务器得到的对等方的数目。

●trackerid:可选。假如在之前的announce中包含了trackerid,将其值

设置在该处。

服务器中有个track程序来治理这些请求,得到这一串代码后就会用

info_hash来查找列表,若找到就可以下载。接着它会反连(NatCheck)客

户机的IP地址和端口来判定它是内网用户还是公网用户(像10.10.10.x这

样的地址。是无法连通的)。接下来服务器返回现在正在下载这个文件的所

有公网用户的IP地址和端口。HTTP服务器返回数据如下:

d8:completei88e10:incompletei70e8:intervali1800e12:minintervali1800e5:

peers300:

4c 0a 8b 27 58 cb 3d 3c cd 64 69 dd da 00 42 0e 92 24 83 dd c0 ec

43……

其中“300:”及其之前的部分使用的是ASCII字符集,“300:”之后的部分是

用16进制表示的二进制数。从分组内容可以看出interval的值为1800。也

就是BT客户机最多每隔1800个时间单位就与tracker服务器重新联系一次:

peers部分共有300 byte。BT客户机支持对对等方列表的压缩,”300:”之后

每 6 byte表示一个对等方,例如4c 0a 8b 27 58 cb表示的对等方是

76.10.139.39:22731对等方列表的长度为300 byte,也就是说返回的对等方

个数为50个。

BT客户机会尝试与返回的对等方列表中的部分对等方建立连接。当与某

台主机建立TCP连接后,对等方的交互过程包括以下几步:

1、 握手,通过Handshake分组实现。

2、 互换所拥有的资源的情况。通过Bitfield分组实现。

3、 互通对资源的意愿情况,包括interested、notinterested、choke、

unchoke等4种。

4、 互相请求资源,通过requestpiece、piece分组实现。

5、 断开连接。

经分析,BT应用程序的工作过程归纳如下:

●资源发布者制作.torrent文件并上载到种子发布站点,将客户机连入B

T网络并在tracker服务器上发布信息。默认情况下,BT的监听端口为688

1-6889,也可由使用者指定;tracker服务器的监听端口主要有8080、8000、

6969和2710,它们采取的连接方式都是TCP。

●BT客户机(下载者)获取.torrent文件,并向.torrent文件中提供的tr

acker服务器依次发起连接请求,直至与其中之一建立TCP连接并获取对等

方列表。使用Ethereal抓包分析,发现这些连接请求被接受的可能性比较小,

一般不到10%。

●BT客户机(下载者)获取.torrent文件,并向.torrent文件中提供的tr

acker服务器依次发起连接请求,直至与其中之一建立TCP连接并获取对等

方列表。使用Ethereal抓包分析,发现这些连接请求被接受的可能性比较小,

一般不到10%。

●BT客户机随机地向列表中的对等方发起连接请求,因为对等方列表中

对等方个数比较多,所以在短时间内发出大量TCP连接请求分组。这些分

组的源地址相同,源端口号相邻,目的地址/端口号不同,并且有相当一部

分的目的端口号为6881-6889。

●假如连接建立成功,BT对等方之间进行握手,握手过程中使用特征字

符串“BitTorrentprotocol”。然后使用interested、notinterested、choke和u

nchoke等4种分组互通对资源的意愿情况,之后通过RequestPiece和Pie

ce分组传输资源。

●资源传输完毕,关闭TCP连接。

依据BT应用程序的这些特点,本文提出了检测BT流量存在的一种方法。

该检测方法主要分4个步骤:

1、特征字符串匹配。假如分组的负载中出现了字符串

“BitTorrentprotocol”,表明有BT客户机运行,将该分组中的源IP地址

和源端口号记为{}对,凡与此{IP,port}对相关的分组均判定为BT

流量。

2、特征端口匹配。所有使用6881-6889作为端口号的分组均被判定为

BT流量。

3、tracker服务器规则。将目的端口号为8000、8080、6969和2710的

TCP分组的目的IP地址标记为tracker服务器,将源端口号为8000、8080、

6969和2710的TCP分组的源IP地址标记为tracker服务器,所有与tracker

服务器相关的分组均被判定为BT流量。

4、通过以上3步可以较准确地判定流中是否存在BT业务,但并不能保

证找出所有的BT分组。为了进一步增加判定的准确性。可使用流之间关系

信息。例如某一时间段内,相同两台主机之间的流被关联在一起;来自不同

主机的有着相同目的地址和目的端口号的流被关联起来;在某一时间段内来

自同一主机的流被关联起来等。

本文标签: 文件服务器连接分组客户机