Introduction to ANet
How to Install
Introduction to ANet
This document is an introduction to ANet, the Anoymous Distributed Networking Protocol, from the users' point of view. It explains the theory which forms the basis of the ANet project, what specifically is ANet and how ANet can be used.
What is a Server?
When you use a Web Browser (Microsoft Internet Explorer or Netscape, for example), the pages and images that you see are taken from computers that are called "servers". A server is a computer that allows other computers to retreive data from them, in this case Web pages.
What is Client?
On your side, you mostly retreive data from the server when you browse the Web. Your computer is thus a "client" in the communication. Usually several clients can use the same server at the same time. The different clients cannot exchange data directly with each other, they can only exchange data with the server.
Here's an example. Let's look at the server sourceforge.net. As you can see in Figure 1, several computers, with a Web browser, can retreive at the same time the web pages stored in the server. The clients are not connected to each other, but each client can use the "Discussion Boards" available at sourceforge.net to store some information which can be read, through the server, by other clients.
Another example is AIM (America Online Instant Messenger). If user Bob wants to send a message to user Alice, then the message will go from Bob, to the AIM server, to Alice. The advantage of doing so, instead of Bob sending the message directly to Alice, is that Alice could be using any computer to receive the message, as long as Alice is connected to the AIM server with the same user name. Then, Bob only has to know what is the user name of Alice, without knowing where Alice is, and Bob will be able to send a message to Alice when Alice is connected to the AIM server.
What happens if you want to send data to more than one computer?
Now, let's say that you want to send a message to a group of 10 people. Obviously, you can send the message to server which, in turn, will send the message to each person in the group. But would there be another way?
How a connection between a client and a server is made?
Think about the Internet as a whole. Your computer, when it is connected to the Internet, can communicate with almost any other computer on the Internet. But how the Internet works anyways? Is it some kind of big server?
Obviously, it is impossible that the Internet is a single, big computer that has a single connection with all the computers on this planet. Obviously, several connections can be shared with a single but faster connection, a bit like highways. But if you look at roads, you can easily see that there are several roads, interconnected to each other, and some roads are fater than other.
Computers are interconnected in a similar way to make the Internet. They produce, as a whole, a Network.
(The Internet is, actually, a "Network of Networks", hence the name Internet)
If you look at Figure 2, you will see an example of a Network. Each circle (node) represents a computer, and each line represents a "connection" between two computers. Two computers can exchange data with each other only if there is a connection between them. Thus, A and Z cannot exchange directly data with each other.
Different ways to send data from A to Z
But what if A wanted to send a message to Z? The message could take a path through B and F, or through E and H, or though many other possible paths.
Or it could do what we call a "broadcast": A attaches the name "Z" to the message as the destination, A sends the message to B and, in turn, everyone that receives a copy of that message will make a copy of it to all the other computers they are connected to until everyone received it. This can be visualized as ssome kind of chain reaction, or some "ripple effect". Then, once all computers has a copy of the message, each computer looks at the destination name attached to the message (Z) and discards it if the computer's name does not match the destination name. Obviously, this is much slower that taking a direct path, since several copies are made, but it can have several advantages, as you will see later.
As you can now see, several things can be made to transfer some data from a computer to another in a Network. But which computer makes the decision?
In the previous example, A could make the whole decision. If a path has to be taken, the complete path information is attached to the message. But, in another way, A could tell B: "I want you to send that message to Z". Then, B will do its best to bring the data closer to Z. As you can see, A has no control to what happens to the message once it is in B's hands. But we just split up the problem of sending the message from A to Z into smaller, easier ones.
Here, we can say that the "logic" used to send some message from a point to another is duplicated across the different computers. The logic is now Distributed. This is why this kind of network is called a Distributed Network.
One particularity of Distributed Networks is that since the logic is "split up" to different computers, it is more difficult to know what happens in the network as a whole. For example, if A forgets to write "This message came from A" in the message, it will be very difficult for Z to know where the message came from. Z would need to ask F: "Where this came from?", and so on until it is traced back to the source. And that method doesn't work if one computer says: "I forgot", which makes everything harder.
Another particularity of Distributed Networks is that if one computer cannot be accessed anymore, the network will still be able, as a whole, to transport messages between computers. For example, with AIM, if the AIM server cannot be accessed anymore, than no one can use AIM to exchange messages. Same thing for Web sites: if the Web serve cannot be accessed anymore (is "down"), then no one will be able to browse the Web site anymore. But with a Distributed Network, the service (instant messaging, web browsing) remains as a whole, even if the information maintained by the computer that is "down" cannot be accessed anymore. For example, if F is "down" in Figure 2, then A can still send messages to Z through the path A-E-H-Z, even if no messages can be sent to F anymore.
The goal of the ANet project is to help developers to implement and use Distributed Networks. This is because Distributed Networks share some common ideas and ANet tries to implement these ideas.
ANet can be seen as a canvas: all the ideas about Distributed Networks are already there, you just need to "fill in the blanks". Thus, ANet should be easy to use and very flexible.
Flexibility and ease of use is the major advantage ANet has over any other protocol for Distributed Networking that currently exist. If it's a distributed network, it can be done in ANet.
The term "Anonymous", which is the "A" in ANet, represents that flexibility, or more precisely, its "lack of assumption" about how it will be used by the network developers. This "Anonymity" is characteristic to some Distributed Networks, actually all "Anonymous Networks" must be "Distributed Networks". More detailled information about this is in the "Developer Introduction to ANet".
Why Do We Need ANet?
Since ANet can implement any Distributed Network, ANet is useful if we need to implement a Distributed Network. So, why do we need an Distributed Network? Why is it so useful?
The Network, as a means of data transportation, remains avalable, even if some of the computers that make the network stop working.
Data sent in the Network can be eaily sent to many computers in the Network.
The topology of the Network can be changed, and this change is transparent to most of the applications that use the Network.
How ANet Works
Client VS. Daemon
To become part of a Distributed Network, you first need to install the ANet 'daemon'. It is a program that will run in the background, without taking any space on your screen.
The settings of the ANet Daemon can be changed by changing an XML file. But, since you might want to use the Distributed Network yourself, you can use an ANet Client to change the settings in the Daemon.
An ANet Client is an application that communicates with the Daemon to configure and monitor the Daemon, or most of the time, to receive and send data to the Distributed Network.
Let's say that there is one Distributed Network for instant messaging (similar to ICQ) and another one for discussion groups, and you want your computer to participate in both of these networks. What can you do?
ANet works with the idea of "Clusters". A cluster is a Distributed Network that share the same "rules". The network for instant messaging might not allow files to be transfered, while it is allowed for the discussion group network. A Cluster might have some special rules, like the speed of the connections, to geographical location (the average round-trip time), and so on.
Also, ANet uses what is called a "Cluster Group". A cluster group is just several clusters grouped together because they are alike, yet distinct. As an example, there are several instant messaging protocols (AIM, Yahoo, Jabber, ICQ, MSN...). They are icompatible with each other, but you just use them all at the same time, so you can be reached through those various services.
Cluster groups are usually made to group together clusters that allow the same service. A "service" is some kind of application you can use on a Distributed Network (chat, instant messaging, discussion groups, file sharing...). Not all services are allowed or supported on all networks, but several networks might support the same service.
As a result, the clients send or receive data from a cluster group. You want to use a chat client for ANet? You find one or more clusters that allow the chat service, you make a cluster group called "Chat" that groups together those clusters, and you tell the client to use the cluster group "Chat".
There is still another way to use ANet without having to install any ANet Daemon or Client at all.
Remember, ANet is used to implement a Distributed Network. But you don't have to be in the network to use it. Likewise, your personal computer at home is most likely to use the internet, not be part of its structure.
This approach is very similar to what you already know about "using the internet". You launch an application and somehow, it connects "somewhere".
The development of ANet has just started. As a result, ANet is not available in a stable form yet. Check out the ANet web site (http://anet.sourceforge.net/) often as it is regularly updated.
So this concludes the introduction of ANet, the Anonymous Distributed Networking Protocol. If you have any question about this document or about ANet in general, feel free to contact me (Benad). You can view my contact information in the "Contact" page.