1. 概述

1.1背景介绍

我们经常在用户的网络中发现大量的P2P应用,占用了网络中大量的宝贵带宽资源,用户的网络管理者也知道内网中存在这些应用,也采取了一些限制措施,但是效果并不一定理想。本文试着以数据包为基础来分析这类软件的原理,并提出相应的限制办法。

1.2 P2P 及P2SP 技术简介

P2P(Peer to Peer),用户对用户,即对等计算或对等网络,可以简单的定义成通过直接交换,共享计算机资源和服务。在P2P 网络环境中,彼此连接的计算机均处于对等的地位,每台计算机既能充当网络服务的请求者,又能对其他计算机的请求做出响应,提供资源与服务。通常这些资源和服务包括信息的共享与交换、计算资源的共享使用、存储资源的使用等。

P2SP 全称是Peer to Server&Peer,是迅雷首创的一种下载技术,并于2003年在美国申请了专利,也申请了全球专利,具有较高的技术含量。P2SP技术在下载的稳定性和下载的速度上,都比传统的P2P或P2S有了非常大的提高。用户对服务器和用户,不同于P2P,也不同于P2S(Peer to Server),P2SP 下载方式实际上是对P2P 技术的进一步延伸,它不但支持P2P 技术,同时还通过多媒体检索数据库这个桥梁把原本孤立的服务器资源和P2P 资源整合到一起。在传统的传输技术中用户一次只能连接一个服务器进行下载,而P2SP 技术能搜索某一内容在其他服务器上镜像并将其存储于数据库中,用户能同时从多个服务器上下载内容,如图1 所示。在P2SP 中通过引入服务器作为资源数据来源的方法,避免了P2P 中资源提供不稳定的问题。迅雷是 P2SP 的典型代表,它利用独特的"多媒体搜索引擎技术",不再是单纯的服务器多线程下载或者单纯的P2P 内容传递,而是把所有P2P 资源与原本孤立的服务器及其镜像资源进行整合,可以同时从多个服务器端下载文件,这样下载速度更快,同时下载资源更丰富,下载稳定性更强。

图1 P2SP原理

1.3 P2SP 应用的工作原理

P2SP 应用包括两部分,第一部分是P2S,即Peer to Server,属于传统的C/S 体系结构,第二部分是P2P,即Peer to Peer,也就是P2P 体系结构,P2SP 应用通过资源服务器将C/S和P2P 两种体系结构进行了整合。首先明确,资源服务器是指专门用于自动收集存储资源信息和向客户端发放所需拥有资源的地址列表,节点服务器是指拥有该资源并可以提供下载的HTTP 或FTP 服务器。基于P2SP 文件下载应用的一般工作流程如下:

图2 P2SP应用的工作原理图

  1. 客户端在因特网上得到下载资源的链接,链接可以通过下载软件站点获取,比如天空软件站,也可以通过资源搜索引擎获取,比如迅雷旗下的狗狗。我们称这个链接所指向的资源为原始资源。客户端通过HTTP 或者FTP 请求原始资源,从原始资源地址获取数据。
  2. 客户端根据原始资源的名称、大小等信息计算其HASH 值,此HASH 值能够唯一地标识该资源。然后通过HASH 值向资源服务器发出请求,请求因特网上具有该资源的其他节点服务器列表和在线的客户端列表。资源服务器分别返回这两种地址列表。
  3. 客户端向节点服务器发起请求,从这些节点服务器获取数据,进行P2S 下载。
  4. 客户端向其他客户端发起请求,从这些在线客户端获取数据,进行P2P 下载。

可以发现,P2SP 下载实际上是一种多资源多协议下载方式,可以博采众长,因而具有很高的下载速度和稳定性。

  1. 迅雷下载分析

2.1准备工作

先打开科来网络分析系统,同时关闭电脑上不必要的软件,以免影响分析。

开始抓包:

2.2打开迅雷开始下载过程

首先我们在人人影视上找到一个要下载的影片:

我们使用普通下载,然后自动打开迅雷的下载页面:

此时我们在科来网络分析系统里面查看TCP会话和UDP会话:

我们注意到,点击完下载的一刻,迅雷软件就会连接到人人影视的资源列表里面:

迅雷开始获取影片信息。

之后把相关的影片信息上传到了迅雷服务器上:

开始下载,第一个先在115网盘里面开始了下载,先查询了u.115.com的IP地址,然后开始了下载:

可以看到,迅雷软件通过HTTP访问的都是为了获取相关影片信息,以及一些可以通过HTTP下载的FTP下载的服务器。

我们关注一下这些TCP Other的数据:

可以看到主要是一些BT网络的连接,以便获取相关种子信息等等。

通过这样不断的种子信息交换,不同端点的主机之间建立起来的庞大的数据交互:

2.3 小结

我们注意到,在下载开始后所有信息的交互都会和迅雷的服务器发生关系,那么我们要封杀迅雷只要将这些迅雷服务器给封掉就行了。

我们在DNS日志里面可以看到下载过程中都去查询了哪些域名的IP信息:

三、总结

经过上面的分析,我们可以看到,在迅雷下载过程中,迅雷软件肯定是要连接一些服务器的,那么我们在相关设备上做相应的策略,禁止客户来访问这些域名,来配合BT禁止端口策略,可以起到较好的效果。

从数据包谈如何封杀P2SP类软件的更多相关文章

  1. [置顶] NS2中对TCP数据包和ACK包的TCP Sink类的主要实现代码详尽剖析--吐血放送

    NS2中对TCP数据包和ACK包的TCP Sink类的主要实现代码详尽剖析,限于个人水平,如有错误请留言指出! TcpSink类的recv()方法: void TcpSink::recv(Packet ...

  2. 浅谈UDP(数据包长度,收包能力,丢包及进程结构选择)

    UDP数据包长度 UDP数据包的理论长度 udp数据包的理论长度是多少,合适的udp数据包应该是多少呢?从TCP-IP详解卷一第11章的udp数据包的包头可以看出,udp的最大包长度是2^16-1的个 ...

  3. 【VS开发】浅谈UDP(数据包长度,收包能力,丢包及进程结构选择)

    UDP数据包长度 UDP数据包的理论长度 udp数据包的理论长度是多少,合适的udp数据包应该是多少呢?从TCP-IP详解卷一第11章的udp数据包的包头可以看出,udp的最大包长度是2^16-1的个 ...

  4. 用Java代码实现拦截区域网数据包

    起因: 吃饭的时间在想如果区域网内都是通过路由器上网,那如何实现拦截整个区域网的数据包,从而实现某种窥探欲. 思路:      正常是通过电脑网卡预先设置或分配的IP+网关对路由器进行通讯,比如访问百 ...

  5. iOS开发之Socket通信实战--Request请求数据包编码模块

    实际上在iOS很多应用开发中,大部分用的网络通信都是http/https协议,除非有特殊的需求会用到Socket网络协议进行网络数 据传输,这时候在iOS客户端就需要很好的第三方CocoaAsyncS ...

  6. TCP数据包的封包和拆包

    //该段博文为引用,非原创. 封包和拆包 作者:fengge8ylf  博客:http://blog.csdn.net/fengge8ylf 对于基于TCP开发的通讯程序,有个很重要的问题需要解决,就 ...

  7. Linux内核--网络栈实现分析(六)--应用层获取数据包(上)

    本文分析基于内核Linux 1.2.13 原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7541907 更多请看专栏,地址http: ...

  8. DatagramSocket收发UDP数据包

    Java的Socket通信分为TCP和UDP两种,Socket和ServerSocket类用于TCP通信,DatagramSocket用于UDP通信. 使用DatagramSocket发送UDP数据包 ...

  9. LoRaWAN协议(二)--LoRaWAN MAC数据包格式

    名词解析 上行:终端的数据发送经过一个或多个网关中转到达网络服务器. 下行:由网络服务器发送给终端设备,每条消息对应的终端设备是唯一确定的,而且只通过一个网关中转. LoRaWAN Classes L ...

随机推荐

  1. 打造属于自己的vim利器

    毋庸置疑vim很强大,然而没有插件的话对于大多数人来说他的界面是很不友好的.下面简单写一下我对vim的配置 这是我的vim配置,装的插件不是很多,对我来说已经够用.左边的侧边栏是NERD插件提供的,还 ...

  2. python中的自测语句是什么?

    if __name__ == '__main__': main() 以上

  3. Tarjian算法求强联通分量

    如果两个顶点可以相互通达,则称两个顶点强连通(strongly connected).如果有向图G的每两个顶点都强连通,称G是一个强连通图.强连通图有向图的极大强连通子图,称为强连通分量(strong ...

  4. Android Handler处理机制 ( 三 ) ——Handler,Message,Looper,MessageQueue

    在android中提供了一种异步回调机制Handler,使用它,我们可以在完成一个很长时间的任务后做出相应的通知 handler基本使用: 在主线程中,使用handler很简单,new一个Handle ...

  5. jq 获取table元素,ajax 静态填加数据

    知识点: 1.jq如何操作table->操作html内的元素 2. this 怎么使用 问题: 1.点击 修改 后,自动刷新了.判断取值,提示错误.正确出不来 2.ajax传值操作如何保密 ht ...

  6. fireworks将图片变为透明色

    如果是新建的图片,只要把画布背景设置成透明,图片完成后保存为GIF格式即可: 如果是已经存在的图片,用Fireworks将图片打开,然后按Ctrl+Shift+X,在弹出界面中格式选择为GIF.在右边 ...

  7. 如何用chrome插件使上网生活更美好-持续更新

    所有插件都可以到Chrome Web Store搜索下载 1.Read Later Fast v-1.6.8 ***刷网页的时候,有很多值得我们阅览但当时木有时间看怎么办? --加可书签啊! ***可 ...

  8. window下查看TCP端口连接情况

    window下查看TCP端口连接情况:netstat -ano -p tcp|findstr 10001

  9. swift代理使用

    代理声明: //oc调用代理 @objc(NurseListCellDelegate) protocol NurseListCellDelegate : NSObjectProtocol{ func ...

  10. RDLC报表系列--------行分组报表

    报表分组开发步骤: 先看总体效果:如图 下面就做个看看... 1.先将数据处理成如下结构 如图 2.创建数据集DataSet.xsd,创建表->右键选择添加数据表->添加行(ctrl+L ...