eD2k & Kademlia

来源:互联网 发布:如何对进销存数据分析 编辑:程序博客网 时间:2024/04/30 00:53

F.A.Q. on eD2k-Kademlia

Are there any limitations on the ED2K network?

Not much, but yes, there are: two natural limits and a "forced" limitation. The two natural limits have already been mentioned before. First, the issues on LowID users (their transfers involve data through the server and two LowID clients can't share between them). The second, although ED2K is a p2p protocol, it needs servers to establish the p2p connection. This latter one is solved in the Kademlia protocol.
About the "forced" limitation, it's only a limit to make sure that clients share so that the ED2K network will not disappear: clients which have an upload limit of X KBps, where X is between 0 and 3.99 (both included) can download at a maximum of X*3 KBps. Clients which have an upload limit of Y KBps, where Y is Between 4 and 9.99 (both included) can download at a maximum of Y*4 KBps. Clients with an upload limit of 10KBps or more have no downloading limitations. This restriction is set in the client application so it could be by-passed by hacking the code, but that would probably result in being banned from the servers you connect to.
Also, any client is forced to allow at least three upload slots, so it's not possible to allow more than upload_limit/3 KBps per slot.
There is one last limit: Network file limit is 4GB.
Additionally, this is not an eD2k limitation but a server limitation, servers will only send 300 results for your searches, so don't expect any more results.

2.1. The eD2K Network

As I stated earlier, the eD2K Network began with eDonkey2000. Now there are many clients that use this Network. The Network is run by many different servers, not just one like a lot of other P2P networks. To connect to a server you must first get a server list for your client, we will see this later. When you connect to a server, the server tests to see if other clients can connect to you. If they can connect to you, you will receive a High ID, if they cannot, you will receive a LowID. We will read more about ID later. Once you have connected, your list of shared files will be sent to the server, the server will then add this list of files to the database. The servers do a lot of work including performing searches and gathering sources. Without these servers the Network would be useless and even one of these big servers falling could be fatal to the Network. Files are transferred in chunks, or Parts. Anybody who has downloaded a full part of a file is known as a source. A part of a file is 9.28MB. This Part system means that big files can be spread easily around the Network. We will read later how you can use this to your advantage to achieve higher download speeds.

2.2. The Kademlia Network

Whereas the eD2K Network requires you to connect to servers, Kademlia is a serverless network. Well, it's serverless to the degree that you wont have to download a massive server list and keep it up to date to use it. Kademlia, sort of, makes a server out of every user. When you connect to the Kademlia Network, you are given an ID if you have a HighID. To connect to the network you require the IP of an eMule client already connected to it. A test like the HighID test in the eD2K Network is then performed, if other clients can connect to you, you will be given an Open status. If they cannot connect to you, you will be given a Firewalled status. If you have a Firewalled status, you will be required to connect to a server because Kademlia doesn't support Firewalled clients yet, as it is still in it's testing phase. As a client on the Kademlia Network, you are assigned a responsibility. Each client has a unique Hash ID and your responsibility might be to handle searches for a specific keyword. Then when another client searches the Network, the clients responsible for the keywords are found and the search results can be brought back. This is a pretty clever idea and it makes use of every client connected to the network.

2.3. eD2K Vs. Kademlia

So which network is better than the other?? That is the question you probably would ask first. The answer is.. neither is better. In fact, the only difference between the Networks is how you connect and how source finding and searches are performed. The files on each network are not completely different at all. One however might have more users than the other making the amount of files higher. However, there are some differences between them that have to be noted. Firstly, eD2K depends on Servers to work. If the biggest server collapses the Network potentially could be crippled until more servers come to facilitate. Kademlia however, doesn't depend on major servers but to work properly would depend on a high client count. eMule now is the only client that supports Kademlia also, whereas many many clients support eD2K which means eD2K will probably for a very long time have far more users than Kademlia. Basically, each has it's good and bad points, neither Network is perfect and lets not forget, Kademlia is still just in it's early stages. I, for one, am looking forward to it's future.