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. .NET 分页

    .net分页 1.存储过程create procedure 存储过程名( @pageIndex int,                         //第几页 @pageSize int     ...

  2. Android分步注册,Activity由B返回A修改再前往B,B中已填项不变

    某日突然想到标题问题,一般来说返回上一个Activity,当前Activity应该自动销毁.要想保留值,便想到用bundle传递的方式 最后功能是实现了,但感觉方法很笨. 主要代码如下: packag ...

  3. 瓶颈生成树与最小生成树 POJ 2395 Out of Hay

    百度百科:瓶颈生成树 瓶颈生成树 :无向图G的一颗瓶颈生成树是这样的一颗生成树,它最大的边权值在G的所有生成树中是最小的.瓶颈生成树的值为T中最大权值边的权. 无向图的最小生成树一定是瓶颈生成树,但瓶 ...

  4. Stanford机器学习笔记-1.线性回归

    Content: 1. Linear Regression 1.1 Linear Regression with one variable 1.1.1 Gradient descent algorit ...

  5. 渐进记号 Asymptotic Notations-------geeksforgeeks 翻译

    我们已经简单的讨论了下渐进分析以及最坏,平均和最佳情况的分析.渐进分析的主要思想是分析算法的效率,不用依靠计算机的具体快慢,不需要实现这个算法,也不需要真正去计算时间.渐进记号是一种数学的工具来表示渐 ...

  6. 第1章 UML基础:类的关系

    1. 类的关系 1.1 继承和实现:继承表示有父子关系 1.2 依赖:(use–a),表示一个类要使用(use)另一个类. (1)类图 (2)三种依赖方式:函数参数或返回值.局部变量和静态成员变量或函 ...

  7. Unity-WIKI 之 SplashScreen

    组件功能 在屏幕上的一个启动画面消失,等待几秒钟(或等待用户输入),然后淡出,下一个场景加载. 组件源码 using UnityEngine; using System.Collections; // ...

  8. 解决svn的working copy locked并且cleanup恢复不能的情况

    产生这种情况大多是因为上次svn命令执行失败且被锁定了. 如果cleanup没有效果的话只好手动删除锁定文件. cd 到svn项目目录下,然后执行如下命令 del lock /q/s 就把锁删掉了.

  9. 最常用的DOS命令

    ping:利用它可以检查网络是否能够连通,用好它可以很好地帮助我们分析判定网络故障,如ping 127.0.0.1tracert:跟踪路由,查询到相应网站的服务器之间所需经过的路由器个数,如trace ...

  10. java9-8 局部内部类

    1. 局部内部类 A:可以直接访问外部类的成员 B:在局部位置,可以创建内部类对象,通过对象调用内部类方法,来使用局部内部类功能 面试题: 局部内部类访问局部变量的注意事项? A:局部内部类访问局部变 ...