1. Università Ca’Foscari di Venezia
Dipartimento di Informatica
Corso di Protocolli di Reti
AA 2008-2009
Docente: Francesco Dalla Libera
SEMINARIO DI PROTOCOLLI
DI RETE :
gnutella
Bonaventura Nicola 812106 Zuin Matteo 805463
2. Indice :
1. Gnutella
2. Definizione di protocollo
3. Messaggi
4. Struttura dei messaggi
5. Payload Descriptor
6. Funzionamento
7. Vantaggi e Svantaggi
Seminario di Protocolli di Rete Gnutella – AA 2008/2009
3. Gnutella:
Gnutella è un protocollo di livello application per la ricerca distribuita, basato
sulla connessione TCP
Peer-to-Peer puro:
o Nessun server centrale
o Broadcast forzato
Nonostante il nome contenga la parola GNU, esso non è parte dell’omonimo
progetto.
Nota storica:
Sviluppato inizialmente come piccolo programma da due programmatori della
Nullsoft. Distribuito solo per un giorno tramite internet. AOL, proprietaria di
Nullsoft ordinò di cessare la distribuzione e lo sviluppo per motivi legali.
Tuttavia i dettagli sul protocollo furono resi pubblici usando tecniche di reverse
engineering e presto furono sviluppati cloni free/opensource.
Seminario di Protocolli di Rete Gnutella – AA 2008/2009
4. Definizione di protocollo:
Il protocollo Gnutella definisce il modo in cui i peer comunicano sulla rete.
Gli utenti sono chiamati Servent. Ogni servent accede a Gnutella
connettendosi ad un altro servent già in rete principalmente attraverso un
servizio di host cache
Ci si connette con i “vicini” fino ad una certa quota
Ogni client è un server e viceversa. Grazie alla sua natura distribuita una rete di
servents che implementa il protocollo Gnutella è altamente robusta.
Seminario di Protocolli di Rete Gnutella – AA 2008/2009
5. Messaggi:
I servent Gnutella comunicano all’interno della rete per mezzo di messaggi che
si dividono in tre tipologie:
1. Multicast
2. Unicast
3. Diretto
Seminario di Protocolli di Rete Gnutella – AA 2008/2009
6. Struttura dei messaggi:
Ogni messaggio scambiato in rete deve essere preceduto da un Description
Header. I messaggi Multicast e Unicast (che utilizzano l’infrastruttura Gnutella)
hanno tutti quanti lo stesso Description Header, che si antempone al messaggio
specifico.
Nome DescriptorID Payload TTL Hops Payload
campo Descriptor Length
Byte 0 - 15 16 17 18 19 - 22
Offset
• DescriptorID: identificatore del messaggio, generato casualmente
• Paylod Descriptor: descrive il tipo di messaggio che segue Es. 0x00 = Ping
• TTL: Time to live
• Hops: ogni nodo passato incrementa questo valore TTL (O) = TTL(i)+ Hops(i)
• Payload Length: rappresenta lunghezza messaggio nel pacchetto. Dimensione
massima 4Kb
Seminario di Protocolli di Rete Gnutella – AA 2008/2009
7. Payload Descriptor(1):
0x00 Ping:
Usato per attivare la ricerca di host nella rete. Questi messaggi non hanno
associato alcun carico e hanno lunghezza 0. Serve per conoscere lo stato della
rete: vengono spediti indietro pacchetti Pong
0x01 Pong:
Risposta a pacchetto Ping. Questi messaggi sono caratterizzati dai seguenti
campi :
Nome Port IP adress Number of file Number of
campo shared kylobytes shared
Byte Offset 0-1 2-5 6-9 10 - 13
• Number of file shared: numero file condivisi
• Number of kylobytes shared : dimensione totale file condivisi in Kb
Seminario di Protocolli di Rete Gnutella – AA 2008/2009
8. Payload Descriptor(2):
0x40 Push:
Un servert può inviare un Push descriptor se riceve un descrittore QueryHit da
un servent che non accetta connessioni in entrata.
Nome campo Servent Identifier File Index IP Address Port
Byte Offset 0 - 15 16 - 19 20 - 23 24 – 25
• Servent Identifier: a quale servent è indirizzato il messaggio
• File Index: codice utilizzato dal server per identificare una risorsa e compare
nei record del messaggio QueryHit
0x80 Query:
Meccanismo primario per ricerche nella rete distribuita. Se ricerca andata a
buon fine, risposta con messaggio QueryHit.
Nome campo Minimum Speed Search criteria
Byte Offset 0-1 2-…
• Minimum Speed: espressa in Kb/s
• Search criteria: campo tipo stringa, delimitato dal carattere 0x00, è composto
dall’insieme delle parole che devono essere presenti nel file di risposta.
Seminario di Protocolli di Rete Gnutella – AA 2008/2009
9. Payload Descriptor(3):
0x81 QueryHit:
Risposta a Query. Il descrittore provvede a fornire le informazioni per acquisire
la risorsa voluta.
Nome Number of Port IP Address Speed Result Set Servent
campo Hits Identifier
Byte 0 1-2 3-6 7 – 10 11 - … n – n+16
Offset
• Number of Hits: numero di record nel campo Result Set
•Speed: velocità espressa in Kb/s
• Result set: ogni record è definito nel modo seguente
Nome campo File Index File Size File Name
Byte Offset 0–3 4-7 8-…
• Servent Identifier: identificativo del servent sulla rete, solitamente risultato
funzione partendo dall’indirizzo IP
Il DescriptorID deve essere uguale a quello del messaggio Query
Seminario di Protocolli di Rete Gnutella – AA 2008/2009
10. Funzionamento(1) :
Utilizzo ultrapeer per non congestionare la rete
Un servent per connettersi alla rete Gnutella ha bisogno dei seguenti servizi:
• LocalHostCache: memorizza i servents della rete Gnutella
• GWebCache: sistema distribuito per prima connessione. Server web con
indirizzi di servents
Operazioni fondamentali protocollo:
• BootStrap
• Avvio client e caricamento LocalHostCache
• Tentativo connessione usando LocalHostCache (invio Ping)
• Insuccessio o LocalHostCache vuota interroga GWebChache
• Una volta connesso non interroga più i GWebCache
• Ricerca risorsa
• Ricerca con Query Risposta positiva con QueryHit
• Ricevuta QueryHit, scarico risorsa tramite http
Seminario di Protocolli di Rete Gnutella – AA 2008/2009
11. Funzionamento(2) :
• Routing: instradamento traffico
• I Pong inviati stesso percorso Ping
• QueryHit inviati stesso percorso Query
• Push inviati stesso percorso QueryHit
• Ping e Query inoltrati a tutti i nodi connessi tranne ai “mittenti” precedenti
• Quando si riceve un descriptor con lo stesso Paylod Descriptor e DescriptorID
di uno ricevuto precedentemente, bisogna scartarlo e non inoltrarlo
12. Vantaggi VS Svantaggi:
Vantaggi:
• Nessun server nessun collo di bottiglia no dipendenze accesso rete
• Non penalmente perseguibile
• Compatibile con qualsiasi tipo di file
• Non ci sono problemi con firewall
• Totalmente freeware
Svantaggi:
• Per connettersi serve presenza altro utente connesso
• Orizzonte limitato
• Non scalabile molto traffico per poche richieste
• Si ha difficoltà ad autenticare la fonte da cui provengono i dati
Seminario di Protocolli di Rete Gnutella – AA 2008/2009