分享

设计基于P2SP技术的迅雷下载干扰方案与实现

 江南兰亭馆 2012-03-23

设计基于P2SP技术的迅雷下载干扰方案与实现

摘要:迅雷是一款新型的基于P2SP 原理的网格技术下载软件,凭借“简单、高速”的下载体验,已经成为中国互联网最流行的应用服务软件之一。本文介绍了P2SP 技术原理,并以迅雷客户端下载过程的报文进行解析,该下载过程包括获取节点服务器列表和客户端Peer列表,客户端与Peer 之间的下载交互和停止退出,在此基础上,提出了一种针对非加密UDP协议的有效干扰方案,实现了对迅雷下载流量的控制。  
  关键词:P2SP;P2P;Peer 列表;干扰  
  1 引言  
  随着以 TCP/IP 技术为基础的互联网的快速发展,网络的结构日益复杂,网络的安全性、可管理性及传统应用受到了挑战。网络新应用层出不穷,网络结构从传统的C/S、B/S 模式,逐渐转向P2P 结构的应用模型。网络应用从以前简单的、消耗网络带宽很少的简单页面浏览、电子邮件、文字聊天等转变为文件下载,高清晰音视频传输、VOIP 电话、P2P 电影等数据流量激增的各种应用。通过网络人们的沟通、工作、娱乐以及各种商务活动等都变得更为便捷,然而与此同时,网络暴露的各种问题也越来越多。各种P2P,P2SP 应用占用了大量的宽带资源,在增加运营商运营成本、造成网络带宽急剧消耗的同时,还引起了很多知识产权问题。针对这些问题,各级网络监管部门加大了对网络流量的监管力度,各网络运营商也在积极寻找一些新的技术手段对网络上的各种流量进行有效的管理。在此基础上本文针对基于P2SP 原理的迅雷下载软件的下载过程进行分析,并提出了一种有效的控制迅雷下载流量的干扰方案。  
  2 基础知识  
  2.1 P2P 及P2SP 技术简介  
  P2P(Peer to Peer),用户对用户,即对等计算或对等网络,可以简单的定义成通过直接交换,共享计算机资源和服务。在P2P 网络环境中,彼此连接的计算机均处于对等的地位,每台计算机既能充当网络服务的请求者,又能对其他计算机的请求做出响应,提供资源与服务。通常这些资源和服务包括信息的共享与交换、计算资源的共享使用、存储资源的使用等[1]。
  P2SP 全称是Peer to Server&Peer,用户对服务器和用户,不同于P2P,也不同于P2S(Peer to Server),P2SP 下载方式实际上是对P2P 技术的进一步延伸,它不但支持P2P 技术,同时还通过多媒体检索数据库这个桥梁把原本孤立的服务器资源和P2P 资源整合到一起。在传统的传输技术中用户一次只能连接一个服务器进行下载,而P2SP 技术能搜索某一内容在其他服务器上镜像并将其存储于数据库中,用户能同时从多个服务器上下载内容[2],如图1 所示。在P2SP 中通过引入服务器作为资源数据来源的方法,避免了P2P 中资源提供不稳定的问题。
迅雷是 P2SP 的典型代表,它利用独特的“多媒体搜索引擎技术”,不再是单纯的服务器多线程下载或者单纯的P2P 内容传递,而是把所有P2P 资源与原本孤立的服务器及其镜像资源进行整合,可以同时从多个服务器端下载文件,这样下载速度更快,同时下载资源更丰富,下载稳定性更强。  
  2.2 P2SP 应用的工作原理  
  P2SP 应用包括两部分,第一部分是P2S,即Peer to Server,属于传统的C/S 体系结构,第二部分是P2P,即Peer to Peer,也就是P2P 体系结构,P2SP 应用通过资源服务器将C/S和P2P 两种体系结构进行了整合。首先明确,资源服务器是指专门用于自动收集存储资源信息和向客户端发放所需拥有资源的地址列表,节点服务器是指拥有该资源并可以提供下载的HTTP 或FTP 服务器。基于P2SP 文件下载应用的一般工作流程如下:(1)客户端在因特网上得到下载资源的链接,链接可以通过下载软件站点获取,比如天空软件站,也可以通过资源搜索引擎获取,比如迅雷旗下的狗狗。我们称这个链接所指向的资源为原始资源。客户端通过HTTP 或者FTP 请求原始资源,从原始资源地址获取数据。
  (2)客户端根据原始资源的名称、大小等信息计算其HASH 值,此HASH 值能够唯一地标识该资源。然后通过HASH 值向资源服务器发出请求,请求因特网上具有该资源的其他节点服务器列表和在线的客户端列表。资源服务器分别返回这两种地址列表。
  (3)客户端向节点服务器发起请求,从这些节点服务器获取数据,进行P2S 下载。
  (4)客户端向其他客户端发起请求,从这些在线客户端获取数据,进行P2P 下载。
  可以发现,P2SP 下载实际上是一种多资源多协议下载方式,可以博采众长,因而具有很高的下载速度和稳定性[3]。本文主要针对图2 中的过程(2)获取节点服务器列表和客户端Peer 列表,过程(4)客户端与Peer 之间的下载交互过程和停止退出过程进行详细分析,并提出了一种针对迅雷下载过程的干扰方案。  
  3 迅雷下载过程的分析
  我们通过使用开源的抓包工具Wireshark,对迅雷底层传输的大量现网数据包进行捕获和分析,进而得出迅雷的大致工作原理与细节。由于迅雷客户端与原始链接服务器、节点服务器的下载过程均采用标准的HTTP 或者FTP 协议进行数据的TCP 传输,在此不再赘述,我们重点关注非标准HTTP/FTP 下载。我们对迅雷软件的下载流程的分析分为获取节点服务器列表和客户端Peer 列表分析、与Peer 之间的下载交互过程分析、停止退出过程分析三部分。 
3.1 获取节点服务器列表和Peer 列表过程分析  
  在点击下载资源时,迅雷界面上会显示下载资源的原始链接地址,即图3 中的标红地址。对于资源的引用地址,选中下载资源点击右键,选择“浏览引用页”,可以看到该资源的引用地址。我们以下载资源“波斯王子时之刃.2010.TS-RMVB.rmvb”为例来说明原始链接地址。
  以下采用提取数据报文中内容来进行解析,左侧为行号,中间为十六进制数据内容,右侧为对应的ASCII 码值,后文相同,不再提及。
  00e0 00 00 00 00 00 00 48 00 00 00 68 74 74 70 3a 2f ......H...http:/00f0 2f 73 68 6f 70 2e 79 75 6e 64 6f 6e 67 6b 65 2e /shop.yundongke.
  0100 63 6f 6d 2f 72 61 72 2f e6 b3 a2 e6 96 af e7 8e com/rar/........
  0110 8b e5 ad 90 ef bc 9a e6 97 b6 e4 b9 8b e5 88 83 ................
  0120 2e 32 30 31 30 2e 54 53 2d 52 4d 56 42 2e 72 6d .2010.TS-RMVB.rm0130 76 62 vb其中的0x48 00 00 00,小字节序表示下载资源链接地址的长度,十进制为72 字节;  
  3.1.1 获取节点服务器列表过程分析  
  以下载软件 QQ2010beta3.exe 为例,客户端向迅雷资源服务器请求节点服务器HTTP 链接地址的POST 报文包含:资源ID,资源的原始链接地址,引用地址,PeerID 等。其中资源ID 是迅雷为每个资源分配20 字节长度来标识该资源,PeerID 为16 字节长度的字符串,来标识客户端的唯一性。
  迅雷资源服务器返回包含节点服务器链接地址列表的报文,部分内容如下图4。其中蓝色的四个字节为节点服务器地址的长度字段,红色字节为下载链接地址,图中只截取了三个HTTP 链接地址。Ox36 00 00 00,小字节序表示第一个节点服务器地址的长度为54 字节,之后的54 字节为第一个HTTP 链接地址。客户端获取HTTP 链接地址后,会尝试和这些节点服务器地址建立HTTP 连接,开始下载数据。  
  3.1.2 获取客户端Peer 列表过程分析  
  迅雷资源服务器也会向本地客户端返回其他在线的客户端Peer 列表,包含Peer 的PeerID,IP 地址,端口等信息,本地客户端则可以向在线的Peer 端相应的端口请求连接并下载数据,以加速迅雷资源的下载。获取Peer 列表主要通过HTTP 协议。迅雷资源服务器返回的Peer 列表部分内容如下:
  0040 90 a2 98 09 92 29 5a 78 00 00 00 26 00 00 00 10 .....)Zx...&....
0050 00 00 00 30 30 30 31 32 45 32 35 33 35 44 42 56 ...00012E2535DBV0060 5a 55 49 00 00 00 00 70 51 2e 2a 50 00 98 3a 08 ZUI........P..:.
  0070 4b 6b 70 00 00 26 00 00 00 10 00 00 00 30 30 30 Kkp..&.......0000080 32 35 42 30 30 42 41 46 33 4f 37 46 34 00 00 00 25B00BAF3O7F4...
  0090 00 75 13 5c f1 5f 2e fc 1f 08 4b 6b f0 00 00 26 .....2,.$.Kk...&其中0x26 00 00 00,表示Peer 信息的长度字段,为38 字节;0x10 00 00 00 为PeerID的长度字段,为16 字节;0x30 30 30 31 32 45 32 35 33 35 44 42 56 5a 55 49 为第一个PeerID,对应的ASCII 码值为:00012E2535DBVZUI。第二个PeerID 为00025B00BAF3O7F4。
  0x70 51 2e 2a 该四字节表示第一个Peer 的IP 地址,即为112.81.46.42;0x50 00,小字节序表示第一个Peer 的TCP 监听端口80;0x98 3a,小字节序表示第一个Peer 的UDP 监听端口,为15000。其他的Peer 信息的格式相同。  
  3.2 客户端与Peer 之间的下载交互过程分析  
  3.2.1 迅雷的CFG 文件分析  
  迅雷为每一个正在下载的资源生成一个td.cfg 文件,命名为“资源名称.td.cfg”,放置在下载资源的保存路径下。CFG 文件是日志文件,保存资源下载的一些信息[4]。当资源下载完成后,该CFG 文件会自动删除。我们利用UltraEdit 软件打开下载波斯王子时之刃时的CFG 文件的资源的信息的 0x03 00 00 00 为CFG 文件的固定开始标识,可见CFG 文件包括下载的资源名称、资源原始链接、资源的引用地址、建立连接的Peer 信息、下载到的数据信息等部分。
  客户端获取Peer 列表信息后,就开始与各Peer 端建立TCP 或UDP 连接,如果连接成功,则开始从Peer 端下载数据。  
  3.2.2 客户端与UDP 类型Peer 下载交互过程分析  
  以下表述的交互过程示例的报文,都是非加密报文,加密报文解密之后与非加密报文格式是一样的,在此不再举例说明。
  迅雷客户端与Peer 端采用UDP 传输协议下载数据的交互过程描述
  (1) 客户端请求建立连接,命令字段为0x06 00 ,实例报文如下:
  0000 32 00 00 00 06 00 00 00 00 66 2d 00 00 59 1f 9d0010 01 3e bf ae 10 00 00 00 00 00 00 01 00 00 00其中0x32 00 00 00,为迅雷UDP 数据传输标识;0x06 00 表示请求建立数据连接命令字段;0x66 2d 00 00 为同一条数据流中每个报文都含有的固定字段,不同的流此位置值不同,Peer 端也也会有这四个字节;0x59 1f 9d 01 该四字节与迅雷版本号相关,固定不变。
(2)Peer 端允许建立连接,命令字段为0x06 01,实例报文如下:
  0000 32 00 00 00 06 01 00 00 00 00 00 66 2d f4 dc 1c0010 0e 7a 04 bb 6a 3f bf ae 10 00 00 05 00 00 00其中0x06 01 为允许建立连接命令字段;ox00 00 66 2d 为同一条流中的固定字段,与客户端对应。客户端收到Peer 端的回复报文后,数据连接建立。
  (3) 客户端向Peer 端发送请求下载资源信息及自身的Peer 信息,包含资源ID,PeerID,IP 地址等,命令字段为0x12。Peer 端返回自己的PeerID 进行确认。
  (4)客户端和Peer 端协商开始数据下载。客户端从Peer 端下载数据的过程为:客户端发出数据请求报文,请求数据分片,Peer 端收到请求后,向客户端传送需要的数据。
  客户端发出的数据请求报文格式如下:
  0000 32 00 00 00 11 66 2d 00 00 59 1f 9d 01 81 fa 00 2....f-..Y......
  0010 00 cc c0 ae 10 e2 25 bb 6a 63 20 bb 6a 0a 00 00 ......%.jc .j...
  0020 00 00 00 00 00 .....
  0x11 是请求数据的命令字段,0x cc c0 ae 10 e2 25 bb 6a 为请求的数据分块信息。
  Peer 端应答请求,传送的部分数据报文格式如下:
  0000 32 00 00 00 12 00 00 66 2d f4 dc 1c 0e e2 25 bb 2......f-.....%.
  0010 6a cc c0 ae 10 00 00 05 00 7f 05 00 00 0a 00 00 j...............
  0020 00 c7 4b 29 9b 03 05 96 01 2e d3 96 6b 23 07 8d ..K)........k#..
  0030 e3 24 4b 62 37 e1 62 cc 22 31 b0 0c 6e 4c 5e 62 .$Kb7.b."1..nL^b0040 e3 8e 3a 46 8a 46 64 c3 1e f9 58 65 0d 38 02 c2 ..:F.Fd...Xe.8..
  0x12 是应答数据的命令字段,0xe2 25 bb 6a cc c0 ae 10,由请求报文中固定字段变换得到。0x7f 05 00 00 为传输数据的长度字段,从第二行开始到最后为传输的数据内容。
  3.2.3 客户端与TCP 类型Peer 下载交互过程分析  
  迅雷客户端与 Peer 端建立TCP 并下载数据的交互过程与UDP 类型Peer 下载过程类似。
  客户端与 Peer 端通过三次握手建立连接成功之后,紧接着向客户端发送请求下载资源的信息,包括资源ID,PeerID,客户端IP 地址,向Peer 端协商资源下载。Peer 端返回自身的PeerID。然后客户端向Peer 发送请求数据的标识,Peer 直接返回数据内容。
  客户端请求下载数据的报文格式如下:
0000 fe 4a 07 28 6a d6 08 dd 16 3f 00 00 00 a5 28 05 .J.(j....?....(.
  0010 0f 2f 00 00 00 01 3a 3b b2 20 00 00 00 00 00 40 ./....:;. .....@其中0x fe 4a 07 28 6a d6 08 dd 16 为加解密所需要的密钥字段,因为迅雷下载部分采用加密传输;0x3f 00 00 00 表示为TCP 传输,0x 3a 3b b2 20 为请求的数据块标识。Peer 端直接返回数据内容如下:
  0000 2b d4 8b f6 0d e2 7c 66 75 55 59 a7 33 f6 15 fa +.....|fuUY.3...
  0010 8a 2a fc aa b5 21 57 9a 6f 3f a5 24 d0 75 42 46 .*...!W.o?.$.uBF0020 8e 4c 42 91 84 ca 4b 2c bc 5a 76 20 f1 69 73 9e .LB...K,.Zv .is.
  3.3 停止退出过程分析  
  3.3.1 客户端与服务器的交互  
  在迅雷界面上点击【暂停】或【退出】时,客户端会向服务器IP125.39.72.183:9527端口或者IP125.39.72.179:9527 端口发起TCP 连接,发送传输的资源信息及正在连接中的Peer 结点信息通知给服务器,然后停止传送数据。服务器返回确认。
  客户端发给服务器的报文部分内容如下:
  0000 27 95 27 95 01 00 01 00 02 00 00 00 28 00 00 00 '.'.........(...
  0010 30 30 32 35 31 31 34 46 35 30 33 43 34 30 50 49 0025114F503C40PI0040 02 00 00 10 14 00 00 00 0d 2e d7 13 0e 8f 70 80 ..............p.
  0050 23 49 ef 23 1c 78 17 b2 16 0f 99 39 14 00 00 00 #I.#.x.....9....
  0080 00 00 00 00 07 00 00 00 28 00 00 00 30 30 31 33 ........(...00130090 44 34 30 43 34 31 45 30 44 31 58 34 00 00 00 00 D40C41E0D1X4....
  00b0 00 00 00 00 72 21 05 10 00 40 01 00 00 00 00 00 ....r!...@......
  其中0x27 95 27 95 为结束连接标志字段;0x28 00 00 00 表示客户端Peer 信息的长度为40 字节;客户端PeerID 为0025114F503C40PI;0x14 00 00 00 为资源ID 的长度;之后20字节为该下载资源的资源ID;0x07 00 00 00 小字节序表示当前建立连接的Peer 信息的个数7 个;连接的第一个PeerID 为0013 D40C41E0D1X4;0x72 21 05 10 为第一个Peer 的IP 地址,十进制为:114.33.5.16。(注:该数据帧的后续字节中包含其他6 个Peer 的信息,格式相同,此处省略。)服务器端返回的应答报文如下:
  0000 27 95 27 95 01 01 02 00 08 00 00 00 00 00 00 200010 00 00 00 00其中也包含0X27 95 27 95 断开连接的标识字段。 
3.3.2 客户端与Peer 的交互  
  在迅雷退出时,客户端同时也会向Peer 端发送一个报文,告诉Peer 端停止数据传输。
  客户端发出的报文就是停止包,非加密时报文长度为13 字节(加密时的报文长度为密钥的长度+13),报文格式如下:32 00 00 00 07 d5 16 00 00 99 cf 31 0b其中0x32 00 00 00 为UDP 迅雷标识;0x07 为停止连接命令字段;0xd5 16 00 00 99 cf 310b 该8 个字节与该数据流前面的帧中某些固定位置相同。  
  4 迅雷下载干扰方案的设计与实现  
  为了有效地控制迅雷下载所占的带宽与流量,我们设计了一个迅雷干扰控制方案,对迅雷的下载数据过程进行干扰,达到限制迅雷传输速度的目的。
  由 3.3.2 节所述,迅雷客户端与Peer 的交互过程,存在停止报文,也就是在迅雷下载页面上点击“暂停”按钮时客户端会发送一个停止报文给Peer 端,告诉Peer 端停止数据传输。该方案主要是用于模拟伪造迅雷客户端发送停止报文,让Peer 端误以为客户端请求停止传送报文,从而能达到控制数据流量的目的。
  伪造干扰包的负载数据主要由两部分组成:一是根据迅雷终止包的普遍特征预先填入的固定字段;二是从检测到的特定数据包中提取的字段。该方案主要分为初始化部分,检测部分和提取发送部分。首先在初始化部分将固定值填入待发送的数据包的特定位置,而后从检测到的符合规则的数据包中提取特定位置的字段填入待发送的数据包指定位置,在满足条件后将干扰包发送出去。程序流程图如图8 所示。
  迅雷数据下载使用TCP 或者UDP 协议,针对TCP 协议的干扰,通过直接伪造发送TCP RST(Reset)报文即可达到截断TCP 连接的目的,在此不再赘述。对于UDP 协议有加密和非加密两种报文,发送的干扰的报文是类似的,不同之处就是加密类型的报文需要首先进行解密,然后构造干扰报文,最后再对构造的干扰报文加密,发送出去。我们以非加密UDP 协议下载为例来说明干扰控制方案。  
  4.1 非加密UDP 协议的干扰控制方案设计  
  对于迅雷非加密UDP 干扰数据包的构造步骤描述如下:
  步骤一、构造干扰报文数据部分如 3.2.2 节的分析,根据原始报文的类型不同,干扰报文的构造有两种方式:(pPayload为数据包的应用层负载数据的指针)方式一:建立连接时在迅雷客户端和Peer 端建立连接的时候,会存在数据包含有0x06特征命令字段,以此作为数据包检测条件。
检测条件:(pPayload[4]==0x06) //检测捕获包的第5 个字节是否为0x06,0x06 为客户端与Peer 端的连接命令字段构造的干扰报文从UDP 负载位置开始如下:第 1~4 字节,填充0x32 00 00 00第5 字节:填充0x07第6~13 字节:填充当前捕获数据包的第10~17 字节干扰报文长度为13 字节。
  方式二: 数据传输时在数据传输过程中,会存在数据包含有0x11 或0x12 特征命令字段,以此作为数据包检测条件。
  检测条件:(pPayload[4]==0x11||pPayload[4]== 0x12)//检测捕获包的第5 个字节是否为0x11 或0x12,此两个字节为客户端和Peer 端协商下载数据的命令字段构造的干扰报文从UDP 负载位置开始如下:第 1~4 字节,填充0x32 00 00 00第5 字节:填充0x07第6~13 字节:填充当前捕获数据包的第6~13 字节干扰报文长度为13 字节。
  步骤二:计算校验和,构造报文头部字段,顺方向发出干扰报文。
  计算 UDP 校验和,IP 校验和,构造UDP 头部字段,IP 头部字段等。
  最后,经过测试在部署了干扰方案实现的PC 机上,安装迅雷客户端,进行下载资源,持续发送干扰报文,对迅雷的下载速度得到了有效的控制。
  5 结论  
  迅雷不仅支持P2P 技术,同时还通过多媒体检索数据库把原本孤立的服务器资源和P2P资源整合到了一起,在下载稳定性和速度上,比传统服务器和P2P 下载有显着提高。
  基于 P2SP 技术的应用抢占传统应用的带宽资源,造成网络拥塞,对其进行合理控制成为了网络服务提供商、企业网、校园网的共同需求。本文在对迅雷下载过程分析的基础上,提出的干扰控制方案可以对迅雷的下载速度进行合理限制,以达到均衡网络带宽的作用。
  [参考文献]
  [1] 张文,赵子铭.P2P 网络技术原理与C++开发案例[M].北京:人民邮电出版社,2008.
  [2] 丛敏景.基于P2SP 技术的网络下载工具迅雷的研究分析[D].北京:中国科技论文在线.[3] 龚元进.采用DPI 技术识别P2SP 协议[D]. TECHNOLOGY AND MARKET:Vol.16,No.12,2009.
  [4] 陈姝英.迅雷P2SP 架构及服务策略的分析[D].北京交通大学.2007 年.
  [5] 胡锋锋,温浩宇.基于MD5 的 P2SP 信息认证[J].情报杂志,2008 年,第7 期.
  [6] 徐秋杰.基于P2P 的多媒体点播系统的研究[D].天津:天津大学,2006.

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多