Inserimento nodi

Un nodo per inserirsi in rete deve connettersi con gli altri nodi. Per connettersi in sistemi centralizzati (Napser) occorre che conosca l'indirizzo IP del server, il quale si preoccupa di gestire e mantenere le connessioni dei nodi della rete.

In sistemi decentralizzati (Gnutella) il nodo dovrebbe sapere l'indirizzo IP di almeno un nodo qualsiasi della rete. Conoscere l'indirizzo IP di un "nodo attivo" non e' cosa semplice, anzi costituisce un problema. Per risolvere il problema si utilizza una tecnica chiamata "node caching" per memorizzare una lista dei "nodi attivi" oppure si utilizzano dei veri e propri portali di accesso alla rete.

Una volta connesso, tale nodo segnala la propria presenza agli altri nodi (es. con messaggi ping). Lo scambio di questi messaggi permette ad ogni nodo di avere una visione aggiornata sullo stato della rete.

In CAN (Content Addressable Network) la rete e' disegnata con coordinate virtuali (non hanno alcuna relazione con le coordinate fisiche) e ogni nodo possiede la sua zona. In alcuni punti della zona vengono memorizzate coppie di (chiave, valore) che corrispondono alle risorse proprie del nodo.

In un sistema di questo tipo l'inserimento di un nuovo nodo avviene in questo modo: il nuovo nodo fa richiesta di entrare nella rete CAN ad un nodo di bootstrap. Questa richiesta contiene la scelta di un punto P arbitrario nello spazio di coordinate. La zona in cui giace il punto P, che appartiene ad un dato nodo, viene divisa a meta' ed ospitera' il nuovo nodo che ereditera' la coppia di (chiave, valore) memorizzate in P.





Nell'animazione sopra e' rappresentato l'inserimento di un nodo nell diverse topologie d rete





Inserimento chiavi

Oltre all'inserimento dei nodi in rete, un'altro aspetto interessante in una rete peer to peer e' l'inserimento di un file (in chiaro o sotto forma di chiave). Il processo di inserimento di un file e' preceduto dal processo di ricerca del file stesso. Infatti se il file e' gia' presente non lo si inserisce: il suo inserimento porterebbe ad una collisione; se non e' presente lo si inserisce.




Articoli:


A Scalable Content-Addressable Network