[Anet-checkins] CVS: Documentation/user/text userIntro.txt,NONE,1.1
Status: Abandoned
Brought to you by:
benad
From: Benoit N. <be...@us...> - 2002-01-01 22:55:56
|
Update of /cvsroot/anet/Documentation/user/text In directory usw-pr-cvs1:/tmp/cvs-serv12479/user/text Added Files: userIntro.txt Log Message: Starting user documentation. --- NEW FILE: userIntro.txt --- ******User Introduction to ANet. ***Client/Server - 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 a 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. - Examples 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. ***Distributed Networks - 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) - Graph example If you look at Figure 2, you will see an example of a Network. Each dot (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. - Distributed Networks 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. ***ANet 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. 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 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? - Availability The Network, as a means of data transportation, remains avalable, even if some of the computers that make the network stop working. - Data distribution Data sent in the Network can be eaily sent to many computers in the Network. - Flexibility The topology of the Network can be changed, and this change is transparent to most of the applications that use the Network. |