emule的下载原理? 当你在搜索列表中选取了你要的文件并开始下载后,emule会记录下这个文件的大小,文件名以及另一个叫做hash的特殊值。会向所有添加的服务器发出请求,要求得到有相同hash值的文件。而服务器则返回持有这个文件的用户信息。这样我们的客户端就可以直接的和拥有那个文件的用户沟通,看看是不是可以从他那里下载所需的文件。 它最棒的部分就在于:你不是只在一个用户那里下载文件,而是同时从许多个用户那里下载文件。如果另一个用户仅仅只有你要的文件的一个小小片断,他也会自动地把这个片断分享个大家,而你就可以从这个用户的机器上下载这个片断。当然你也是一样。只要你得到了一个文件片断,系统就会把这个片断共享给大家。在查找到下载源(其他客户端)后,下载就是客户端和客户端通过点对点(P2P)进行直接对话了。期间没有数据流通过服务器。 4)emule是如何工作的? emule建立于多点文件传输协议之上。一个emule网络由服务器端和客户端两部分组成。服务器端是客户端连接的、为了搜索和查找可以下载用户的桥梁。服务器列表像电话本一样排列,客户通过浏览它而获取他需要的文件所有者的客户端信息。在download过程中,没有下载文件通过服务器端。 5)emule是如何搜索的? 每一个客户端连接到一个服务器作为他的主服务器。在连接时,由客户端告诉主服务器他share了那些文件,以及IP地址等其他信息。所以每一个服务器会记录所有登陆到他服务器上的以上信息。在本服务器搜索时,它会通过匹配记录的已知以上信息把查找结果反馈给搜索的客户端列表。当你使用扩展搜索(extend search)时,你的搜索请求和应答结果通过发送限制带宽的UDP包连接到客户端本身的服务器列表(server.met)对应的某一个ip地址的服务器。 |
当客户端选择了一个文件下载时,它首先收集一个拥有该文档的客户端的列表。它会先行查询主服务器所有登陆用户他们是否拥有该文件。然后再连接和查选其他服务器的登陆用户所拥有该文件的客户端列表。一旦它找到拥有该文件的其他客户端,它将请求每个客户端发送这个文件的不同片。直至最后文件由这个不同的片组装成一个完整的文件。 在进行pause/resume的时候,我们选择的下载列表已经获取,它pause的仅仅是客户端和客户端之间的TCP连接然后恢复TCP连接。这个过程只有再resume时通过客户端向服务器端发送22个字节后即可。占用的仅仅是22个字节的网络流量。在pause是甚至不通过你登陆的服务器进行,也无须你登陆的主服务器进行任何干预和操作。所以说,它并未占用主服务什么资源,只是在你已经和主服务器连接的通道上发送22个字节而已。
emule有什么优点?
不需要服务器来存放共享文件,节省了服务器架设、海量硬盘、网络带宽。 每个用户端节点都同时是文件下载者和提供者。实际上,在你正在下载但还没当完整个文件时,你已经可以把你已下载的部分共享给别人了! 因为emule同时从很多文件提供者那里下载所需的文件最后再拼成整个文件的。加入的人越多,下载速度越快,资源越丰富。 共享方便,每个人在自已的emule里指定一个share目录就可以把自己的文件共享给网络中的其它人了。不必再辛苦地上传到服务器上了。