[ANet-devel] Re: Basic requirements
Status: Abandoned
Brought to you by:
benad
From: Benoit N. <be...@ma...> - 2000-12-02 15:34:56
|
>I think we're getting mixed up here between the message protocol and the needs >of applications built upon it. If you have a generic anonymous message >library >that allows you to send a message between two nodes of the distributed network >then you'll be able to use it to send queries or data transfers. Not data transfers, as somehow two nodes must become proxies that communicate directly with each other (IP to IP), and not through the network. But the data that is transfered from the node to the proxy is transfered like queries. >I'm thinking about the mechanics of moving a piece of data around the network >no what the nodes do with the data once they have it. Ooohhhhh... You mean the "packets" of data that will be moving around the network? >The query is a broadcast message - please can I have a file called X. You got it. >Static data is a piece of a file - please transmit this data from A to B. Uh... No. "Static" means that some data stays for a long time in the network. Maybe I wasn't clear enough about that. So, unless you want a file to "stay" in the network (with cache systems), you never use static data, especially when you just want to transfer some data from A to B. "Static data" means that the data will be distributed to the whole network (like queries), but is bigger than queries and will stay in the network a longer amount of time. "Two way data transfer" means that two nodes want to exchange between each other and that the data should neither be cached nor duplicated to the whole network. Those two nodes can be any node on the network, not just two nodes that are adjacent that are connected to each other, IP to IP, as part of the network. What I'm trying to do here is to define the way ALL "packets" of data should behave on the network, so that any service you can think of can work on top of that. Think about what happens with ports in TCP. You don't accept connections on ports you don't know how to handle. But then, let's say that you want to make a new service in ANet. If it worked like TCP (behavior is not defined), everyone on the network would have to download your service module to make the module work on the network, otherwise you might find it difficult to connect to the network, as no one can accept the connection for your service, as no one knows how to handle your "packets". The idea of splitting structure and behavior works great in TCP/IP, as you connect to one specific IP address, but that cannot work in a distributed network. So, behavior has to be defined in ANet. >If you want a chat type system then you'll also need - please transmit this >data from here to this group of addresses. That shouldn't be allowed. The goal of ANet is to have no need to be identified by any "address" whatsoever. So, either you "find" the addresses (or more precisely the proxies) that want the data with queries and then upload the data to them, or you duplicate the data to the whole network as static data. Chat should then work as queries, as it already did some time ago in Gnutella. - Benad |