eMule协议规范全文[中文版本]

2019-01-26 19:10

eMule协议规范

本文档翻译自:

Yoram Kulbak and Danny author:ganghust@gmail.com

Bickson

《The

eMule

Protocol

Specification》

部分翻译和内容材料来源于网络,一并向原作者表示感谢。

eMule协议规范 ............................................................................................................................... 1

1 简介 ............................................................................................................................... 4

1.1 目的和范围 ................................................................................................................. 4 1.2 概述 ............................................................................................................................. 4

1.2.1 客户端到服务器的连接 ........................................................................... 4 1.2.2 客户端到客户端的连接 ........................................................................... 5 1.3 客户ID .................................................................................................................... 6 1.4 用户ID .................................................................................................................... 7 1.5 文件ID .................................................................................................................... 7

1.5.1 文件哈希 ................................................................................................... 7 1.5.2 根哈希 ....................................................................................................... 7 1.6 eMule协议扩展..................................................................................................... 8 1.7 软件和硬件限制 ...................................................................................................... 8 2 客户端服务器的TCP交流 .............................................................................................. 8

2.1 建立连接 ................................................................................................................. 8 2.2 连接启动时消息交换 ............................................................................................ 10 2.3文件搜索 ................................................................................................................... 12 2.4 回调机制 ................................................................................................................ 12 3 客户端服务器的UDP交流 ............................................................................................ 13

3.1 服务器保持连接和状态信息 .................................................................................. 13 3.2 增强文件搜索 .......................................................................................................... 15 3.3 增强文件源搜索 ...................................................................................................... 15 4 客户端到客户端的TCP交流 ........................................................................................... 16

4.1 初始的握手 .............................................................................................................. 16 4.2 安全的用户身份认证 .............................................................................................. 17

4.2.1 信用系统 ....................................................................................................... 17 4.3 请求文件 .................................................................................................................. 18

4.3.1 基本消息交换 ............................................................................................... 18 4.3.2 没找到文件的情景 ....................................................................................... 19 4.3.3 加入上传队列 ............................................................................................... 19 4.3.4 上传对列管理 ............................................................................................... 20 4.3.5 到达上传队列的顶部 ................................................................................... 20 4.4 数据传输 .................................................................................................................. 21

4.4.1 数据包 ........................................................................................................... 21 4.4.2 数据传输顺序 ............................................................................................... 22

1

4.4.3 选择块下载 ................................................................................................... 23 4.5 浏览共享的文件和文件夹 ...................................................................................... 24 4.6 交换片哈希集 .......................................................................................................... 25 4.7 取得文件预览 .......................................................................................................... 26 5 客户端到客户端的UDP连接 ......................................................................................... 26 6附录详细的消息编码格式 .................................................................................................. 28

6.1 一般消息编码要点 .................................................................................................. 28

6.1.1 字节序 ........................................................................................................... 28 6.1.2 消息头 ........................................................................................................... 28 6.1.3 消息标签 ....................................................................................................... 28 6.2 客户端服务器TCP消息 ........................................................................................ 29

6.2.1 登录 ............................................................................................................... 29 6.2.2 服务器消息 ................................................................................................... 30 6.2.3 ID改变 .......................................................................................................... 31 6.2.4 文件提供 ....................................................................................................... 31 6.2.5 获得服务器列表 ........................................................................................... 33 6.2.6 服务器状态 ................................................................................................... 33 6.2.7 服务器列表 ................................................................................................... 34 6.2.8 服务器身份证明 ........................................................................................... 34 6.2.9 搜索请求 ....................................................................................................... 35 6.2.10 搜索结果 ..................................................................................................... 37 6.2.11 获得源 ......................................................................................................... 38 6.2.12 已找到的源 ................................................................................................. 39 6.2.13 回调请求 ..................................................................................................... 39 6.2.14 被请求回调 ................................................................................................. 40 6.2.15 回调失败 ..................................................................................................... 40 6.2.16 消息被拒绝 ................................................................................................. 41 6.3 客户端服务器UDP消息 ........................................................................................ 41

6.3.1获取源 ............................................................................................................ 41 6.3.2 发现的源 ....................................................................................................... 42 6.3.3 状态请求 ....................................................................................................... 42 6.3.4 状态回应 ....................................................................................................... 43 6.3.5 搜索请求 ....................................................................................................... 44 6.3.6 搜索回应 ....................................................................................................... 44 6.3.7 服务器描述请求 ........................................................................................... 45 6.3.8 服务器描述回应 ........................................................................................... 45 6.4 客户端到客户端TCP消息 .................................................................................... 45

6.4.1 Hello ............................................................................................................... 46 6.4.2 Hello 回应 ..................................................................................................... 47 6.4.3 发送文件块 ................................................................................................... 47 6.4.4 请求文件块 ................................................................................................... 48 6.4.5 下载结束 ....................................................................................................... 49 6.4.6 改变客户ID.................................................................................................. 49 6.4.7 聊天消息 ....................................................................................................... 50

2

6.4.8 块 hashset 请求 ........................................................................................... 51 6.4.9 块 hashset 回应 ........................................................................................... 51 6.4.10 开始上传请求 ............................................................................................. 52 6.4.11 接受上传请求 ............................................................................................. 52 6.4.12 取消传送 ..................................................................................................... 53 6.4.13 Out of part requests ...................................................................................... 53 6.4.14 文件请求 ..................................................................................................... 54 6.4.15 文件请求回答 ............................................................................................. 54 6.4.16 找不到文件 ................................................................................................. 55 6.4.17 被请求的文件ID ........................................................................................ 56 6.4.18 文件状态 ..................................................................................................... 56 6.4.19 Change slot ................................................................................................... 57 6.4.20 队列等级 ..................................................................................................... 57 6.4.21 查看共享文件 ............................................................................................. 57 6.4.22 查看共享文件回答 ..................................................................................... 58 6.4.23 查看共享文件夹 ......................................................................................... 58 6.4.24 查看共享文件夹回答 ................................................................................. 59 6.4.25 查看共享文件夹内容 ................................................................................. 59 6.4.26 查看共享文件夹内容回答 ......................................................................... 60 6.4.27 查看共享文件夹或内容拒绝 ..................................................................... 61 6.5 客户端到客户端TCP扩充消息............................................................................. 61

6.5.1 eMule信息..................................................................................................... 61 6.5.2 eMule 信息回答 ............................................................................................ 63 6.5.3 发送压缩的文件块 ....................................................................................... 63 6.5.4 队列等级 ....................................................................................................... 64 6.5.5 文件信息 ....................................................................................................... 65 6.5.6 源请求 ........................................................................................................... 65 6.5.7 源回答 ........................................................................................................... 66 6.5.8 安全身份认证 ............................................................................................... 67 6.5.9 公匙 ............................................................................................................... 68 6.5.10 签名 ............................................................................................................. 68 6.5.11 预览请求 ..................................................................................................... 69 6.5.12 预览回答 ..................................................................................................... 69 6.6 客户端到客户端UDP消息 .................................................................................... 70

6.6.1 重复询问文件 ............................................................................................... 70 6.6.2 重复询问回应 ............................................................................................... 70 6.6.3 队列满 ........................................................................................................... 71

3

1 简介 1.1 目的和范围

eMule是流行的文件共享程序,基于eDonkey协议。这份报告描述了eMule的网络行为和解释了理解该协议所需的基本术语。本报告也给出了eMule网络协议的完整规范,包括一个附录,它提供了消息格式。这份文档的信息是基于开源的eMule客户端。接下来的简介目的是提供基本的背景知识,让读者阅读和理解这份文档。关于eMule的更多消息在这里找到。

1.2 概述

eMule网络是由上百个eMule服务器和几百万个eMule客户端组成。客户端必须连接到一个服务器来取得网络服务,只要该客户端在系统中,服务器连接保持打开状态。这些服务器主要执行集聚索引服务(好像在Napster),相互间不联系。 每个eMule客户端都预配置了一个服务器列表和当地文件系统的共享文件列表。客户端用单独的TCP连接到一个eMule服务器登录到网络中,获得想得到的文件信息和客户端。eMule客户端也用几百个TCP连接到其他客户端进行上传和下载文件。每个eMule客户端对它的每个共享文件都维护着一个上传队列。要下载的客户端先加入到队列的底部,然后逐渐前进直到到达队列的顶部并开始下载它的文件。一个客户端可以从几个不同的eMule客户端中下载同一个文件的不同的文件块。客户端也可以上传它还没有完成的文件的文件块。最后,eMule扩展了eDonkey的能力,允许客户端之间交换关于服务器、其他客户端和文件的信息。注意,客户端和服务器的交流都是基于TCP的。

服务器使用了一个内部数据库,用来存储关于客户端和文件的信息。一个eMule服务器不存储任何文件,它为关于文件位置的存储信息作集聚索引。服务器的另一个功能,开始变得被抗议,是连接由于通过防火墙连接而无法接收到连接的两个客户端。这个连接功能增加了服务器的负载。相对于服务器和其他客户端,eMule使用UDP来增强客户端的能力。客户端发送和接收UDP信息的能力在日常使用中不是强制使用的,当有防火墙阻止它收发UDP信息时也能无瑕疵的运行。

1.2.1 客户端到服务器的连接

在开始启动时,客户端用TCP连接到一个eMule服务器。服务器提供一个客户ID给客户端,在整个客户端-服务器连接的生命周期里,它是有效的(注意,如果客户端有一个高ID,它会从所有的服务器中接收到相同的ID,直到它的IP地址改变)。在连接建立之后,客户端发送它的共享文件列表到服务器中。服务器把这个列表存储到它的内部数据库中,这个数据库

4

通常包含了成百上千有效的文件和活动的客户端。eMule客户端也发送它的下载列表,包含着它想下载的文件。第二章提供了eMule客户端和服务器TCP信息交换的详细描述。 建立连接之后,eMule服务器给客户端发送用有它想下载的文件的其他客户端列表(这些客户端称作“源”)。从这点起,eMule客户端开始与其他客户端建立连接,如1.2.2所述。

注意,在整个客户端会话期间,客户/服务TCP连接一直保持连接状态。初次握手后主要是 用户活动激发事务:有时,客户端发送文件搜索需求,由搜索结果回应,一个搜索事务一般在对源中指定文件查询之后,用源(IP和端口)列表来回答这个查询,查询者可以从这列表中下载文件。

客户端和它没有连接的服务器的交流是用UDP。UDP信息的目的是增强文件搜索,增强源搜索,最后保持连接状态(确保客户端服务器列表中的eMule服务器有效)。在第三章中可找到更多的关于客户-服务UDP信息交换的细节。

1.2.2 客户端到客户端的连接

一个eMule客户端连接到另一个eMuel客户端(源)是为了下载文件。一个文件分成很多部分,进一步的碎片。客户端可以从几个(不同的)客户端中下载同一个文件来分别获得不同的文件碎片。

5


eMule协议规范全文[中文版本].doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:都可coco奶茶加盟 抢占饮品市场份额吸金赚不停

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: