BT协议的工作过程
、BT协议的工作过程
该系统主要由三个关键组件构成:Torrent文件格式、Tracker基于HTTP/HTTPS机制以及Pairwise握手机制(基于TCP)。具体而言,在Tracker部分中,HTTP/HTTPS主要用于客户端与服务器的数据同步;而Pairwise握手则负责多个客户端之间的通信。
通过基于Ethereal的跟踪分析技术,在文件下载过程中对BT协议的具体交互过程进行了系统性研究,并严格遵循相关的协议规范完成了相关工作流程图的绘制(如图3所示)。
图3 BT协议各组件的工作时序
1 .torrent文件的结构
图4展示了在下载过程中使用的.torrent文件的主要内容部分。该编码方案设计简洁高效,并且能够有效地组织大量信息以便于后续访问和管理。在.b/:/b/tor文件中定义的整数(integer)、列表(list)和字典(dictionary)分别以i/l/d作为起始标记符,并以e作为结束标记符。其中,在.b/:/b/tor文件中定义的整数(integer)、列表(list)和字典(dictionary)分别以i/l/d作为起始标记符,并以e作为结束标记符。对于bytes strings类型,则不使用任何标记符,并采用<十进制长度>: <字符串>的形式表示。这些四种数据类型的嵌套组合构成了整个.b/:/b/tor文件的内容结构。
图4 .torrent文件的内容
其中的一些主要成份如下:
●announce:tracker服务器的URL,本例中为http://tracker.cnxp.com:8080/announce。
●announce-list:可选项。备用 tracker 服务器的 URL 列表(如 http://tracker.cnxp.com:8080/announce 和 http://btfans.3322.org:6969/announce 等)
创建日期字段允许用户指定 torrent 文件的生成时间。例如,在本示例中,默认值设置为 1152105243(遵循 UNIX 时间标准)。
●comment:可选。.torrent文件制作者添加的任意格式的说明。
由可选属性指定的.torrent文件制作工具为... 在本例中使用了该软件(BitComet/0.67)。
●encoding:可选。发布的资源使用的编码方式,在本例中使用的是GBK。
发布信息时涉及的文档内容
3.国语DVDSCR中字.rmvhe”,piece长度为262 144 byte.piece个数为34 780。
.torrent文件中除了这些之外还包含其他一些可选项 只要它们符合B编码方式就能被客户端识别 这里不再累述
3.2 tracker HTTP/HTTPS协议
BT客户机按顺序依次向位于.torrent中的tracker服务器发起连接请求,并用于获取正在下载该文件的互访端点信息(主要包括IP地址和监听端口)。当通过查询成功检索到互访端点列表时,则会立即关闭当前的连接,并尝试与列表中的每个互访端点进行建立连接;如果查询未成功,则会继续尝试下一个tracker服务器。
相应的服务器位置及其对应位置的具体数值如图5所示
图5 BT客户机与BT服务器的交互过程
考察这些数据段后可见:包括经复传确认的分组编号:G_{\text{SYN}}^{\text{ACK}}(1)(即第G_{\text{SYN}}^{\text{ACK}}(1)=166)、G_{\text{ACK}}^{\text{TTL}}(1)(即第G_{\text{ACK}}^{\text{TTL}}(1)=168)、以及经两次往返确认后被接收的数据段编号:G_{\text{SYN}}^{\text{ACK}}(2)和G_{\text{ACK}}^{\text{TTL}}(2)(分别对应第199和第201个数据段)。
753号分组中的HTTP部分内容如图6所示,使用*号代替空格以便于分析。
图6 753号分组中的HTTP部分内容
其中一些成分的含义如下:
●info_hash:.torrent文件的info信息区包含一个长度为20字节的Shal校验值, tracker服务器利用该信息在其发布列表中查找相应的记录
peer_id是在BT客户机启动时生成的独特标识符,在此过程中共计20位二进制位被赋值。而BT V1.0并未对生成peer_id的方法作出具体规定,仅要求确保其唯一性即可。
●port:提供上传的端口号,亦即常说的监控端口,这里是6641(可自行设定)。
●key:可选属性。一个增强型唯一标识符,在IP地址发生变更的情况下仍可用于标记该网络设备的连接关系。
●transferred data:自客户端向tracker server发送“started”指令后所上传/下载的字节数量(单位为byte), tracker server可据此进行流量分析。
●left:还需要下载的字节数。
标志 compact:用于控制是否接收以 ... 形式编码的相邻节点列表。若设置其值为 1 则允许接收由 6 个字节组成的相邻节点列表;当设置其值为 0 时不接收
事件域:表示客户端的状态;该字段仅包含started、completed和stopped三种状态之一。
除了上面这些例子中包含的参数外,可选的参数还有:
●ip:可选。IP地址,没有的话服务器会自己找到。
●numwant:可选。客户机希望从tracker服务器得到的对等方的数目。
●tracker ID:可选参数。当消息body中包含有tracker ID字段时,则需将其值配置到这里。
track进程用于管理这些请求。一旦获取到这段代码后,则利用info_hash进行列表查找。如果找到则可下载。随后服务器将返回所有当前正在下载该文件的公网用户的IP地址及端口信息,并将其分为组号754和755。HTTP之上的部分数据如图7所示。
图7 HTTP之上的部分数据
其中基于ASCII字符集[''1998:'']及其之前的部分采用了字符编码方式。其后部分则采用十六进制表示为二进制数值。经分析可知interval参数设置为1800个时间单位。也就是说BT客户机会每隔一段时长与tracker服务器重联一次:peers字段占用内存空间为1998字节。经研究发现BT客户机支持对等方列表进行压缩编码处理。在754、755号分组返回的数据中每个节点占用6字节空间具体表示如下:da40 91 e8 41 af对应地址218.64.145.232:16815;dd ea 3b 9f 7a 2f对应地址221.234.59.149:31279等等。经计算得出该份数据中包含333个有效的网络节点信息。
