预览加载中,请您耐心等待几秒...
1/9
2/9
3/9
4/9
5/9
6/9
7/9
8/9
9/9

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

eMule协议指南作者:YoramKulbakandDannyBickson译者:Flakever(flake.sun@gmail.com)0译者序0.1使用指南文中出现蓝色字体,如2.1,则意为见2.1节.绿色字体为参考文献编号,原作者提供了1-5个参考文献,其后为译者添加.此处取消了原文中的这两种格式的连接功能,避免打断阅读过程.请自行使用书签.0.2版权声明原文版权由原文作者YoramKulbakandDannyBickson所有,译文版权由flakever所有.该译文可在非商业目的下任意传播和复制.对译文的修改或将其用于任何商业目的的行为需获得译者同意.0.3版本本文为>1e0.4鸣谢感谢父母给予的关怀.特别感谢女友Snow的支持,祝你GMAT800+6,^_^.1前言1.1文章简介eMule是一款基于eDonkey协议的流行文件共享应用程序,??文主要描述eMule的网络行为,并解释了理解eMule协议所需要了解的相关术语.与此同时,本文给出了完整的eMule协议指南,并在附录中表述了具体的报文编码格式.本文讨论基于一款开源的eMule客户端[2].前言向读者提供理解文本所需的背景知识.如果需要获取更多关于eMule的信息,可以参考[3].1.2概览在eMule网络世界中,全球范围内数以百计的eMule服务器和成百上千万的eMule客户端[1]导演着eMule的繁荣.客户端(Clients)为了得到eMule网络服务,需要与至少一个服务器(Server)建立连接,这个与服务器的连接会在客户端整个生命周期内长期保持.在这个体系内,服务器提供集中的索引服务(如同Napster),值得注意的是,服务器之间并不进行通信.每个eMule客户端都中预设置有两个列表,其一包括服务器地址,另一个列表则包含了其本地文件系统中的共享文件.客户端与一个eMule服务器建立一个??应的TCP连接,从而登录网络并获取关于所需文件的信息,并获取用于找寻其他可联络的客户端的信息.于此相对应,eMule客户端为了实现与其他客户端间进行文件上传与下载,与这些客户端建立了数以百计的TCP连接.每个eMule客户端为它的每个共享文件都独立得维护一个上传有限队列.一个待下载的客户端将会从这个队列底部加入,并逐步提升其在队列中的位置,直到这个它达到队列顶部,就开始下载文件.一个客户端可以从多个不同客户端下载同一个文件,从每一个客户端中下载文件的不同部分.同理,上传客户端也可以给待下载客户端上传文件的部分块,即便上传客户端没有完成整个文件的下载.eMule还扩展了eDonkey的性能,允许客户端之间交换服务器信息和共享文件及其他客户端的相关信息.值得注意的是,客户端-客户端通信和客户端-服务器通信都是基于TCP的.服务器通过其数??库保存文件和客户端的信息,它并不保存任何共享文件,它只是为共享文件的位置提供一个集中索引.服务器还有一个已经逐渐被放弃的功能,即为因有防火墙阻碍或其他原因造成的无法接受进入连接的客户端(俗称LowID客户端)提供桥接服务.但是这种桥接功能极大地增加了服务器的载荷.eMule还使用UDP来提升客户端-服务器及客户端-客户端连接的性能.但是,对于一个客户端是否能正确的传输和接受UDP报文并无强制性要求,也不会影响到常规功能,即便防火墙禁止了UDP传输也可以无故障的运行eMule.1.2.1客户端-服务器连接客户端启动时,首先与一个eMule服务器建立TCP连接,服务器向其提供一个客户端ID(详见1.3节).客户端ID的生命周期等于其客户端-服务器连接的生命周期,对于HighID而言,所有的服务器都会根据其IP计算一个固定的客户端ID,这点与LowID不同.随着连接建立,客户???向服务器上传它的共享文件列表,服务器将这个列表储存在数据库中,同时,客户端向服务器上传一个下载文件列表,其中包含了客户端需要下载的文件信息.本文第2部分详细分析了eMule的客户端-服务器TCP连接的报文交换机制.连接建立完毕后,eMule服务器向这个客户端发送一个源列表,这个列表包含了拥有这个客户端待下载文件的其他客户端的信息.这种拥有别的客户端所需求的资源或文件的客户端就称作源.从这时起,这个客户端就开始与其他客户端建立连接(见1.2.2).这个客户端-服务器TCP连接在整个客户端会话过程中一直保持开启.在初始的握手会话后,客户端-服务器会话往往由客户端的某些活动所引起,比如客户端的文件搜索请求会引起服务器的文件搜索结果应答,在搜索会话之后,客户端会发起一个对特定文件的源查询请求,此时,服务器会返回一个源列表(包括IP地???和端口号),客户端就可以使用这个列表上的信息下载所查询的文件.客户端-服务器UDP连接是客户端用于和其他未建立TCP连接服务器间建立通