您的位置 首页 > 新农资讯

电骡连接,电骡安装

一、概述

Emule是一款基于p2p技术构建的文件共享软件。与传统文件共享的区别包括:

共享文件不是在中央服务器上等待客户端下载,而是分布在所有参与者的硬盘驱动器上。所有参与者形成一个虚拟网络,每个客户端都可以从该虚拟网络内的任何客户端计算机下载文件。同时,每个客户还可以与其他客户共享自己的文件。 Emule系统有多个服务器,但这些服务器存储的不再是文件,而是共享文件的目录或地址。每个客户端从服务器获取或搜索共享文件的地址,加入的客户端越多,下载速度就越快。 Emule 基于多点文件传输协议构建。电骡网络由服务器端和客户端两部分组成。服务器端是客户端连接的桥梁,可以下载用户进行搜索查找。服务器列表的组织方式类似于电话簿,客户端参考它来获取文件所有者所需的客户端信息。在实际的文件下载过程中,下载的文件并不经过服务器端。架构如下图所示。

图1 仿真架构

搜索:每个客户端连接到作为主服务器的服务器。连接时,客户端告诉主服务器它共享了哪些文件以及其他信息,例如它的IP 地址。因此,每个服务器都会记录登录到该服务器的所有上述信息。当该服务器执行搜索时,它会将其与记录中的已知信息进行匹配,并将搜索结果反馈给搜索客户端。当客户在搜索列表中选择所需的文件并开始下载时,Emule 会根据文件内容记录文件大小、文件名和另一个特殊的哈希值。一旦Emule 获得此信息,它就会向所有添加的服务器发送请求,以检索具有相同哈希值的文件。服务器返回有关持有该文件的用户的信息。

下载:当客户端选择要下载的文件时,首先收集拥有该文档的客户端列表。首先,它询问主服务器上所有登录的用户是否拥有该文件。然后连接并检查另一台服务器上登录用户拥有的文件的客户端列表。当它发现其他客户端拥有该文件时,它会要求每个客户端发送该文件的不同部分。直到最终文件由这些各个部分组装成一个完整的文件。 找到下载源(另一个客户端)后,通过P2P 与客户端直接对话来完成下载。在此期间,没有数据流经服务器。当emule 客户端下载文件时,它会使用许多TCP 连接来连接到其他客户端,并且可以同时连接到许多不同的客户端并从这些客户端检索文件的不同片段。在客户端下载文件之前,也可以在下载过程中将下载的片段上传到其他客户端。 Emule 的服务器使用内置数据库来存储有关客户端及其文件本身的信息。尽管它是下载或上传的文件,但它充当客户端拥有的许多文件的中心索引。

2.客户端/服务器TCP通信

2.1 建立连接

Emule 架构允许客户端仅与一台服务器建立连接。建立后,服务器给客户端一个客户端ID。该ID 用于在后续会话中唯一标识客户端。客户端ID 在整个会话期间始终存在。客户端ID分为高ID和低ID。如果客户端无法接受传入连接,则它可能位于NAT 或代理服务器后面。机器可以自由地允许其他客户端连接到其本地TCP 端口(默认4662)。将分配更高的ID。

高ID计算公式:

假设IP 为x.y.z.w。

ID=x+2^8*y+2^16*z+2^24*w

此外,Low id 始终小于16777216 (0x1000000)。

下面分别介绍高ID和低ID客户端与服务器的连接过程。

高ID连接流程:

客户端与服务器建立TCP 连接并发送登录消息。这导致服务器使用第二个TCP 连接来检查客户端是否能够接受其他客户端发起的连接。 - 与客户端的握手完成。 然后服务器关闭第二个连接并向客户端发送更改ID 消息,完成客户端与服务器的握手。其流程如下图所示。

图2 高ID 登录序列

Low ID连接过程:客户端也与服务器建立连接,但是服务器一旦与客户端建立连接,通常会以“发生警告”的形式向客户端发回一条消息。请检查您的网络设置。将显示”消息。最终,服务器将继续发送ID更改消息。如下图所示。

图3 Low ID登录顺序

请注意,Emule 的服务器配置有两个限制。 硬限制和软限制。

硬限制=软限制。当连接到服务器的客户端数量达到软限制时,服务器将停止接受低ID 客户端的连接。这个时间如下图所示。

图4 会话拒绝序列

2.2 交换连接发起消息:

cs 一旦连接成功建立,客户端和服务器会互相交换一些设置消息,客户端向服务器提供一个列表,记录其共享文件,并提示服务器发送该列表请求。最后,客户端请求下载特定文件,查找拥有所请求文件的其他客户端,并发送列表。这些客户端将返回给发出请求的客户端,如下所示。

图3 连接启动时序

回调机制:

设计这种机制的目的是为了克服低id客户端无法接受外部连接的缺点。实现原理非常简单。假设a和b连接到同一个服务器,a需要一个文件,并且这个文件存储在b上,但是b的ID较低,因此a向服务器发送回调请求,请联系我们。服务器通知b主动连接,并向b发送回调请求,提供a的IP和端口。这允许b 在没有服务器干预的情况下与a 建立连接。

图4 回调时序

3. 客户端/服务器UDP通信

3.1 服务器保活和状态信息

客户端定期检查其服务器列表上的服务器状态。这是通过客户端发送两条消息来完成的。 UDP服务器状态请求消息包含随机数。如果反射值与原始值不匹配,则客户端维护一个计数器,每次发送状态请求时计数器加1。服务器消息会重置该计数器。当该计数器的值达到预设限制时,服务器被认为不可用,服务器状态请求响应包括当前用户数和索引文件数。服务器和服务器软件/硬件

限制:服务器描述响应包括服务器名称和简短的描述字符串。整个流程如下图所示。

图5 UDP保活序列

3.2 增强的文件搜索

Emule客户端可以使用UDP服务来增强其文件搜索能力。如果客户端尝试下载文件,但检索到的源数量小于可配置值(默认100),它会定期向服务器列表中的所有服务器发送UDP源检索数据包,并请求更多的源。的。这个文件。

4. 客户端之间的TCP通信

客户端成功与服务器建立连接并从服务器获取所需的文件源信息后,clinet 必须与源列表中的其他客户端进行交互。这意味着您必须与每个源建立TCP 连接。如果在一定时间(默认40 秒)内没有事件到达(没有读取或写入)套接字或客户端关闭连接,则TCP 连接无效。

4.1 初始握手

这种握手是对称的,发送的信息包括标识、版本和能力信息。一个是hello 消息,另一个是eDonkey 协议的一部分。电骡信息消息。它是Emule 协议本身的固有部分。握手过程如下:

图6 电骡客户端初始握手

4.2 信用体系

信用系统旨在允许用户彼此共享更多文件。当客户端将文件上传到对等点时,下载对等点会根据接收到的数据量更新其信用值。该信用值对应于客户端下载并保存的特定信用值。仅当向客户端提供上传的对等方请求从客户端下载文件时,此信用才有效。

学分最少为:

1. 上传总量*2/下载总量

如果download_total 为0,则整个表达式设置为10。

2. sqrt(上传总数+2):

如果uploaded_total 为1 MB,则此表达式设置为1。

注意credit值的范围是1=credit=10。

4.3 请求文件

客户端A 发送文件请求消息,后跟请求的文件ID 消息。客户B

这两条消息的响应是:前者以文件请求响应消息进行响应,后者以文件状态消息进行响应。该协议还可以扩展以向该消息序列添加两个新消息。请求和来源答案。通过这两条消息,可以将B的源列表发送给A。同时,B也可以将下载的文件片段发送给A。如果B没有A请求的文件,则B不发送文件请求响应消息,而是发送文件未找到消息。

图7 文件请求失败

4.4 队列管理

2. 队列已满:表示发送方队列已满。

3. 文件未找到:发送方没有客户端请求的文件。

每20 分钟就会向您添加到下载队列中的所有发件人发送一条重复问题消息。

图11 重新确认文件的消息

六。消息编码

所有消息均以小端格式编码。

所有消息都有一个6 字节标头:

头部结构如下:

1字节协议id:edonkey为0xe3,emule为0xc5。

消息大小为4 字节。如果消息不包含有效负载,则此大小为0。

1字节的消息类型字段是唯一的消息ID。

留言标签:

标签是格式结构(类型、长度、值),用于向emule 内的各种消息添加可选的附加信息。

每个标签有4 个域:

1. type:1字节整数

2. name: 可以是变长字符串,也可以是1 字节整数。

3. value: 可以是4 字节整数、4 字节浮点数或变长字符串。

4. 特殊字段是一个:1字节的整数。

阅读完这些介绍后,希望您能够对Emul 的工作原理有一个基本的了解。谢谢。

本站涵盖的内容、图片、视频等数据,部分未能与原作者取得联系。若涉及版权问题,请及时通知我们并提供相关证明材料,我们将及时予以删除!谢谢大家的理解与支持!

Copyright © 2023