P2P-EMULE协议翻译(一)

目录

 

1         简介

1.1    目的和范围

eMule是一个在eDonkey协议基础上建立起来的文件共享系统。这篇文档描述了eMule的网络行为,对基本的术语进行了解释,有助于大家理解协议。这篇文档也提供了eMule网络协议的完整的规格书,在附录中包含了所有消息的格式。文档中的信息来源于开放源代码的eMule客户端[2]。以下介绍文档的目的是为读者提供一个整体的背景以便读者阅读和理解这篇文档。有关eMule的更深入信息可以在这里找到[3]

 

1.2    概览

eMule网络由上百个eMule服务器和数以百万计的eMule客户端组成[1]。客户端为了得到网络服务必须连接到一个服务器,只要客户端在系统内,它到服务器的连接就一直打开。服务器提供一个集中的目录服务(类似于Napster),并且服务器不与其他服务器通讯。

 

每个eMule客户端都预先配置了一张服务器列表,和一个本地文件系统上的共享文件的列表。客户端用一条TCP连接连到eMule服务器,进行网络注册,获取请求的文件和可用的客户端的信息。eMule客户端还会使用上百条TCP连接与其他的客户端来上传和下载文件。

eMule客户端会为他每个共享文件的维护一个上传队列。需要下载的客户端加入到这个队列的底部,然后逐渐向顶部移动,直到他到达队列顶部,然后开始下载文件。一个客户端可以从多个其它客户端获取不同的数据片来下载同一个文件。客户端也可以上传多一个文件的多个数据块,即使这个文件还没有下载完成。最终,eMule拓展了eDonkey的能力,eMule允许客户端之间交换服务器,其他客户端和共享文件的信息。注意客户端以及服务器的通信都是基于TCP的。服务器用一个内部的数据库储存客户端和共享文件的信息。eMule服务器不存储任何文件,它只充当一个集中的索引来存储文件的位置。服务器还有一个附加的功能,桥接那些在防火墙之后不能接受连接的客户端,不过这个功能正被逐渐地淘汰掉,因为桥接工给服务器增加了相当多的负载。eMuleUDP增强了客户端对服务器和其他客户端的连接能力。客户端发送和接收UDP消息的能力对它正确的完成日常操作并不是必需的,它应该能够正确的工作即使防火墙阻止UDP消息的发送和接收。

1.2.1 客户端到服务器的连接

 

只要客户端一启动,就会和一台eMule服务器建立TCP连接。服务器为客户端分配一个客户ID, 这个ID只在客户端-服务器连接的生命周期中有效(注意:如果客户端获得的是高ID,那么无论它连接到任何服务器,都会获得同样的ID,除非它的IP地址变化了)。连接建立以后,客户端向服务器发送它的共享文件列表。服务器将列表存放的他的内部数据库中,通常这个数据库会存储数以百万计的可用文件和客户端信息。eMule客户端还会发送它的下载列表,其中包含了他想要下载的文件信息。第二章eMule客户端和服务器间的TCP消息交换作了详细的描述。

 

当连接建立以后,eMule服务器向客户端发送一个列表,里面包含了拥有它需要下载的文件的那些客户端的信息(那些客户端被称为)。从这里开始,eMule客户端开始和其他客户端建立连接,将会在1.2.2中介绍。

 

注意:在整个客户端的会话中,客户端与服务器的TCP连接一直保持打开。在初始的握手以后,大部分事务是由用户事件(user activity)发起:时不时地客户端会发送文件查找请求,然后接收到一个查找结果应答。一般来说在一个查找事务之后,会是一个针对某个特定文件

的查询, 应答是一个源(IP和端口)的列表,发送请求客户端就可以从中下载文件了。

 

UDP是客户端用来与服务器通讯的,服务器无需向正与它连接的客户端UDP通讯。UDP消息增强了文件查询和源查询的功能,同时提供保持在线(keep alive)功能(确保客户端的服务器列表中的服务器是有效的)。关于客户端与服务器的UDP消息交换的详细描述可以在3找到。

 

1.2.2 客户端到客户端的连接

为了下载某个文件,一个eMule客户端连接到另一个eMule客户端(一个源)。一个文件被分为多个部分,而每个部分又被进一步分块。一个客户端在下载同一个文件时,会从多个不同的其他客户端获取不同的文件块。

 

当两个客户端连接以后,它们交换能力信息,然后协商开始下载(另一方是上传)。每个客户端有一个下载队列,存放着正在等待下载文件的客户端列表。当eMule客户端的下载列表为空的时候,一个下载请求引起下载的开始(除非,举例说,这个请求是被禁止的)。当下载列表不为空的时候,一个下载请求使得请求的客户端被加到下载队列中去。客户端至少为每个下载者提供2.4kbytes/sec的下载服务,否则不会提供新服务。正在下载的客户端可能会被比它的队列优先级高的在等待的客户端挤掉。在下载会话的最初15分钟,正在下载的eMule客户端的队列优先级会提高,以阻止被挤掉。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值