eMule协议简要分析

Ed2k协议背景介绍及eMule协议的整体架构 ed2k全称叫“eDonkey2000 network”,是一种文件共享网络,最初用于共享音乐、电影和软件。与多数文件共享网络一样,它是分布式的;文件基于P2P原理存放于用户的电脑上而不是存储于一个中枢服务器。 eDonkey客户端程序连接到这个网络来共享文件。而eDonkey服务器作为一个通讯中心,使用户在ed2k网络内查找文件。它的客户端和服务端可以工作于Windows、Macintosh、 阅读详情

最近我对P2p方面很有兴趣。实际上P2p并不仅仅能用于盗版的传播,在很多合理合法的需求中,P2p也有很广泛的前景,至少包括了信息的冗余存储,内容分发,突破信息监管等等方面。Google文件系统(Google File System)文档中 就提到,在Google网络内分发一个新版本的应用程序的时候,有巨大数量的客户端需要连接到服务器去下载新版本,造成了数据传输热点严重影响系统的运 行,他们计划利用P2p类的技术来解决这个问题。一段时间以来,网络游戏客户端升级都在采用或者部分采用P2p方案。这些都是在软件分发领域P2p的应 用。

eMule是我用的最多的P2p应用,所以研究也从eMule开始。

最主要的参考文本是eMule协议1.0版,原文地址。分析的流程是简要翻译加上我的思考,但我的目标不在于完整的翻译,我的思考和点评会用红色标出。

--------
电骡eMule是基于电驴eDonkey协议的。电骡网络是由数百个电骡服务器和数百万的电骡客户端组成的。客户端必须连接到服务器来获得网络服务,这个连接要一直保持直到客户端关闭。服务器提供集中的索引服务(类同Napster),不同的服务器之间没有通讯。

每个电骡客户端都预先设置好了一个服务器列表和一个本地共享文件列表。客户端通过一个单一的TCP连接到电骡服务器进行网络登陆,得到想要的文件的信息和可用客户端的信息。(这样造成了电骡和电驴都不能完全去中心化,虽然文件存储在客户端上。) 电骡客户端用几百个TCP连接与其他的客户端连接进行文件的上传和下载。每个电骡客户端为它的共享文件维护一个上传队列。正在下载的客户端加入这个队列的 底部,然后逐渐的前进,直到他们达到队列的顶端开始下载文件。一个客户端可能从多个其他的电骡客户端下载同一个文件,从不同的客户端取得不同的部分。客户 端也可以上传一个没有完全下载的文件的部分数据。(文件可以分块传输大大提高了效率,但是也造成了一些问题,比如源提前退出以后,所有的客户端都是不完全数据的情况。)最终,电骡扩展了电驴的能力允许客户端交换关于服务器、其他客户端和文件的信息。(这个能力又开始把中心的意义淡化。)注意,客户端和服务器的通信都是基于TCP的。

服务器使用一个内部数据库来保存客户端和文件的信息。电骡服务器不保存任何文件,它是文件位置信息的中心索引。服务器的另一个功能,正在受到质疑,他将作为通过防火墙连接的客户端之间的桥梁,这样的客户端不能接受引入的连接。桥接功能大大的增加了服务器的负载。(这个功能让服务器承担了过分的负担,大大降低了服务器的能力,在设计中应该摒弃,目前应用中大部分的服务器已经关闭了这个功能,也就是说两个Low id的客户端是不能传输数据的。)电骡使用UDP增强客户端跟服务器和其他客户端的通信能力。但是客户端收发UDP信息的能力不是客户端日常操作强制要求的,即使防火墙阻止客户端收发UDP信息,客户端仍能完美的工作。

客户端到服务器的连接

电驴网络图
图一 电骡网络图


客户端一启动就会用TCP连接到一个电骡服务器。服务器给客户端提供一个客户端ID,这个ID仅在客户端服务器连接的生命周期内有效(注意如果客户端是高 ID,那么他在所有的服务器得到的ID都是一样的,直到他的IP地址变化为止)。连接建立后,客户端把它共享的文件列表发送给服务器。服务器把这个列表保 存在它的内部数据库内,这个数据库通常包括了数十万可用文件和活动客户端。电骡客户端也会发送它的下载列表,包含了他想要下载的文件。后面将给出电骡客户 端和服务器间的TCP信息交换格式细节。

连接建立以后,电骡服务器给客户端发送一个列表,这个列表包括了那些有客户端需要的文件的客户端(这些客户端叫做源)。然后,客户端就去跟那些有所需文件的客户端建立连接。

注意客户端服务器的TCP连接在整个客户端会话过程中都会保持。初始化握手之后,事务主要是由用户活动触发的:有时客户端发送一个文件查找请求给服务器, 服务器会返回一个查找结果,一个查找事务之后通常是一个对指定文件的源查询,这个查询的结果是一个可以提供该文件下载的源的列表。

电骡客户端用UDP来跟登录服务器以外的服务器进行通信。UDP信息的用途是增加文件搜索能力,源搜索能力,保持连接。

 

客户端到客户端之间的连接


电骡客户端一般是为了下载某个文件才会连接到其他的客户端(也就是源)的。一个文件会被分为很多块。客户端会从多个客户端(源)那里下载同一个文件,从不同的源下载文件的不同部分(这样不同的部分就可以同时被下载,如果源多,下载的效率就会极高)。

当两个客户端连接后,他们会交换容量信息,然后协商开始下载(或者说是上传,这取决于视角)的时间。每个客户端有一个下载队列,用来保存正在等待下载的客 户端的列表。当电骡客户端的下载对列为空的时候,下载请求会被马上接受(除非这个请求者已经被屏蔽)。如果下载对列不为空,那么新的下载请求就会放在队列 之中。不会努力服务更多的客户端,对每个下载客户端至少保持不少于2.k字节/每秒。一个正在下载的客户端的下载地位可能被一个对列等级(queue ranking)比他高的等待客户端抢占,在下载进程中的前15分钟正在下载的客户端的队列等级会增长用来避免产生颠簸(这里说的颠簸就是说,一个客户端频繁的从下载地位切换到等待状态,然后再切换回去。这种频繁的切换叫做颠簸,这对资源是种浪费,所以要避免。)。

当正在下载的客户端到达了下载队列的顶部,提供上传的客户端初始化一个连接用于把它需要的文件片断传送给它。一个电骡客户端可能会在多个源客户端的等待队 列中,在每个客户端上注册要求同一个文件片断。当这个等待客户端实际上完成了这个文件片断的下载,他不会通知那些源客户端删除它的请求,而仅仅是在它在那 些源客户端的队列中排到顶端的时候拒绝上传请求而已。

电骡使用一个声望系统来鼓励上传,为了防止假冒,电骡用RSA公钥加密技术来保护声望系统。

客户端连接中会使用很多电驴协议(eDonkey protocol)没有定义的消息,这些消息叫做扩展协议。扩展协议用来实现信用系统,用来进行信息交换(例如,服务器列表的更新和源的更新),通过对文 件块进行压缩提升发送和接收的效率。电骡客户端连接中有限地使用UDP去周期其他客户端的状态。

客户端ID


客户端是一个4字节的标识符,在跟服务器连接握手的时候由服务器提供的。客户端ID仅在客户端服务器TCP连接的生命期内可用,虽然如果客户端是高ID (High ID),它在任何服务器分配的客户端ID都一样,除非IP变化了。客户端ID分为低ID(low ID)和高ID。电骡服务器通常会给不能接受连接的客户端分配低ID。拥有低ID会限制客户端在电骡网络中的使用,甚至会造成服务器拒绝连接。高ID是由 客户端的IP地址为基础算出的。这里从电骡协议的观点来看客户端ID的分配和表示。得到高ID的客户端允许其他的客户端自由地连接他的电骡TCP端口(默 认为4662)。得到高ID的客户端在电骡网络内不受任何限制。当服务器不能打开一个连往客户端的电骡端口的连接时,服务器给客户端一个低ID。这主要是 客户端安装了防火墙组织外来连接造成的。以下情况下,客户端会得到低ID:

  • 当客户端通过NAT或者代理服务器上网。
  • 当服务器正在忙(造成服务器的连接计数器超时,从而认为客户端无法连接)。


高ID通过下面的方法计算:假设机器IP地址为X.Y.Z.W,客户端ID应该为 X+28*Y+216*Z+224*W(big endian高位在前)。低ID总是小于15777216(0x1000000)我不知道它是怎么计算的(协议原文如此,看来低ID的算法并不重要,只要满足条件即可。),注意从不同的服务器得到的低ID是不一样的。

低ID的客户端没有公开的IP地址供其他的客户端连接,所以所有的通信必须通过电骡服务器。这会造成服务器的负载提升,所以服务器不愿意接受低ID的客户端。同样,这说明低ID的客户端不能跟其他服务器上面的低ID客户端连接,因为电骡不支持服务器间的桥接。

为了支持低ID客户端电骡协议引入了回调机制。使用这种机制,一个高ID客户段可以要求(通过服务器)低ID客户端连接它来交换文件。

(现在大部分服务器不会拒绝低ID的客户端连接,因为他们基本上都不帮助客户端传输文件了。由此,低ID的客户端之间也无法传输了。)

用户ID


电骡支持声望系统为了增加用户的文件共享。一个用户上传给其他客户端越多东西,它就得到越多的声望,这样它在他们的等待队列中前进就会越快。用户ID是一 个128位(16字节)GUID,通过连接随机数而产生,第6和第15位不是随机生成的,他们分别是14和111。用户ID仅在客户端和服务器会话中有 效,用户ID是唯一的用来标识客户端。用户ID在声望系统里面起了很大的作用,攻击者冒充其他用户就是为了得到它们声望对应的权利。电骡提供了加密方案用 来用户欺诈。实现方式是用RSA方法来加密方法来加密信息交换。

文件ID


文件ID用于网络中文件的唯一标识,以及文件损坏的检测和修复。注意电骡对文件进行唯一标识和编目不依赖于文件名,文件由其内容哈希计算出来的全局唯一ID来标识。文件ID有两种,一种用来生成唯一标识,一种用于文件损坏的检测和修复。

文件哈希


文件是用一个128位的GUID来标识的,这个GUID是由客户端用文件内容哈希计算出来的。GUID使用MD4算法计算。计算文件ID的时候文件被分成 9.28MB的大小。一个GUID是分别计算每个文件块的哈希,然后把它们合成为一个唯一文件ID。下载客户端完成文件块的下载后,会计算块的哈希和文件 上传端发送来的文件块哈希做比较,如果不同,就说明文件块损坏了,客户端将逐块的覆盖(一次180kb)知道哈希计算表明文件块已经修复为止。

根哈希


根哈希是每个文件块用SHA1算法计算出来的,每个计算单元尺寸为180kb。它提供了更高级别的可靠性和错误恢复。

电骡协议拓展


虽然电骡(eMule)完全兼容电驴(eDonkey),但是它还是实现了一些扩展,用于增强它的功能。扩展关注于客户端和客户端之间的通信,特别是安全领域和UDP工具。

软件和硬件限制


服务器设定包括两种对活跃用户数目的限制,软件的和硬件的。硬件限制大于等于软件限制。当活跃用户数目到达了软件限制,服务器停止接受新的低ID客户端连接,当用户数目达到了硬件限制,服务器不会接受任何连接。

客户端服务器TCP连接

每个客户端用TCP连接一个服务器。服务器给客户端分配一个ID,用于在会话中唯一标识这个客户端(高ID总是跟据它的ID地址来分配)。电骡客户端需要一个服务器连接才能操作。客户端不能连接到多个服务器,没有用户干预情况下客户端不能动态改变服务器。

 

连接建立

 

客户端创建连接的时候,可能会同时连接到多个服务器,仅仅使用成功的登陆流程,其他的连接直接放弃。


这里有两种连接建立的情况:

  1. 高ID??服务器分配一个高ID给客户端。
  2. 低ID??服务器分配一个低ID给客户端。
  3. 拒绝??服务器拒绝客户端的连接。


当然不用说,还有服务器死机和无法连接的情况。

高ID登陆流程

高ID登录流程
高ID登录流程

上图描述了高ID登录的消息交换流程。在这种情况下,客户端创建一个到服务器的连接,传送他的登录消息给服务器。服务器用另外的TCP连接去 连接客户端,进行一次客户端到客户端的握手,用来确认客户端有能力接受其他的电骡客户端的连接。在完成了客户端到客户端握手之后,服务器关闭第二个连接, 并发给客户端他的ID作为客户端服务器握手的终结。 你可能注意到上图中的eMule info是灰色的。这是因为这个消息属于eMule协议的扩展。

低ID登陆流程


低ID登录流程


上图描述了产生低ID连接的流程。在这种情况下,服务器无法连接到客户端(客户端到客户端的握手),所以给客户端分配了一个低ID。通常服务器消息会包括 这样的一个警告“Warning [server details] - You have a lowid. Please review your network config and/or your settings.”。不管高ID还是低ID,握手都是由id change消息结束的,这个消息给客户端在下面的跟服务器的会话提供了一个客户端ID。

登录被拒绝流程


登录被拒绝流程


上图描述了登录被拒绝的流程。当客户端是低ID或者服务器已经到达了硬件能力极限,服务器都有可能拒绝登录。服务器消息里面会包含拒绝理由的简单描述。

连接开始的信息交换



客户端和服务器成功建立连接之后会交换一些设置消息。这些消息的用途是更新两端的状态信息。客户端首先把它的共享文件列表发送给服务器,然后它要求更新它 的服务器列表。服务器发送它的状态和版本,然后发送它知道的eMule服务器列表,并提供一些自识别的细节。最后客户端询问源(可以用来下载它的下载文件 列表中的文件的客户端),服务器返回一系列消息,知道所有的源列表都被客户端得到为止。

文件搜索


文件搜索是由用户触发的。这个操作是简单的,一个搜索请求发给服务器后,服务器会返回一个搜索结果。当结果有很多的时候,搜索结果消息会被压缩。然后,用 户选择下载其中的一个或多个文件,客户端会请求所选文件的源,服务器返回一个所请求文件的源的列表。一个可选的服务器状态信息可能会在发现源的消息之前发 送给客户端。这个状态信息包含了服务器支持的当前用户和文件数量。注意,这是一个UDP补充消息,用来增强客户端定位源的能力的。确定这些源是新的以后, eMule客户端进行连接,并把他们加到他的源列表内。根据客户端收到源先后顺序连接这些源。没有任何优先级机制来决定先连接哪个源。但是当一个源同时被 下载列表中的多个文件需要的时候,有一个补充机制可以解决问题(注意,eMule只允许两个客户端间建立一个传输连接)。这个选择算法寄予用户指定的文件 优先级,如果没有优先级就根据字母顺序。

回调机制



回调机制是设计用来克服低ID客户端无法接受连入连接的问题的,这样他们也可以跟其他的客户端共享文件。这个机制很简单:如果客户端A和B都连接到同一个 eMule服务器,A需要的一个文件在B上,而B是一个低ID,A可以给服务器发送一个回调请求,请求服务器要求B反过来连接A。服务器已经跟B有了一个 TCp连接,发送给B回调请求消息,把A的IP和端口提供给B。B就可以连接到A,把文件发送给A,而不需要服务器更多的参与。很明显,只有高ID客户端 可以要求低ID客户端回调(低ID没有能力接受连入的连接)(这就是为什么高ID可以跟任何的源连接,而低ID只能跟高ID连接的原因)。这也是允许两个低ID客户端通过服务器交换文件的方法,服务器作为中转。但是因为这样对服务器负担太重,目前大部分的服务器已经不在支持中转了。

eMule连接到进ed2k网络分析 上一篇博客已经介绍eMule客户端的初始化过程及相关代码梳理,这里将接着介绍第二个步骤 连接到ed2k服务器   Emule 客户端使用场景分析,当我们要下载一个ed2k 文件时 ,可以分为以下几步: 一 。启动emule客户端(这时候就开始初始化,主要是对Config文件夹下的文件(比如Server.met等)进行反序列化,生成相应实例,存储信息(包括ed2k服务器地址及端口号))。 二 阅读详情

相关推荐

eMule 的使用场景及初始化任务描述级eMule相关代码分析(仅涉及ed2k)

Emule 客户端使用场景分析,当我们要下载一个ed2k 文件时 ,可以分为以下几步: 一 。启动emule客户端(这时候就开始初始化,主要是对Config文件夹下的文件(比如Server.met等)进行反序列化,生成相应实例,存储信息(包括ed2k服务器地址及端口号))。 二. 客户端必须连上某个服务器(可能会从服务器列表中依次尝试,直到连上为止,连上以后客户端就加入了emule网络,成为协议节点)。 三. 用户就向服务器传递ed2k连接(这是用户已知道ed2k连接的情况,如果用户不知道ed2k连接,就可

Android 小生的博客 2312

emule服务器有响应,eMule刚连上服务器就断请教为什么

该楼层疑似违规已被系统折叠隐藏此楼查看此楼2005-6-1119:33:12:正在连接到BreizhDigitalus(213.186.47.84:4661)...2005-6-1119:33:12:连接到BreizhDigitalus(213.186.47.84:4661),发送登陆请求2005-6-1119:33:27:警告BreizhDigitalus(213.186...

weixin_39652646的博客 387

深入剖析eMule 【for_wind】

分布式系统课程的读书笔记,关于eMule的整理。不算透彻,欢迎指正,提供相关的资料链接。//for_wind 前言: 针对P2P分布式系统这个大课题,本人将研究重点锁定到eMule这个经典的点对点文件分享系统上,并通过查阅图书馆书籍、搜索图书馆数据库资料、查阅有关期刊和查找网页上相关的资料四种方式,寻找到相关的信息资料,从2012年11月到2012年12月根据所收集的资料完成如下文献综述。本文

for_wind的专栏 1671

eMule 协议分析翻译(二)

2,客户机服务器之间的TCP通信       每一个客户端都采用TCP 连接与一个特定的服务器相连接,服务器分配给客户端一个固定的ID。客户端不能同时连接到几个服务器,也不能动态的选择服务器,除非由其他客户端的邀请。 2.1 建立连接在建立连接的时候,客户端会向一定数目的服务器发起连接请求,当有一个连接成功建立之后。客户端就会取消所有其他的连接请求。 在连接建立的时候,

starshift的专栏 1366

eMule 协议中的一些基本概念

上篇博客中介绍了ed2k协议的一些背景记忆eMule的整体架构,这里主要说明几个 基本概念以便于以后的分析。 客户端ID 客户端是一个4字节的标识符,在跟服务器连接握手的时候由服务器提供的。客户端ID仅在客户端服务器TCP连接的生命期内可用,虽然如果客户端是高ID (High ID),它在任何服务器分配的客户端ID都一样,除非IP变化了。客户端ID分为低ID(low ID)和高I

Android 小生的博客 1566

eMule 2026实操指南:ED2K协议与Kad网络高效配置

P2P下载技术是分布式系统中的基础范式,其核心在于去中心化发现、多源分块传输与抗单点故障能力。ED2K协议通过MD4分块校验和动态源调度,提供远超HTTP的断点续传确定性;Kad网络作为Kademlia DHT实现,赋予节点自主发现与自愈能力,摆脱对中心服务器的依赖。这类技术在科研数据归档、固件镜像分发、开源版本回溯等强可靠性场景中具备不可替代价值。本文聚焦2026年真实可用的eMule v0.51d环境,详解ED2K协议落地细节与Kad网络稳定初始化方法,覆盖Windows 11兼容配置、端口映射策略、磁

weixin_30608503的博客 464

eMule协议专题

来源:http://www.tinydust.net/prog/diary/2005/11/emule.html  作者:Tinyfool最近我对P2p方面很有兴趣。实际上P2p并不仅仅能用于盗版的传播,在很多合理合法的需求中,P2p也有很广泛的前景,至少包括了信息的冗余存储,内容分发,突破信息监管等等方面。Google文件系统(Google File System)文档中 就提到,在

Progressive Notes 2339

eMule-VeryCD-src.zip:深入理解eMule与P2P网络协议

eMule是一款流行的文件共享软件,其特点在于使用了P2P技术,允许用户直接与其他用户交换文件。eMule支持多源下载,这意味着用户可以从多个源头获取文件的片段,从而提高下载速度并提升文件的完整性。随着互联网的发展,eMule在早期网络通信和数据共享领域扮演了重要的角色,即便在今天,它依旧有着一批忠实用户群体。在P2P网络的发展历程中,Kad网络(Kademlia)作为分布式哈希表(Distributed Hash Table, DHT)的一种实现,诞生于早期P2P网络的演进需求之上。

weixin_30661119的博客 1130

eMule 协议分析翻译(一)

eMule 协议分析翻译(The eMule Protocol Specification)  作    者:starshift 版    本:.v1.0 开始时间:200.6.10.15 结束时间:未知

starshift的专栏 1817

树莓派烧录验证失败:跳过验证步骤实现成功启动的实用技巧

本文针对树莓派烧录系统时常见的验证失败问题,提供了跳过验证步骤实现成功启动的实用技巧。通过分析Windows与Linux文件系统差异导致的SD卡验证报错,指导用户在烧录完成后立即关闭验证窗口,或使用BalenaEtcher等第三方工具规避问题,确保树莓派正常启动。

yyy34的博客 949

STM32F103C8T6+I2C+DMA读取陀螺仪模块JY901S(硬件I2C

说明:1.本实验代码适用移植一切stm32f1系列;2.本实验使用的是外设资源硬件I2C2;3.本实验运用的是DMA单次模式,如果需要DMA的循环模式,请移步我的另一篇文章;4.本文章不提供陀螺仪校准教学,并是在没有校准陀螺仪情况下读取数据;5.本文章是作者的学习记录及心得,如有不足,欢迎指正。 总结:亲测stm32f103c8t6最小系统板通过片上外设资源I2C配合DMA读去陀螺仪模块jy901s偏航角有效。

anquanyuanqqadsy的博客 6173

Kademlia Emule协议分析及和Bt协议的比较

Kademlia 是个 Petar Maymounkov 与 David Mazières 所设计的点对点 (P2P) 重叠网络传输协议,以达成非集中式的点对点 (P2P) 电脑网络。它规制了网络的结构及规范了节点间的通讯和交换资讯的方式。Kademlia 节点间使用传输通讯协定 UDP (请见OSI模型) 沟通。Kademlia 节点借以实作分布式杂凑表 (DHT,distributed has

Progressive Notes 3280

(一)ANSYS WORKBENCH实践入门

ANSYS-workbench 有限元分析应用基础教程 (张晔)学习笔记

qq_51767372的博客 1万+

BT和eMule协议的比较和分析

http://blog.chinahr.com/blog/I_Shinji/post/109003 eDonkey由Jed McCaleb在2000年创立。采用“多源文件传输协议”(MFTP,the Multisource File Transfer Protocol)。eDonkey索引服务器并不集中在一起的,而是各人私有的,遍布全世界,每一个人都可以运行电驴服务器,同时共享的文件索引为被称为“

n43e120的专栏 1962

centos7 清理缓存

一、系统环境 系统版本 CentOS Linux release 7.3.1611 (Core) 内核版本 Linux xx-user 3.10.0-514.el7.x86_64 #1 SMP 背景 服务器分配的账号是普通用户,只能执行sudo命令 二、缓存查看及基本概念 查看内存使用情况 [user01@xx-user ~]$ free -h total used free shared buff/cache availabl

sunzq55的博客 4007

C语言由scanf(“%d“,)非法输入字符造成的死循环及其解决方案

声明:此文章仅作为C语言学习历程中的思路整理,用于解决入门阶段较为浅显的问题,如有错误还请指正。 现象描述: 代码要求实现用户输入1或2,通过scanf("%d",&a)读取这个值,从而判断分属于1或2的两种情况。输入非1,2的数字都应该返回"Invalid Number!",并且要求重新输入数字。 while(a!=1&&a!=2) { printf("Invalid Number!\n"); printf("Enter the number:"); scan

weixin_49764077的博客 8722

emule的下载协议关联分析

emule中

云淡风轻 880

华为面试手撕真题【字符串压缩】

华为面试手撕真题【字符串压缩】

MISAYAONE的博客 1万+

eMule协议规范和源码分析

说明:这篇文章原来写在我的另外一个Bolg上面:http://hustlg.bokee.com/6304807.html由于该网络访问缓慢,现在逐渐把Blog迁移到这里来。收到不少朋友的邮件需要我发送相应的资料,我已经上传到优快云的下载频道到,大家用“eMule协议规范和源码分析”搜索就可以随意下载了。eMule源码分析下载:http://download.youkuaiyun.com/sour

2807

python opencv的车牌识别分割详细教程 毕业设计

python opencv的车牌识别分割详细教程 毕业设计

机器学习深度学习业余选手 1328

Allegro如何用自带的功能将线段变成铜皮操作指导

在做PCB设计的时候,有时根据设计需要将线段变成铜皮,可以借助辅助工具来实现这一操作,但是Allegro自身也自带这个功能,如下图。勾选Delete original objects。如何用自带的功能将线段变成铜皮操作指导。勾选Convert to shape,需要把这段走线变成铜皮。

weixin_54787054的博客 2947

eMule 协议分析翻译(四)

 4.3.5 下载过程当A到达B下载队列的顶端,B就向A发起连接,A可以选择连接到B下载文件,也可以选择通过发送取消消息,取消连接(在A已经连接到其他客户端下载文件的时候)。4.4 数据传输4.4.1    数据包       传输和接受数据是emule网络的主要活动,emule传输的文件片大小可以在5000——15000byets之间(由是否压缩决定)。为了避免碎片,文件

starshift的专栏 1104

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

eMule协议专题 | Tinyfool的开发日记(blog)

导读: eMule协议专题eMule协议简要分析[一] eMule协议简要分析[二] eMule协议简要分析[三]eMule协议简要分析[一]最近我对P2p方面很有兴趣。实际上P2p并不仅仅能用于盗版的传播,在很多合理合法的需求中,P2p也有很广泛的前景,至少包括了信息的冗余存储,内容分发,突破信息监管等等方面。Google文件系统(Google File System)文档

xu的blog 1303

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

BT和eMule下载协议的比较和分析

 BT和eMule下载协议的比较和分析     由于从事P2P下载引擎开发得原因,对BT和eMule协议有了一些想法,总结如下,供参考。很多资料来源于互联网,再次向原作者表示感谢。 在当前的下载领域BT和eMule协议应用得是最广泛得,他们各自有自己强大得用户阵迎得支持。    eDonkey由Jed McCaleb在2000年创立。采用“多源文件传输协议”(MFTP,the Multisourc

5112

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

eMule协议的翻译

  p2p分发引擎研究 飞鸟博客 首页 新随笔 联系 聚合 Syndicate this Site (Atom)-->登录   15 Posts :: 0 Stories :: 13315 Comments :: 8 Trackbacks

阿攀的专栏 1500
上一篇: 如何检测VMware系统
下一篇: 逆向工程初步
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值