|
如何控制各种P2P软件的原理和方案【51CTO.com综合报道】一、在BT协议中有多个不同的角色: Web服务器:用于发布静态元信息文件�D�D“.torrent 终端浏览器:用于查询和获取静态元信息文件 静态元信息文件:使用bencoding编码来保存数据,包含发布文件和Tracker信息 BTTracker:对等节点信息的维护者和传输过程的调度者 下载者:希望下载文件的需求者,在下载过程中同时上传已经下载的部分 原始下载者:文件的最初拥有者,对本文件只上传不下载,在其他下载者共同拥有文件的全部内容后,它可能退出活动。 查询过程: 查询过程的参与者是:Web服务器、终端浏览器和静态元信息文件。 原始下载者拥有一个文件,愿意与大家共享;他自己或让其它相关者制作一个静态元信息文件,发布在Web服务器上;下载者所在终端通过浏览器查询到这个静态元信息文件,并通过HTTP协议GET到这个文件;从文件中解析出Tracker信息和文件信息。 控制过程: 控制过程的参与者是Tracker、下载者(包括原始下载者)。 BitTorrent拥有一个中心控制程序Tracker。它和下载者(包括原始下载者)通过HTTP协议来交换信息,下载者用HTTP的GET命令来传递信息,Track回应下载者的信息。 Tracker对所有下载者的信息进行维护,当它收到一个请求后,首先把对方的信息记录下来(如果已经记录在案,那么就检查是否需要更新),然后将一部分(并非全部,根据设置的参数已经下载者的请求)参与下载同一个文件(一个tracker服务器可能同时维护多个文件的下载)的下载者的信息返回给对方。 而下载者通过静态元信息文件中的信息,向tracker发一个HTTP的GET请求,并把它自己的信息放在GET的参数中;这个请求的大致意思是:我是xxx(一个唯一的id),我想下载yyy文件,我的ip是aaa,我用的端口是bbb;下载者还要定时向tracker发一个HTTP的GET请求,使之知道每个人的进度;假如下载者发生一个意外事件或者想要更多的peer列表,下载者会不定期重发请求。 一般来说当下载通过GET请求时使用的官方端口是Port6881~6889,如果使用6881发现占用就自动使用6882,依次类推。如果到6889端口还没有找到空闲的端口,就自动放弃。但是目前的有些BT变种使用的非官方规范的端口,这给使用ACL功能进行BT控制的交换设备或者防火墙设备带来一定的困难。 传输过程: 每个下载者都可以看成一个服务器和一个客户端,这正是P2P的真正含义。各个下载者通过从Tracker获得的其他下载者的信息(其实是服务器信息),和其他下载者建立连接,交换文件。他们将通过BT对等协议进行对称连接通讯。 传输过程的参与者是:下载者(包括原始下载者) 从服务器的角度看有几个过程:按照发送给Tracker的端口进行网络侦听,等待连接信息;对每一个连接请求建立一个Socket保持连接;接到握手消息后发送我受消息:”19BittorrentProtocol”+8个空+Sha1hash+myID。 从客户端角度来看有几个过程:向从Tracker获得的其他下载者发起一个TCP连接;向连接的服务器发送一个握手信息:”19BittorrentProtocol”+8个空+Sha1hash;握手完毕之后是长度前缀和信息轮流出现的数据流;每两分钟发送一个keepalive的空消息,防止连接超时。 从上述说明可以看出BT协议是利用HTTP协议进行传输,在其包传输过程中有些比较明显的特征字如19bittorrentPortocol+8个空Sha1hash这些特征字是和其它应用协议相区别的,因此这个是网络设备厂家控制BT的一个方法。 eMule协议原理: 电骡是一个基于电驴协议的非常流行的文件共享应用程序。电骡网络由几百个电骡服务器及数百万个电骡客户端组成。为了获取网络服务,客户端将会链接到一个服务器。与服务器的链接直到客户端已经位于系统内时才关闭。服务器履行信息索引服务,但不与其它服务器通信。 每一个电骡客户端预置了一个服务器列表及一些在本地文件系统中的共享文件。客户端用单一的TCP链接连接到服务器,登录网络,获取相得到的文件信息及可用的客户端。电骡客户端用几百个TCP链接同其它客户端通信,上传下载文件。每个电骡客户端对它共享的每一个文件维持一个上传队列。下载中的客户端加入队列的末尾,逐渐的前进,直到到达队列的顶端就开始下载它的文件。客户端可以从其它几个客户端分别下载相同的文件的不同片段。客户端也可以上传哪些它还没有完成下载文件的数据块。最后,电骡扩充了电驴的性能,允许客户端之间交换关于服务器、客户端及文件的信息。注意客户端与服务器之间的通信是建立在TCP基础上的。服务器有一个内部的数据库用于存储客户端与文件的信息。服务器不存储任何文件。它为存储的文件地址信息做集中索引。服务器的一个附加功能是作为那些在防火墙后,不能接受链接的客户端之间的桥梁,但桥梁功能给服务器增加了相当大的负载。电骡使用UDP来提高客户端与服务器及其它客户端之间的性能。客户端发送及接收UDP信息的能力对于客户端的正确的日常操作来说不是强制性的。 在eMule协议中包括了多个角色的之间的报文交互: 客户端与服务器的链接:客户端启动之后通过TCP连接到一个服务器,服务器为客户端提供一个仅在服务器与客户端连接生存期有效的客户端ID。连接确立后客户端发送它的共享文件列表给服务器,服务器将列表存储在它内部的数据库中。但客户端和服务器也进行UDP通信,主要目的是保持连接和增进检索。 客户端与客户器的链接: 一个客户端为了下载文件而链接另一个客户端(资源),文件被分成由更多片组成的块。客户端可以从几个不同的客户端下载相同文件的不同数据片段。当两个客户端链接后,它们交换容量信息,磋商开始一个下载(或上传)。 通常eMule使用本级的4662端口进行通信。 通过对eMule协议的研究:通常使用TCP进行连接时TCP层的特征字通常第1字节是e3,第5字节为46或者47;而在UDP通信时其包头和内容的长度之间的数据特征非常明显,可以通过正则表达式来表示。 二、常见的P2P协议的控制方法: 自从BT、eMule等P2P软件成为网民的最爱之后,相关的网络设备供应商和网络运营商也加快了对这些应用的控制研究,因为网络运营商有限的带宽资源经不起数以亿计的用户同时进行大容量的数据交换。目前从业界提出的解决方法来看,有以下几种方法: 1、封锁P2P软件使用的端口: 从第一节P2P软件的原理介绍中我们可以得知,BT的官方端口使用的是TCP6881~6889,而eMule使用4662端口。通常网络中核心交换机或者防火墙都可以提供访问列表控制功能,管理员通过对访问列表添加相对应的策略就可以达到控制用户使用P2P软件的目的。但是这种方法有一定的缺陷,比如目前有些BT软件已经可以实现端口的随机变换,因此这种控制方法必须不断的跟踪相关的协议的发展,随时更新相关控制策略。 2、控制TCP连接数: 因为我们知道BT、eMule这些P2P软件进行数据交换时很多过程是承载在TCP协议之上的,那么如果网络设备厂商能够控制每个用户发起的TCP连接数就能比较好的控制BT的下载,但是这种方法必须结合带宽控制才能取得好的效果。 3、带宽控制: 通常网络中如某些交换机、宽带接入服务器(BRAS)等设备都具备带宽控制功能,因此运营商可以借助这些设备对每个用户单位时间内的数据流进行控制,可以一定程度上抑制P2P软件的使用。 4、利用P2P软件的特征进行控制: 在P2P软件原理介绍中我们已经知道,对于BT、eMule等软件其报文具有比较特殊的特征,因此利用这些P2P软件协议特有的特征字进行报文传送控制也是一个比较好的方法,但其缺点是这些特征字条件的设置严格或者宽松,很有可能因为误判造成错误的控制。 5、利用专用设备进行检查: 如Cisco公司采用“深度嗅探”技术生产专门的硬件设备放置在网络出口,对所有到达公网的报文进行应用层报文分析,然后根据控制策略进行报文丢弃或者控制。但相对来说,这种设备的价格比较高昂。 三、聚生网管公司对P2P软件的控制措施: 聚生网管公司很早就注意到P2P软件对网络服务器提供商带来的挑战,并在近年来不断进行相关控制措施的完善,从现场应用来看已经取得比较好的效果。 1、根据协议端口号控制P2P软件: 聚生网管在2001年就实现了ACL功能,可以根据用户的源IP、目的IP、源端口、目的端口、设备端口、报文方向6种要素进行报文转发控制,通过对P2P软件官方协议使用的端口号进行过滤来抑制一部分P2P软件的应用。 2、TCP连接数控制: TCP连接数控制功能是2003年聚生网管产品就实现的功能,可以灵活的针对免认证用户和非免认证用户进行TCP连接数控制,同时聚生网管公司提出了对TCP80访问优先保证的措施,确保了即使用户使用P2P软件比较慢的情况也能正常浏览网页,从而从一定程度商缓解了用户对限制P2P软件的反感。 3、用户带宽控制: 聚生网管系列产品和eFlowPnPGW系列产品2001年就能够对每个用户的带宽进行n×32kbps的控制,通过和TCP连接数的控制结合一定程度上抑制了P2P软件的使用。 4、利用P2P软件特征字进行控制: 聚生网管公司在2004年根据P2P软件发展的新特点,通过对P2P软件协议特征的深入分析,提出了更为严格的控制措施,可以有效对eMule软件和大部分BT软件进行控制。尤其是通过解析各种P2P软件的传输协议特征,可以将当前流行的几乎所有的P2P软件进行有效的封堵。 通过上述措施的实现,聚生网管公司在运营商网络和校园网用户中取得了比较理想的对P2P软件控制的效果。但是聚生网管公司不满足于目前取得的成果,计划在2006年中继续对P2P软件控制进行完善,实现以下对P2P软件的控制方式: 根据网络资源情况进行P2P软件控制: 如在晚上19:00-23:00禁止用户使用P2P软件,在23:00到次日8:00允许用户使用P2P软件,这样既可以保证运营商的利益,也能够使用户能够有比较多的时间使用P2P软件。 根据应用协议实现对用户带宽的控制: 目前聚生网管系列产品对于用户带宽控制是所有应用业务采取一个总的带宽限制,这样对某些ISP来讲还不能完全满足用户的要求。因此有必要根据管理员的需要,灵活设置不同应用协议的带宽。 责编: 微信扫一扫实时了解行业动态 微信扫一扫分享本文给好友 著作权声明:kaiyun体育官方人口
文章著作权分属kaiyun体育官方人口
、网友和合作伙伴,部分非原创文章作者信息可能有所缺失,如需补充或修改请与我们联系,工作人员会在1个工作日内配合处理。 |
最新专题 |
|