Frequently Asked Question (FAQ)

1. General
1.1. What's Jungle Monkey?
1.2. Where do I send questions, comments, bug reports?
1.3. What's Monkey Central?
1.4. What's a private channel?
1.5. Can people upload files to my channel?
1.6. Why is it taking so long to add my 6000 files?
1.7. What's a SHA?
1.8. Why's my domain name or IP address wrong?
1.9. What's a CRP server?
1.10. How do I limit the number of connections?
1.11. Will there be a Windows port?
1.12. Why is it called "Jungle Monkey"?
1.13. What's the name of the Wonder Twin's monkey?
2. Technology
2.1. Is Jungle Monkey peer-to-peer?
2.2. How do Jungle Monkey channels work?
2.3. How are files transfered in Jungle Monkey?
2.4. What is end-host multicast (EM)?
2.5. Why don't you use IP Multicast?
2.6. Why not use IPv6 Multicast?
2.7. How does searching work?
2.8. How do I limit the amount of bandwidth that Jungle Monkey can use?
3. Jungle Monkey and other file transfer programs
3.1. What's the difference between JM and FTP?
3.2. What's the difference between JM and Hotline?
3.3. What's the difference between JM and Napster?
3.4. What's the difference between JM and iMesh or CuteMX?
3.5. What's the difference between JM and Gnutella?
3.6. What's the difference between JM and Freenet?
3.7. What's the difference between JM and ___?
4. Developers
4.1. Where is the protocol documented?
4.2. How can I help?
4.3. What do the numbers X, Y, and Z mean in "Jungle Monkey X.Y.Z"?

1. General

2. Technology

(The explainations are written for the average user. If you would like a more in-depth answer, please email us. )

3. Jungle Monkey and other file transfer programs

Gnutella is Nullsoft's file sharing program (Nullsoft is owned by AOL). It was never officially released, and it is unclear whether it will ever be officially released. However, some programmers have reverse-engineered an early beta version and written clones based on it.

Gnutella clients form a mesh. Users join the mesh by first connecting to a well-known server and then the user may manually connect to other clients. When a client joins the mesh, it floods the mesh with information about it (which is basically an address and a globally unique ID). Each client who receives this message responds with information about itself. This way, all clients know the next hop to all other clients.

Clients search for files by flooding the mesh with search messages. The message has a TTL to limit its spread. One unofficial spec says that other clients must track the search message to prevent loops. (Though this isn't necessary because clients have the routing information to do reverse path broadcasting.) If a client has a file the requester wants, it sends a message back to it. The file transfer is made directly from the client with the file using an HTTP-like protocol.

A Nullsoft employee said in an IRC chat that Gnutella would probably not scale to more than 250 or so clients. The intent was that groups of people would join one small mesh that was known only to them (eg, a group of friends might have their own mesh). The advantage of this is that there is no central server which an ISP could ban connections to.

Official Gnutella homepage (down): http://www.gnullsoft.com/ Unofficial Gnutella hompage: http://gnutella.wego.com/

Freenet is a distributed file publication system. In Freenet, each node (or "host", or "computer") has a cache of files and each file has a name. Nodes connect to each other to form a mesh (it is not specified how the host decides who its neighbors are in the mesh). The namespace in Freenet is flat and nodes can allocate names freely.

Hosts can place files in their cache or any of their neighbors caches. If a host needs a file not in their cache, it asks its neighbor for the file. If the neighbor has the file, it gives the file to the requesting host. Otherwise, the neighbor asks one of its neighbors for the file. If that neighbor doesn't have it, it asks the next neighbor, and so on. In this manner, the mesh is searched depth-first for the file (though there is a TTL on the search so that the entire mesh isn't searched). It is not specified how a host decides which neighbor to ask for a file it needs.

Note that to get a file it only needs to be in a cache _somewhere_ in the mesh. That is, the node that originally had the file may not even be in the mesh.

In Jungle Monkey, each file has a URL allocated by a host. The URL has includes the host's name, so the namespace isn't flat. File are transfered using an E2E multicast tree, but to join the tree a host must connect to the host with the file first. The advantage of this is that each host effectively has its own namespace that cannot be polluted by other hosts. The disadvantage is that two hosts may offer the same file but it would have different multicast channels and thus different URLs.

Freenet was conceived by Ian Clarke of the University of Edinburgh. It is described in his paper/tech report/thesis (?), "A Distributed Decentralised Information Storage and Retrieval System", available on the Freenet homepage. The paper also includes the results of some basic proof-of-concept experiments.

Freenet homepage: http://freenet.sourceforge.net/