P2P之王者-电骡Emule技术分析

1)P2P到底是什么?
           Peer -to-peer的缩写,指的是点对点的意思,最早是在美国由 18岁的Shawn Fanning开发出一个叫Napster的软件时,引入得概念,它不仅仅是一种软件架构,也是一种社会模式的体现,网络上流行的P2P软件的架构手段主要有两种:集中式和分布式。

集中式:便是利用服务器作为媒介使各个分散的节点(用户)能互相联系,生成各种服务响应。
分布式:每个节点即做服务器又做客户端,这种方式非常灵活,一个孤立的节点只要连上另一个节点便可以进行传输。

Napster 可以说是第一代p2p软件。后来由于Napster陷入诉讼危机(相关版权问题),便出现了Gnutella,它吸取了Napster的失败教训,将 P2P的理念更推进一步:它不存在中枢目录服务器,用户只要安装了该软件,立即变成一台能够提供完整目录和文件服务的服务器,并会自动搜寻其它同类服务器,从而联成一台由无数PC组成的网络超级服务器。传统网络的Server和Client在它的面前被重新定义。Gnutella作为第二代p2p软件,他们可以说是最早的p2p技术。然后FastTrack (即Kazaa 的底层技术)迅速掘起取代其地位。成为p2p老大。

2)emule到底是什么?

         随着二代技术的普及,又一个的问题诞生了,自私的人们在利用P2P软件的时候大多只愿“获取”,而不愿“共享”,P2P的发展遇到了意识的发展瓶颈。不过,一头“骡”很快改变了游戏规则,它就是后来鼎鼎大名的 eDonkey。这标志着第三代p2p技术的兴起,eDonkey采用了以“分散式杂凑表”(distributed hash tables )为诉求的Neonet技术,改变了P2P网络上的搜索方式,理论上可以更有效率的搜索更多的电脑,以及更容易找出少见的文件。这种技术已经使 eDonkey基本快要追上了P2P服务龙头业界的另一个老大Kazaa了. eDonkey由Jed McCaleb在2000年创立。他最重要的是可以同时从许多人那里下载同一个文件,并且采用了“多源文件传输协议”(MFTP,the Multisource FileTransfer Protocol)。电骡的索引服务器并不集中在一起的,而是各人私有的,遍布全世界,每一个人都可以运行电骡服务器,同时共享的文件索引为被称为 “ed2k-quicklink”的连接,文件前缀“ED2K://”。
同时,在协议中,定义了一系列传输、压缩和打包的标准,甚至还定义了一套积分的标准,你上传的数据量越大,积分越高,下载的速度也越快。而且每个文件都有有md5-hash的超级链接标示,这使得该文件独一无二,并且在整个网络上都可以追踪得到。EDonkey可以通过检索分段从多个用户那里下载文件,最终将下载的文件片断拼成整个文件。而且,只要你得到了一个文件片断,系统就会把这个片断共享给大家,尽管通过选项的设置你可以对上传速度做一些控制,但你无法关闭它。
在eDonkey出现后,其改良品种eMule(电骡)也出现了。可以说emule是eDonkey的升级版,是eDonkey的一个Mod,就象osp就是quake3的mod一样,它的独到之处在于开源,它的基本原理和运作方式,也都是基于eDonkey, eMule基于eDonkey网络协议,因此能够直接登录eDonkey的各类服务器。eMule同时也提供了很多eDonkey所没有的功能,比如可以自动搜索网络中的服务器、保留搜索结果、与连接用户交换服务器地址和文件、优先下载便于预览的文件头尾部分等等,这些都使得eMule使用起来更加便利,也让它得到了电骡的美誉。
总之,他们继承了第二代P2P无中心、纯分布式系统的特点,但他们它不再是简单的点到点通信,而是更高效、更复杂的网络通信;再加上eDonkey和eMule引入的强制共享机制,在一定程度上避免了前几代P2P纯个人服务器管理带来的随意性和低效率。
3)emule的下载原理?

当你在搜索列表中选取了你要的文件并开始下载后,emule会记录下这个文件的大小,文件名以及另一个叫做hash的特殊值。会向所有添加的服务器发出请求,要求得到有相同hash值的文件。而服务器则返回持有这个文件的用户信息。这样我们的客户端就可以直接的和拥有那个文件的用户沟通,看看是不是可以从他那里下载所需的文件。
它最棒的部分就在于:你不是只在一个用户那里下载文件,而是同时从许多个用户那里下载文件。如果另一个用户仅仅只有你要的文件的一个小小片断,他也会自动地把这个片断分享个大家,而你就可以从这个用户的机器上下载这个片断。当然你也是一样。只要你得到了一个文件片断,系统就会把这个片断共享给大家。在查找到下载源(其他客户端)后,下载就是客户端和客户端通过点对点(P2P)进行直接对话了。期间没有数据流通过服务器

4)emule是如何工作的?
emule建立于多点文件传输协议之上。一个emule网络由服务器端和客户端两部分组成。服务器端是客户端连接的、为了搜索和查找可以下载用户的桥梁。服务器列表像电话本一样排列,客户通过浏览它而获取他需要的文件所有者的客户端信息。在download过程中,没有下载文件通过服务器端。
5)emule是如何搜索的?

每一个客户端连接到一个服务器作为他的主服务器。在连接时,由客户端告诉主服务器他share了那些文件,以及IP地址等其他信息。所以每一个服务器会记录所有登陆到他服务器上的以上信息。在本服务器搜索时,它会通过匹配记录的已知以上信息把查找结果反馈给搜索的客户端列表。当你使用扩展搜索(extend search)时,你的搜索请求和应答结果通过发送限制带宽的UDP包连接到客户端本身的服务器列表(server.met)对应的某一个ip地址的服务器。
6)emule是如何下载的?

当客户端选择了一个文件下载时,它首先收集一个拥有该文档的客户端的列表。它会先行查询主服务器所有登陆用户他们是否拥有该文件。然后再连接和查选其他服务器的登陆用户所拥有该文件的客户端列表。一旦它找到拥有该文件的其他客户端,它将请求每个客户端发送这个文件的不同片。直至最后文件由这个不同的片组装成一个完整的文件。在进行pause/resume的时候,我们选择的下载列表已经获取,它pause的仅仅是客户端和客户端之间的TCP连接然后恢复TCP连接。这个过程只有再resume时通过客户端向服务器端发送22个字节后即可。占用的仅仅是22个字节的网络流量。在pause是甚至不通过你登陆的服务器进行,也无须你登陆的主服务器进行任何干预和操作。所以说,它并未占用主服务什么资源,只是在你已经和主服务器连接的通道上发送22个字节而已。

7)emule有什么优点?

不需要服务器来存放共享文件,节省了服务器架设、海量硬盘、网络带宽。每个用户端节点都同时是文件下载者和提供者。实际上,在你正在下载但还没当完整个文件时,你已经可以把你已下载的部分共享给别人了!因为emule同时从很多文件提供者那里下载所需的文件最后再拼成整个文件的。加入的人越多,下载速度越快,资源越丰富。共享方便,每个人在自已的emule里指定一个share目录就可以把自己的文件共享给网络中的其它人了。不必再辛苦地上传到服务器上了。
8)eMule 和 BT的比较

(1)如果说eMule是通用车辆的话,BT就是消防车
eMule具备的“搜索”“消息”“统计信息”等功能,使用户极为方便,使人联想到配置齐全的客货两用车。之所以把BT比作消防车,是因为它们的特点和用途极为相似:一是都快,二是都为了救急,爱用BT的朋友大都是急性子,属于那种放下筷子一抹嘴,立马走人的主儿。
(2)如果说eMule是跨国集团的话,BT就是国有中小企业
eMule 可以在一个单一平台上实现所有参与者的互连,国界,地域的界限是几乎不存在的,可脱离IE独立运作;BT则具有典型的条块分割的国有体制特色,你得有个上级主管单位,就是你找种子和发布种子的网站,离了它,你寸步难行,再往上数,最高领导是IE,离了它,整个就被废了。
不要误解拿两者来作比喻是为了贬低其中一个,而是要扩大它们的特性,帮助那些不熟悉两者的朋友有个认识,从而可以客观的选择合适的。
BT往往在新东西刚刚发布的几天可以找到种子(而且是比较快的),一般人用BT东西都是载完了都不会再挂很久,所以如果过一、两个星期后再去BT下载,基本上是找不到种子了。所以用BT的经常关注内些发布种子的地方,而且动作要快。
而用电驴(泛指eDonkey或eMule)的人只要不是硬盘没空间,就不会把硬盘上的东西移走,就是说会继续通过电驴共享。一个好东西,即使是不热门的东西,但仍旧会找到源(相当BT的种子),只要你愿意开机的时候开电驴, 虽然会花点时间仍旧可以载到你要的东西。
说实话会有愿意每次开机挂上3、4个BT的人不多。而用ED一次共享(包括正在下载的)5、6个电影的不算什么,这就是ED最大的优势。
9)电驴ED(eMule/eDonkey)的最大缺点
电驴ED(eMule/eDonkey)的最大缺点就是名副其实---驴---慢。老爷车用电驴一周以来,下载热门的东东速度到也可以(可利用的源多,速度就快),平时却只有几或十几KB/S的速度,习惯了速战速决的BT爱好者们是绝对难以忍受的。所以骑驴的朋友首先要习惯慢腾腾的速度,下个一两部电影(嘿嘿,下十部更好,只要你的驴圈大),你就学习、冲浪、聊天、打游戏去吧,一两天、两三天之后,也就完成了。(在网吧上网?嘿嘿,那你就不能骑驴了。)

电骡eMule的应用知识

骡子积分保留
本人原来也不知道  结果浪费了大量的积分
特提醒骡犊子们,前车之鉴啊
重装骡子,一定要把骡子里config目录下的
preferences.dat        cryptkey.dat       clients.met
这3个文件拷贝出来
重装完骡子后,再拷贝回去
clients.met —— 已知的客户清单(其它骡友的积分文件也保存在里面)
cryptkey.dat —— 安全认证密匙(你从别人那里验证你的Userhash时需要的安全密匙)
preferences.dat —— 个人UserHash值(存储你个人的Userhash相关的文件)
=====================================================
解除eMul VeryCD V0.46 以上版本的搜索限制
从eMul  VeryCD V0.46起,其在搜索处加了关键字过滤,搜索含敏感关键词(如:六四,***,***,性,s_e_x.等)的文件是搜索不到的.
解除搜索限制方法:打开安装目录中的config文件夹,用记事本打开"wordfilter.dat"这个文件,然后删除所有的内容(打开后看到的只是乱码),最后保存就ok了.
======================================================
使用电骡时CPU占用资源100%的原因及解决办法
1、由于杀毒软件及防火墙冲突引起的。
表现:任务管理器里,KWacth.exe(或类似的其他病毒防火墙)的进程CPU占用率高。
原因:在eMule的Temp目录下的*.part文件在大多杀毒程序中被认定为压缩文件,而在一般杀毒程序的默认设置中,都是扫描压缩文件内部的,而下载过程中,会不断更新Temp文件下的*.part文件,这就势必导致在使用eMule时,防火墙会检测到有新的压缩文件生成,就会启动后台的扫描程序,扫描*.part文件。于是,最郁闷的事情发生了:你的Temp目录中有很多*.part文件,而你又同时开始了很多(比如20个文件同时下载)那么,防火墙就逐个对这些文件疯狂扫描,这个时候,CPU占有率就高局不下了。另外,在“扫描压缩文件内部”选项打开的情况下,Hashing文件时,比如你下载 *.iso或*.zip或*.rar的时候同样要疯狂的扫描的。
解决办法:升级杀毒程序到最新的版本,在病毒扫描中关闭扫描压缩包(不同的杀毒软件设置方法也不同,请自行查找);更换其他杀毒软件;关闭杀毒软件。适当减少同时下载的文件数量。
PS:有些杀毒软件就算卸载掉依旧存在,因为卸载的时候还剩下备份文件还有病毒隔离区文件夹没有删除,可以打开系统的隐藏选项,将这几个文件夹删除。
2、由于XP限制了最大连接数引起的。
表现:电骡开机运行一段时间,或者增加下载任务以后,电骡占用很高资源,但是无法进行下载。
原因:主要是XP SP2限制同时向外TCP不完全的连接数量为10,并且如果达到限制数目将会降低所有正在进行的连接,并进行排队等候,不断向系统发出连接请求。
解决办法:下载破解最大连接数限制的软件(请参考本版相关帖子)。
3、由于SVCHOST.EXE占用100%CPU而不能打开EMULE问题。
表现:在任务管理器中,显示一个SVCHOST.EXE程序占用CPU98%以上。EMULE程序在进程中,但不在应用程序里。关闭EMULE后,SVCHOST.EXE返回到0%。
原因:SVCHOST.EXE是一系列服务的集合,这些服务中与电骡有冲突之处。
解决办法:安装一些优化工具,对系统的服务内容进行优化,去掉一些不必要的服务项目。
======================================================
4、由于某些不正确的系统优化引起的。
表现:下载了一段时间,cpu的占用率100%,并且很难中止进程。
原因:由于系统等待程序响应的时间太短,造成程序死循环。
解决办法:修改注册表
[HKEY_CURRENT_USER\Control Panel\Desktop]
"WaitToKillAppTimeout"="*"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control]
"WaitToKillServiceTimeout"="*"
以上星号中的数值默认值每台机器可能不一样。只要把这个数值调高就可以解决emule的问题。推荐的设置是“5000”。
======================================================
5、由于共享文件多为avi文件引起的。
表现:电骡运行时系统占有率较高,但基本不至于100%
原因:电骡共享上传avi文件时,对avi文件进行优化修改等,占用CPU较高。
解决办法:关闭emule。打开config/preferences.ini文件。在"UseLowRightsUser=0"后增加一行"DontCompressAvi=1"。重新运行emule。
一些其他解决办法:
部分SP2系统在使用电骡时经常死机,说明SP2还有不完善的地方,建议SP2系统的骡友如果电骡有故障总是解决不了,请换用XP版本。
如果电骡一启动就非法操作,几乎可以肯定为 part 文件与对应的 met 文件出了毛病。请用DonkeyDoctor 等工具来修复,或者直接将文件删除。如果你不知道是哪个文件出了毛病, 请查看电骡所在目录里的 downloads.txt 文件。
修改电骡硬性连接和最大连接数,建议这两个数字不要太高,硬性连接对256M设在100比较好,512M设在150-200之间;最大连接通常不推荐多于1000的数字,带宽条件较好的适当增加,过多的连接有时服务器也不会支持。
降低电骡的优先权,如果你用的是Windows 2000以上的版本,可以用任务管理器降低eMule的优先级,这样即使它要占用资源,也不会对其它应用程序产生太大的影响。具体方法是,用“Ctrl+ Alt+Del”组合键启动“Windows任务管理器”,在“进程”选项卡中,用右键点击电骡进程,在“设置优先级”选单中选择“低”或者“低于标准” 即可。
======================================================
最新国内电骡服务器IP、端口及位置一览(随时添加中)
华语P2P源动力        61.152.93.254:4661       上海市  CZ88.NET
酷驴在线10058        220.194.57.35:1234        中国 联通
酷驴在线10058        220.194.57.35:4661        中国 联通
酷驴在线10058        211.157.7.216:4661        北京市  CZ88.NET
PowerP2P                218.63.192.38:4661        云南省昆明市 电信
电影吧                       202.101.70.155:4666     贵州省贵*市  CZ88.NET
Down电骡服务器     218.5.78.222:4661          福建省厦门市 IDC机房
VC.eServer.1           61.155.39.144:4069        江苏省苏州市 电信
ITBBS                       210.75.23.72:4661           广东省深圳市  CZ88.NET
PowerP2P               220.164.140.201:4661    云南省  CZ88.NET
未知名称                  211.167.240.54:3888      北京市大兴区 静慧诚网吧
未知名称                  221.6.7.104:4661             江苏省南京市 网通
Suoerb                     61.18.224.187:7654        香港 特别行政区
TLF Taiwan ED Server    140.123.108.139:7654 台湾省 中正大学
江南一驴                  211.155.224.44:4661     浙江省杭州世导信息技术有限公司
USTC eMule eServer       202.38.80.196:2021    中国科学技术大学 北区
IA MEDIA                  61.151.239.219:8888         上海市 电信
未知名称                  202.120.127.87:4661          上海大学 网络中心
tt SERVER              218.201.49.68:3065             重庆市 移动
附加詳細解釋:http://post.baidu.com/
来源:Cnetsec Lab.

posted @ 2010-10-31 17:32  fxcl  阅读(1087)  评论(0编辑  收藏  举报