最近比较忙,emule的东西已经不看了,没有把翻译的工作做好,真的很是遗憾。没想到会有人来这里看这些东西,还有人为我打问,真的非常感激!
开源的东西,www.soureforge.net有很多,我想大家一定会在那里面学到很多东西。上面我说的网站做得很不错,分类做得相当好,你可以很轻松就知道那些项目开发最活跃。大家共同支持开源吧!
一直在看x264的代码,来这里的人有对这个有兴趣的可以多多交流。本来想在这里写一些我个人的学习感受,但是一直也没有抽出时间来写。
1 介绍
1.1 目的和范围
eMule是一个基于eDonkey协议的流行文件共享应用程序。这份文档描述eMule的网络行为方式,以及为了更好理解这份协议的一些基本术语。同时,文档也对eMule网络协议做了全面的说明,其中还包含一个详述消息格式的附言部分。这份文档信息基于一个开源客户端软件eMule【2】。接下来的一些介绍是为读者能更好的去阅读和理解这份文档的一些一般性的背景知识。关于eMule的更进一步的信息可以在【3】中找到。
1.2 概述
eMule网络由几百个eMule服务器和数百万个eMule客户端组成【1】。客户为了得到网络服务需要连接一个服务器;只要客户端在系统中,服务器连接就一直保持打开状态。服务器提供中心索引服务功能(象在Napster中一样),不和别的服务器通信。
每个eMule客户端在本地系统中预先配置好一个服务器列表和一个共享文件列表。一个客户端使用单一TCP连接连接到eMule服务器来登入eMule网络,去获得文件和可连接的客户端信息。eMule同时也使用数百个到别的客户端的TCP连接去下载和上传文件。每个eMule客户端他的每个共享文件维护一个上载队列。下载客户加入队列,进入队列底部,逐步上移直到队列的顶部开始下载文件。一个客户可能从几个不同的客户端下载同一个文件,从每一个客户端上面得到不同的片断(fragments)。客户也可能上载文件数据块(chunks),即使这个文件还没有下载完成。最后,eMule还扩展了eDonkey协议,允许客户之间交换服务器、别的客户和文件信息。这里值得注意的是,客户跟服务器的通信是基于TCP的。
服务器启用一个内部数据库来保存客户和文件信息。eMule服务器不保存任何文件,它扮演中心索引的角色,保存文件位置信息。服务器的一个额外桥接功能,同时也引来无数抗议的一个功能就是穿越防火墙,使得躲在防火墙后不能够接受引入连接的客户得到解放。桥接功能极大的增加了服务器的负担。eMule启用UDP加强客户性能来应对服务器和别的客户端的连接。客户接收和发送UDP消息不是强制性的,如果防火墙阻止客户发送和接收UDP消息,这不会妨碍正常运转。
1.2.1 客户到服务器的连接
在启动的时候,客户使用TCP连接到单个eMule服务器。服务器提供客户一个客户ID(1.3节),这个ID只是在客户服务器连接生命期有效(这里有一点需要注意:如果客户拥有一个High ID,那么只要他的IP地址不发生改变,客户就会从所以的服务器上得到同一个ID)。紧接着连接的建立,客户端会发送他的共享文件列表给服务器。服务器把这个列表信息保存他他的内部数据库中,通常数据库中存有数十万个可获得的文件和活动客户信息。同时,eMule客户端也发送他的下载列表,包含他希望去下载的文件。第2节会提供客户和服务器TCP信息交换的详细描述。
连接建立后,eMule服务器发送给客户一个别的客户的列表,列表中的客户可以为当前客户提供文件下载源(这些客户理所当然就被称为“sources”)。紧跟其后,客户开始和别的客户建立连接,1.2.2节对此有详细描述。
值得注意的是:客户服务器的TCP连接在整个客户会话阶段都保持开的状态。初始握手之后,客户服务器事件主要由用户活动触发:有时候,客户发出文件查找请求,请求被查找结果作为答复;文件查找之后通常紧跟着一个特定文件源的查找,这个查询以源列表(IP和port)作为答复,发出请求的客户可以从源端下载特定文件。
客户使用UDP和别的服务器(未建立TCP连接的服务器)通信。这种通信增强文件和源查找,保证客户端服务器列表中所有的服务器是当前有效的。关于客户服务器UDP连接的细节可以在第三章中找到。
今天无意中发现我的电脑上还有不少好东东呢,以前从别人那弄过来放这就没有去管了,因为忙别的事情都给忘记了。cppUnit应该学习学习了,电脑里还有个中文的入门资料,难得!
还有一堆的空间开发集,很不错,以后很有用!
我有了自己的博客,这让我很兴奋。我加入博客就是想找到一个地方来整理自己凌乱的思绪。
大学毕业两年了,但是自己很多思想还是停留在大学阶段,有很多的想法,但总是不知道到底自己应该怎么样去走下去,怎么样去规划我未来的路,以求实现自己的人生目标。
我一直在寻找这么一个空间,可以记录下自己的一些想法,很凌乱,但是我回过头来我至少知道我想了些什么!直到认识blog,才发现这就是我一直寻觅的对象。
携手blog,我的人生必将更加精彩。