欢迎来到天天文库
浏览记录
ID:22705128
大小:375.21 KB
页数:16页
时间:2018-10-31
《电驴协议的具体分析》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、最主耍的参考文本是eMule协议1.0版,原文地址。分析的流程是简耍翻译加上我的思考,我的目标不在于完整的翻译,想看完整翻译的可以关注下p2p分发引擎研宄这个Bloq,他正在翻译协议文本。我的思考和点评会用红色标出、电骡eMule是基于电驴eDonkey协议的。电骡M络是山数个电骡服务器和数tfZf的电骡客户端组成的。客户端必须连接到服务器來获得网络服务,这个连接耍一直保持盅到客户端关闭。服务器提供集中的索引服务(类同Napster),不M的服务器之间没有通讯。每个电骡客户端都预先设罝好了一个服务器
2、列表和一个本地共享文件列表。客户端通过一个单一的TCP连接到电骡服务器进行网络登陆,得到想要的文件的信息和叫用客户端的信息。(这样造成丫电骡和电驴都不能完全去中心化,虽然文件存储在客户端上。)电骡客户端川几百个TCP连接与其他的客户端连接进行文件的上传和下载。每个电骡客户端为它的井亨文件维护一个上传队列。正在下载的客户端加入这个队列的底部,然后逐渐的前进,直到他们达到队列的顶端开始卜载文件。一个客户端可能从多个其他的电骡客户端下载同一个文件,从不同的客户端取得不同的部分。客户端也可以上传一个没宥完全
3、下载的文件的部分数据。(文件可以分块传输大大提高了效率,但是也造成了一些问题,比如源提前退出以后,所冇的客户端都足不完全数据的情况。)最终,电骡扩展/电驴的能力允许客户端交换关丁•服务器、其他客户端和文件的信息。(这个能力乂开始把中心的意义淡化。)注意,客户端和服务器的通信都是基于TCP的。服务器使用一个内部数据库来保存客户端和文件的信息。电骡服务器不保存任何文件,它是文件位置信息的屮心索引。服务器的另一个功能,正在受到质疑,他将作为通过防火墙连接的客户端之间的桥梁,这样的客户端不能接受引入的连接。
4、桥接功能大大的增加/服务器的负载。(这个功能让服务器承枳/过分的负扪,人人降低了服务器的能力,在没计中应该摒弃,B前应用中人部分的服务器己经关闭了这个功能,也就是说两个Lowid的客户端是不能传输数据的。)电骡使用UDP增强客户端跟服务器和其他荠户端的通信能力。但是客户端收发UDP信息的能力不是客户端H常操作强制要求的,即使防火墙限止客户端收发UDP信息,客户端仍能完美的工作。客户端到服务器的连接eMuleServer图一电骡网络图客户端一启动就会用TCP连接到一个电骡服务器。服务器给客户端提供一个
5、客户端ID,这个ID仅在客户端服务器连接的生命周期内有效(注意如果客户端是高ID,那么他在所有的服务器得到的ID都是一样的,直到他的IP地址变化为止)。连接建立后,容户端把它共享的文件列表发送给服务器。服务器把这个列农保存在它的I々部数据库这个数据库通常包括了数十万可用文件和活动客户端。电骡客户端也会发送它的下载列表,包含丫他想耍下载的文件。后面将给出电骡客户端和服务器间的TCP信息交换格式细节。连接建立以后,电骡服务器给客户端发送一个列表,这个列•表包括了那些有客广端需要的文件的客户端(这些客户端
6、叫做源)。然后,客户端就去跟那些有所需文件的客户端建立连接。注意客户端服务器的TCP连接在整个客户端会话过程屮都会保持。初始化握手之后,事务主耍是由用户活动触发的:冇吋客户端发送一个文件齊找请求给服务器,服务器会返回一个齊找结果,一个齊找事务之后通常是一个对指定文件的源齊询,这个齊询的结果是一个可以提供该文件下载的源的列表。电骡客户端用UDP来跟登录服务器以外的服务器进行通信。UDP信息的用途是增加文件搜索能力,源搜索能力,保持连接。客户端到客户端之间的连接电骡客户端一般是为了下载某个文件才会连接到
7、其他的客户端(也就是源)的。一个文件会被分为很多块。容户端会从多个容户端(源)那里下载同一个文件,从不同的源下载文件的不同部分(这样不同的部分就可以同时被K载,如果源多,下载的效率就会极窃)。当两个客户端连接后,他们会交换容量信息,然后协商开始下载(或者说足上传,这取决丁•视角)的时间。每个客户端冇一个下载队列,川來保存正在等待下载的客户端的列表。当电骡客户端的下载对列力空的时候,下载诸求会被马上接受(除非这个谘求者己经被屏蔽)。如果下载对列不为空,那么新的下载珩求就会放在队列之中。不会努力服务更多
8、的客户端,对每个下载客户端至少保持不少于2.k字节/每秒。一个正在下载的客户端的卜载地位可能被一个对列等级(queueranking)比他高的等待客户端抢占,在下载进程屮的前15分钟正在下载的客户端的队列等级会增K用來避免产生颠簸(这里说的颇簸就是说,一个客户端频繁的从下载地位切换到等待状态,然后再切换回去,这种频繁的切换叫做颠簸,这对资源足种浪费,所以要避免。)。当正在下载的客户端到达了下载队列的顶部,提供上传的客户端初始化一个连接用十把它需要的文件片断传送给它。一
此文档下载收益归作者所有