对BitTorrent通信协议的分析与检测( 四 )


3.3Peerwire协议
BT客户机会尝试与返回的对等方列表中的部分对等方建立连接,下面以对等方列表中的221.234.59.149:31279为例,分析一下对等方之间的交互过程 。如图8所示,只分析TCP之上的部分 。约定对等方A指的是221.234.59.149:31279,对等方B指的是192.168.0.179:1504 。
图8; 对等方间通信过程

;建立TCP连接之后,对等方之间的交互过程包括以下几步:
(1)握手,通过Handshake分组实现 。在本例中通过分组2480和2481实现 。
(2)互换所拥有的资源的情况 。通过Bitfield分组实现 。该例中,对等方B尚未下载任何资源,故公布资源拥有情况的只有对等方A 。对等方A通过分组2487公布了自己的资源拥有情况 。
(3)互通对资源的意愿情况,包括interested、notinterested、choke、unchoke等4种 。本例中通过分组2490、2493实现 。
(4)互相请求资源,通过requestpiece、piece分组实现,例如本例中的分组2495、2503、2696 。
(5)断开连接 。因Peerwire协议使用了TCP方式,对等方A与对等方B断开连接时,只需要断开它们之间的TCP连接即可 。
分组2495是一个requestpiece分组,其结构如图9所示,其中需要的参数有pieceindex(片标志)、beginoffset of piece(片起始偏移地址)、piece length(片长度) 。分组2696是一个answer piece分组(也称为piece分组),其结构如图10所示,其中包括piece index(片标志)、begin offset of piece(片起始偏移地址)、date(数据) 。
图9; requestpiece分组的结构
图10; piece分组的结构
4、一种检测BT流量的方法
经分析,BT应用程序的工作过程归纳如下:
●资源发布者制作.torrent文件并上载到种子发布站点,将客户机连入BT网络并在tracker服务器上发布信息 。默认情况下,BT的监听端口为6881-6889,也可由使用者指定;tracker服务器的监听端口主要有8080、8000、6969和2710,它们采取的连接方式都是TCP 。
●BT客户机(下载者)获取.torrent文件,并向.torrent文件中提供的tracker服务器依次发起连接请求,直至与其中之一建立TCP连接并获取对等方列表 。使用Ethereal抓包分析,发现这些连接请求被接受的可能性比较小,一般不到10% 。
●BT客户机(下载者)获取.torrent文件,并向.torrent文件中提供的tracker服务器依次发起连接请求,直至与其中之一建立TCP连接并获取对等方列表 。使用Ethereal抓包分析,发现这些连接请求被接受的可能性比较小,一般不到10% 。
●BT客户机随机地向列表中的对等方发起连接请求,因为对等方列表中对等方个数比较多,所以在短时间内发出大量TCP连接请求分组 。这些分组的源地址相同,源端口号相邻,目的地址/端口号不同,并且有相当一部分的目的端口号为6881-6889 。
●假如连接建立成功,BT对等方之间进行握手,握手过程中使用特征字符串“BitTorrentprotocol” 。然后使用interested、notinterested、choke和unchoke等4种分组互通对资源的意愿情况,之后通过RequestPiece和Piece分组传输资源 。
●资源传输完毕,关闭TCP连接 。
依据BT应用程序的这些特点,本文提出了检测BT流量存在的一种方法 。该检测方法主要分4个步骤:
●特征字符串匹配 。假如分组的负载中出现了字符串“BitTorrentprotocol”,表明有BT客户机运行,将该分组中的源IP地址和源端口号记为{IP.port}对,凡与此{IP,port}对相关的分组均判定为BT流量 。
●特征端口匹配 。所有使用6881-6889作为端口号的分组均被判定为BT流量 。
●tracker服务器规则 。将目的端口号为8000、8080、6969和2710的TCP分组的目的IP地址标记为tracker服务器,将源端口号为8000、8080、6969和2710的TCP分组的源IP地址标记为tracker服务器,所有与tracker服务器相关的分组均被判定为BT流量 。