Your SlideShare is downloading. ×
0
Gnutella
Gnutella
Gnutella
Gnutella
Gnutella
Gnutella
Gnutella
Gnutella
Gnutella
Gnutella
Gnutella
Gnutella
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Gnutella

558

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
558
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
7
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 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

×