1. aMule 1.1 Arch下的SVN版amule 1.2 amule使用的TCP和UDP端口 1.3 aMule的组件: 2. emule网络指南(2011官方原文) 2.1 基础知识 2.2 传统的基于服务器的eD2k 2.3 无服务器的Kademlia网络 3. amule使用网络的维基百科页面 3.1 amule的wiki帮助页面 3.2 EDonkey_network 3.3 Kad_network 4. amul用户指南 4.1 连接到服务器 4.2 什么是LowID和HighID? 4.3 为何下载超慢 4.4 防火墙需要开放那些端口 4.5 网络有任何限制吗 5. 更多相关
1. aMule
https://zh.wikipedia.org/wiki/AMule
https://en.wikipedia.org/wiki/AMule
aMule是一个开源免费的跨平台(Windows,Linux,macOS,BSD衍生系统,lirx,Solaris)P2P文件共享软件,遵循GNU通用公共许可证协议发布。类似于eMule。基于xMule和lMule。可应用eDonkey网络协议,也支持KAD网络。
http://www.amule.org/
https://github.com/amule-project/amule/releases
除了稳定版本(停留在2016年9月的2.3.2版本),该项目还提供SVN版本作为不稳定版本。
1.1 Arch下的SVN版amule
https://wiki.archlinux.org/index.php/AMule
$ amule -v
aMule SVN compiled with wxGTK2 v3.0.4 and Boost 1.69 (Snapshot: rev. 11025) (OS: Linux)
$ pacman -Si amule
Repository : community
Name : amule
Version : 11025-1
Description : An eMule-like client for ed2k p2p network
Architecture : x86_64
URL : http://www.amule.org
Licenses : GPL
Depends On : wxgtk gd geoip libupnp crypto++ boost-libs
Packager : Antonio Rojas <arojas@archlinux.org>
Build Date : 2019-09-01T21:14:07 CST
Validated By : MD5 Sum SHA-256 Sum Signature
该包提供两种系统 服务:amuled和amuleweb。一旦amulweb服务启动,可用http://127.0.0.1:4711(或与您的主机的外部地址)访问,部分功能。
$ sudo systemctl status amuled.service
$ sudo systemctl status amuleweb.service
1.2 amule使用的TCP和UDP端口
服务器端口4661 TCP和4665 UDP仅由EDonkey网络使用。因此,Kad网络将仅使用4662 TCP和4672 UDP。
由于大多数端口都可以配置为设置为任何其他数字,因此将列出默认值。流量方向是从客户端角度(您):
- 4661 TCP(传出):服务器用来监听连接的端口(由服务器定义)。
- 4662 TCP(传出和传入):客户端到客户端的传输。
- 4665 UDP(传出和传入):用于全局eDonkey服务器搜索和全局源查询。始终是客户端TCP端口+ 3
- 4672 UDP(传出和传入):扩展的eMule协议,队列评级,文件重传Ping,Kad。如果NAT(网络地址转换)重新映射此端口号,则Kad将处于“防火墙”状态。
- 4711 TCP:WebServer侦听端口。通过网络访问aMule时使用.
- 4712 TCP:外部连接端口。用于在aMule和其他应用程序(例如aMule WebServer或aMuleCMD)之间进行通信。
1.3 aMule的组件:
- amule(服务器/客户端)- aMule 的桌面程序
- amuled(服务器)- 后台程序,可配合 amulecmd 或 amulegui 使用
- amulecmd(客户端)- 可以在指令模式下使用
- amulegui(客户端)- 在图形接口下使用
- amuleweb(服务器)- 打开后,可以在浏览器下使用 aMule
- ed2k(实用程序) - ed2k 链接处理器,浏览器可以通过该命令向 aMule 添加 ed2k 链接。
- alc(实用程序) - 计算文件 ed2k 链接的工具
- alcc(实用程序) - alc 的 CLI 版本
Arch Linux的SVN版还有下面2个小工具
- aLinkCreator aMule ed2k link creator ed2k链接创建者
- wxCas aMule online statistics 在线统计
2. emule网络指南(2011官方原文)
http://www.emule-project.net/home/perl/help.cgi?l=42
http://www.emule-project.net/home/perl/help.cgi?l=42&rm=show_topic&topic_id=1547
从0.42.1版开始,eMule(电骡)就具有了两个不同特征的网络——传统的基于服务器的eD2K网络(eDonkey2000 Network - 电驴网络)和一个基于Kademlia的全新的无服务器拓扑结构网络。
本质上两个网络的作用一致。它们两者都分别提供一种寻找其他用户及你想下载的文件的方法。
2.1 基础知识
文件识别
所有文件都有一个Hash——哈希值(指纹)。Hash是独一无二地标识文件的字母和数字。一个文件的文件名可能千变万化,但文件的Hash却不会因此改变。因而不管其他用户给这个文件起了什么名字,每个用户都可以找到这个文件的来源。
另外,文件会被分割成 9.28 兆大小的文件片段。每个片段都有Hash标识。举例来说,一个600兆的文件会被分成65个片段,接着每个片段会被标上Hash。然后文件的Hash就根据这些文件片段的Hash被计算出来,并用在网络中作为文件标识。
其他客户端的识别
正如文件Hash一样,每一个网络中的用户都有一个永久性的Hash。这种用户识别依靠一个公钥/私钥交握机制的强力保障以防止滥用。
数据下载
应当要理解的是 eMule实际的下载与两个网络的选择无关。两个网络的拓扑结构只与文件搜索以及为文件寻找来源客户端有关。
在找到来源之后,你的客户端就会连接上它。来源客户端会将该下载任务排到等候队列中。在过了一段等候时间后排到了队列第一位时,就轮到你来接收它的数据了。
2.2 传统的基于服务器的eD2k
与网络的连接
eD2k网络的核心是eD2k服务器。要连上该网络的客户端须先连接到一个服务器。
当你的客户端连接到服务器的时候,服务器会检查别的客户端是否能不受限制地连接到你的客户端。如果能,服务器就会给你的客户端指派一个所谓的High ID(高ID)。如果通信受到阻碍,服务器就会给你指派一个Low ID(低ID)。
收到指派的ID后,eMule会将共享文件的列表发给服务器。服务器会将这列表里的文件名与Hash记录到它的数据库。
文件搜索
连接到网络后,客户端就可以按文件名关键字搜索文件。搜索可以是本地的或是全局的。对于本地搜索(只在你连接到的服务器中搜索),其搜索速度快但结果较少。对于全局搜索(在网络上所有的服务器中搜索),其所花时间较长但结果更多。搜索时,每个的服务器都在它的本地数据库中查找并返回任何包含关键字的文件名(与Hash)。
搜索文件来源
添加下载任务可以通过 eMule的搜索功能或是很多网站提供上的eD2k链接。
一旦任务添加到下载列表,eMule先向本地(连接到的)服务器后向所有网络上其他的服务器查寻该下载任务的来源。每个服务器会在它的数据库中寻找该文件的 Hash并返回数据库中拥有该文件的客户端。
文件来源是其他至少拥有相同Hash的文件的一个片段(9.28兆)的那些客户端。
2.3 无服务器的Kademlia网络
与网络的连接
连接到这个网络只需要任何一个已经连接到这个网络的eMule客户端的IP地址和相应端口。这被称作【引导程序】。
一旦一个客户端连接到了网络,这个客户端就会请求其他客户端判断自己是否能不受限制地被连接上。这个过程与服务器判断 HighID/LowID 很相似。若连接不受限制,你就被会指派一个ID(类似于HighID)并标为开放状态。若连接收阻碍,你就被标为通过防火墙状态。从v.44a 版本开始,Kademlia网络为通过防火墙状态的用户提供了 Buddy(搭档)功能。Buddies(搭档)是其他拥有开放状态的Kademlia客户端。他们为那些通过防火墙状态的用户担任中继站,并帮着处理那些通过防火墙状态的用户所无法处理的连接。
Kademlia上的文件搜索
在这个网络里不论你搜索什么方法都-样。搜索文件名、下载来源或是其他用户的过程是一样的。
网络中没有服务器记录各个客户端和它们共享的文件-本质上,每一个客户端都又是一个小服务器。
由于每个客户端都由独一无二的Hash,Kademlia的理念是依靠Hash赋予客户端一些“责任”。每个Kademlia网络中的客户端都成为提供某些关键词和来源的服务器。客户端的Hash决定了它所提供的关键词和来源。
因此,每种搜索的目标就是找到对当前搜索主题负有责任的客户端。这个过程依赖于通过询问其他客户端获得通往目标客户端的最短路径,以此来推出自己与目标客户端的大致距离的复杂计算。
总结
两个网络用完全不同的理念来做相同的事:搜索文件和寻找来源。Kademlia网络的主要目标是独立于服务器并提高可扩容性。服务器只能处理有限数量的用户,而且大型服务器会拖累网络。
Kademlia有自组织性,并且它可以依照用户数量和其连接质量来自我调整。因此,它更能防止大型网络中的传输损失。
3. amule使用网络的维基百科页面
3.1 amule的wiki帮助页面
http://wiki.amule.org/wiki/FAQ_eD2k-Kademlia#What_is_ED2K.3F
http://wiki.amule.org/wiki/FAQ_eD2k-Kademlia#What_is_Kademlia.3F
3.2 EDonkey_network
https://zh.wikipedia.org/wiki/EDonkey网络
https://en.wikipedia.org/wiki/EDonkey_network
eDonkey网络(英语:eDonkey Network,也称eDonkey2000 Network、eD2k、eD2k网络或电驴网络),是一种分布式的、主要基于服务器的P2P文件分享网络。它通常用于共享电影视频文件、音乐专辑和计算机程序软件等。和大多数文件共享网络一样,它是分布式的,文件不存储在任何中枢服务器之上,服务器参与用户之间基于点对点原理相互数据交换。
现在,eDonkey网络不隶属于任何组织,也不被任何组织所维护。eDonkey协议原先由美国的MetaMachine公司原创,并用于eDonkey2000软件。2005年,他们遭到RIAA的侵权控告而关闭了公司,并停止了eDonkey2000和协议的开发。
与Kad网络互联,eMule同时支持ed2k网络和Kad网络,两个网络的文件可以自由分享。
3.3 Kad_network
https://zh.wikipedia.org/wiki/Kad網路
https://en.wikipedia.org/wiki/Kad_network
Kad网络(英语:Kad Network)是一个利用Kademlia点对点重叠协议的点对点网络。大多数Kad Network上的用户,均会连接到eDonkey网络服务器。而Kad Network客户端,一般会查询eDonkey Network上已知的节点,来获取Kad Network的初始节点。
Kad Network利用UDP
- 查找ed2k散列来源
- 使用文件名称的关键字,来搜索ed2k散列
- 查找文件的注解与评分(散列)
- 为防火墙内的节点(低ID)提供伙伴服务(buddy service)
- 贮存位置、注解与(来自关键字的)文件名
注意Kad并不会实际用来在点对点网络中发送文件,而是在文件开始发送时,用户之间彼此直接连线(透过标准IP网络)。
4. amul用户指南
http://wiki.amule.org/wiki/Main_Page
http://wiki.amule.org/wiki/Getting_Started
4.1 连接到服务器
http://wiki.amule.org/wiki/Getting_Started#Connecting_to_a_Server
空列表,由于这是您第一次运行aMule,因此您没有任何服务器。
要解决这种情况,只需在包含文本http://gruk.org/server.met.gz的文本字段中单击(您也可以使用URL'http: //peerates.net/servers.php'),然后按回车。下载完成后,将弹出一个对话框并再次关闭。
- 查看列表:http://gruk.org/list
- 打开:https://edk.peerates.net/servers/online-servers-list
- 点击:[download list in emule]更新到本地。
您现在应该拥有完整的服务器列表,如果没有在google中搜索server.met,请替换上面提到的网址,然后按Enter键开始下载。
接下来,您需要连接到服务器。通常,最好选择一个尽可能多的用户,但是现在,让我们单击窗口左上角附近的大“连接”按钮。这会将您连接到随机服务器。在aMule与服务器联系并尝试建立连接时,请等待。一旦发生这种情况,请继续进行下一部分。
连接到Kademlia网络
要连接到Kademlia网络(前提是已在首选项中将其启用),您需要做的就是按顶部工具栏上的“连接”按钮。请注意,手动连接到服务器(通过双击或右键单击并选择“连接到服务器”项)不会将您连接到Kademlia网络。连接到Kademlia网络的另一种方法是进入“网络”页面上的“ Kad”子页面,然后按“ 来自已知客户端的Bootstrap ”按钮。如果这是您第一次使用Kad,则可能需要更新您的nodes.dat文件,方法是单击“ URL”文本字段并按Enter,或者单击“蓝色播放按钮”通过该栏http://forum.amule.org/images/bunfirlite/lastpost.gif。由于aMule运行时节点列表保持最新,因此以后不必再次执行此操作。
4.2 什么是LowID和HighID?
http://wiki.amule.org/wiki/FAQ_eD2k-Kademlia#What_is_LowID_and_HighID.3F
每个客户端都分配有一个唯一的ID(标识)号,该ID会将客户端与服务器上的所有其他客户端区分开。
如果此ID低于16777216(1600万),则您有一个LowID,而超出的部分都是HighID。
客户端接收的ID是高还是低取决于客户端以及客户端TCP端口是否打开。客户端TCP端口是位于“首选项”->“连接”中的可自定义选项。默认端口为4662。
通过上一步成功连接到服务器,就会获得一个ID,并且会标示出是LowID或者HighID.
4.3 为何下载超慢
http://wiki.amule.org/wiki/AMule_is_slow
一些ISP阻止或限制到标准eD2k 端口的连接。
4.4 防火墙需要开放那些端口
即使未打开任何特定端口,aMule仍然可以工作,但是在这种情况下,您将不会获得HighID。
http://wiki.amule.org/wiki/FAQ_eD2k-Kademlia#Which_ports_do_I_have_to_configure_in_a_firewall_or_router_to_run_aMule.3F
http://wiki.amule.org/wiki/FAQ_eD2k-Kademlia#Why_does_Kademlia_still_say_it_is_.22firewalled.22.3F
http://wiki.amule.org/wiki/FAQ_eD2k-Kademlia#What_does_each_port_do.3F
4.5 网络有任何限制吗
http://wiki.amule.org/wiki/FAQ_eD2k-Kademlia#Are_there_any_limitations_on_the_ED2K_network.3F
http://wiki.amule.org/wiki/FAQ_eD2k-Kademlia#Are_there_any_limitations_on_the_Kademlia_network.3F
5. 更多相关
分享应用程序对比
https://en.wikipedia.org/wiki/Comparison_of_file-sharing_applications
bitTorrent客户端对比
https://en.wikipedia.org/wiki/Comparison_of_BitTorrent_clients
下载管理对比
https://en.wikipedia.org/wiki/Comparison_of_download_managers
文件传输协议对比
https://en.wikipedia.org/wiki/Comparison_of_file_transfer_protocols
https://en.wikipedia.org/wiki/Comparison_of_eDonkey_software
https://zh.wikipedia.org/zh-tw/對等網路
https://en.wikipedia.org/wiki/Peer-to-peer
https://en.wikipedia.org/wiki/Kademlia
使用Kademlia 算法的公共网络(这些网络彼此不兼容):
- I2P-匿名覆盖网络层。
- Kad Network-由eMule社区最初开发,以取代eDonkey2000网络的基于服务器的体系结构。
- Ethereum -以太坊的区块链网络堆栈中的节点发现协议基于对Kademlia的稍加修改的实现。
- Overnet network:使用KadC,可以使用C库来处理其Kademlia。(停止开发Overnet)
- BitTorrent使用基于Kademlia算法实现的DHT来获取无追踪种子。
- Osiris sps(所有版本):用于管理分布式和匿名Web门户。
- Retroshare —具有安全VOIP,即时消息传递,文件传输等功能的F2F分散式通信平台。
- Tox-完全分布式的消息传递,VoIP和视频聊天平台
- Gnutella DHT —最初由LimeWire 扩展,以增强Gnutella协议以查找备用文件位置,现在已由其他gnutella客户端使用。
- IPFS -基于libp2p一个对等网络的分布式文件系统。
- TeleHash是一种网状网络协议,使用Kademlia来解决各方之间的直接连接。
- iMule - 文件共享 工具软件I2P。
- OpenDHT -库提供的Kademlia的实现,通过使用雅米等。
- GNUnet-用于构建安全,分散和保护隐私的分布式应用程序的备用网络堆栈。使用称为R5N的Kademlia随机版本