cerca
Sistemi - Gnutella
modifica cronologia stampa login logout

Wiki

UniCrema


Materie per semestre

Materie per anno

Materie per laurea


Help

Return to Sistemi - Gnutella  (Edit)

Uni.Gnutella History

Hide minor edits - Show changes to output

Changed line 188 from:
[[Torna alla pagina di Sistemi Anticoncezionali delle Reti e dei Damiani->Sistemi]]
to:
[[Torna alla pagina di Sistemi per l'elaborazione delle informazioni->Sistemi]]
Changed line 2 from:
[[Torna alla pagina di Sistemi Anticoncezionali delle Reti e dei Damiani->Sistemi]]
to:
[[Torna alla pagina di Sistemi per l'elaborazione delle informazioni->Sistemi]]
Changed line 10 from:
# [[#s1|Cosa è Gnutella]]
to:
# [[#s1|Cos'è Gnutella]]
Changed line 26 from:
!!Cosa è Gnutella
to:
!!Cos'è Gnutella
Changed lines 149-154 from:
->'''GET /get/<File Index>/<File Name>/HTTP/1.0 \r\n \\
->Connection: Keep-Alive \r\n \\
->Range: bytes=0- \r\n \\
->User-Agent: Gnutella \r\n \\
->\r\n \\'''
to:
->'''GET /get/<File Index>/<File Name>/HTTP/1.0 \r\n'''
->'''Connection: Keep-Alive \r\n'''
->'''Range: bytes=0- \r\n'''
->'''User-Agent: Gnutella \r\n'''
->'''\r\n'''
Changed lines 157-161 from:
->'''HTTP 200 OK\r\n \\
->Server: Gnutella \r\n \\
->Content-type: application/binary \r\n \\
->\r\n \\\'''
to:
->'''HTTP 200 OK\r\n'''
->'''Server: Gnutella \r\n'''
->'''Content-type: application/binary \r\n'''
->'''\r\n'''
Changed lines 149-154 from:
-> '''GET /get/<File Index>/<File Name>/HTTP/1.0 \r\n \\
-> Connection: Keep-Alive \r\n \\
-> Range: bytes=0- \r\n \\
-> User-Agent: Gnutella \r\n \\
-> \r\n \\'''
to:
->'''GET /get/<File Index>/<File Name>/HTTP/1.0 \r\n \\
->Connection: Keep-Alive \r\n \\
->Range: bytes=0- \r\n \\
->User-Agent: Gnutella \r\n \\
->\r\n \\'''
Changed lines 156-160 from:
-> HTTP 200 OK\r\n \\
-> Server: Gnutella \r\n \\
-> Content-type: application/binary \r\n \\
-> \r\n \\\
to:
->'''HTTP 200 OK\r\n \\
->Server: Gnutella \r\n \\
->Content-type: application/binary \r\n \\
->\r\n \\\'''
Changed lines 147-156 from:
Una volta che il ''servent''(quello che ha inviato il Ping) ha ricevuto i risultati della Query, può selezionare il file da scaricare. Il download viene eseguito tramite un messaggio HTTP GET con questa forma:\\
GET /get/<File Index>/<File Name>/HTTP/1.0 \r\n \\
Connection: Keep-Alive \r\n \\
Range: bytes=0- \r\n \\
User-Agent: Gnutella \r\n \\
\r\n \\

mentre la risposta corrispondente del ''servent''(che ha inviato il Pong) sarà un messaggio HTTP OK, seguito dal file. Tutto il traffico Gnutella passa attraverso la rete Gnutella, ma il traffico di dati passa attraverso una connessione TCP diretta tra il nodo che richiede il file e quello che risponde.\\
to:
Una volta che il ''servent''(quello che ha inviato il Ping) ha ricevuto i risultati della Query, può selezionare il file da scaricare.\\
Il
download viene eseguito tramite un messaggio HTTP GET con questa forma:\\
-> '''GET /get/<File Index>/<File Name>/HTTP/1.0 \r\n \\
-> Connection: Keep-Alive \r\n \\
-> Range: bytes=0- \r\n \\
-> User-Agent: Gnutella \r\n \\
-> \r\n \\'''

mentre la risposta corrispondente del ''servent''(che ha inviato il Pong) sarà un messaggio HTTP OK (seguito dal file) con questa forma:\\
-> HTTP 200 OK\r\n \\
-> Server:
Gnutella \r\n \\
-> Content-type: application/binary \r\n \\
-> \r\n \\\

Il protocollo Gnutella fornisce supporto per
il parametro HTTP Range, quindi i downloads interrotti possono essere ripresi da dove erano arrivati.\\
Tutto il traffico Gnutella passa attraverso la rete Gnutella, ma il traffico di dati passa attraverso una connessione TCP diretta tra il nodo che richiede il file e quello che risponde.\\\
Changed lines 147-149 from:
Una volta che il ''servent'' ha ricevuto i risultati della Query, può selezionare il file da scaricare. Il download viene eseguito tramite un messaggio HTTP GET, mentre la risposta corrispondente del ''servent'' sarà un messaggio HTTP OK seguito dal file. Tutto il traffico Gnutella passa attraverso la rete Gnutella, ma il traffico di dati passa attraverso una connessione TCP diretta tra il nodo che richiede il file e quello che risponde.\\
to:
Una volta che il ''servent''(quello che ha inviato il Ping) ha ricevuto i risultati della Query, può selezionare il file da scaricare. Il download viene eseguito tramite un messaggio HTTP GET con questa forma:\\
GET /get/<File Index>/<File Name>/
HTTP/1.0 \r\n \\
Connection: Keep-Alive \r\n \\
Range: bytes=0- \r\n \\
User-Agent: Gnutella \r\n \\
\r\n \\

mentre la risposta corrispondente del ''servent''(che ha inviato il Pong) sarà un messaggio HTTP OK,
seguito dal file. Tutto il traffico Gnutella passa attraverso la rete Gnutella, ma il traffico di dati passa attraverso una connessione TCP diretta tra il nodo che richiede il file e quello che risponde.\\
Changed lines 110-114 from:
* '''Servent Identifier''':
* '''File Index''':
*
'''IP Address''':
* '''Port''':
to:
* '''Servent Identifier''': stringa(16 byte) che identifica univocamente il ''servent'' sul network che stà richiedendo di forzare il file con l'index ''File Index''
* '''File Index''': index che identifica univocamente il file che deve essere forzato dal ''servent''.
* '''IP Address''': indirizzo IP(big-endian) dell'host tramite il quale il file con ''File Index'' dovrebbe essere forzato.
* '''Port''': porta tramite la quale il file con index ''File Index'' dovrebbe essere forzato.
Changed lines 147-149 from:
to:
Una volta che il ''servent'' ha ricevuto i risultati della Query, può selezionare il file da scaricare. Il download viene eseguito tramite un messaggio HTTP GET, mentre la risposta corrispondente del ''servent'' sarà un messaggio HTTP OK seguito dal file. Tutto il traffico Gnutella passa attraverso la rete Gnutella, ma il traffico di dati passa attraverso una connessione TCP diretta tra il nodo che richiede il file e quello che risponde.\\
Changed lines 152-156 from:
# '''Regola 1''':
#
'''Regola 2''':
# '''Regola 3''':
# '''Regola 4''':
# '''Regola 5''':
to:
# '''Regola 1''': tutti i ''servents'' devono memorizzare il Descriptor ID (da 128bit) ogni volta che un messaggio è generato o consegnato
# '''Regola 2''': i Descriptors Pong, QueryHit e Push dovrebbero essere inviati lungo lo stesso percorso da dove sono arrivati rispettivamente i Descriptors Ping, Query e QueryHit. Così solo quei ''servents'' che hanno inviato il Descriptor Ping vedranno il Descriptor Pong.
# '''Regola 3''': un ''servent'' inoltra i Descriptors Ping e Query che riceve, a tutti i ''servents'' direttamente connessi, tranne a quello che glieli ha inviati.
# '''Regola 4''': un ''servent'' decrementa il campo TTL e incrementa il campo Hops, prima di inoltrare il Descriptor agli altri ''servents'' connessi. Se arriva un Descriptor con campo TTL=0, questo viene scartato.
# '''Regola 5''': se un ''servent'' riceve un Descriptor con lo stesso Payload Descriptor e Descriptor ID ricevuti in precedenza lo scarta.
Changed lines 18-20 from:
# [[#s9|Link]]
to:
# [[#s9|Regole Generali]]
# [[#s10|Link]]
Added lines 149-159:
!!Regole generali
Per mantenere buono il traffico della rete ci sono 5 regole generali da seguire:

# '''Regola 1''':
# '''Regola 2''':
# '''Regola 3''':
# '''Regola 4''':
# '''Regola 5''':


[[#s10]]
Changed lines 95-100 from:
Attach:GnutellaResultSet.jpg\\\

** '''File Index''': numero, creato dall'host che risponde alla richiesta, usato per identificare univocamente il file richiesto.
** '''File Size''': dimensione in byte del file.
** '''File Name''': nome del file.
to:
%center%Attach:GnutellaResultSet.jpg\\\

*** '''File Index''': numero, creato dall'host che risponde alla richiesta, usato per identificare univocamente il file richiesto.
*** '''File Size''': dimensione in byte del file.
*** '''File Name''': nome del file.
Added lines 108-112:
* '''Servent Identifier''':
* '''File Index''':
* '''IP Address''':
* '''Port''':
Changed line 62 from:
!!!!Ping (0x00)
to:
!!!!{+Ping+} (0x00)
Changed line 65 from:
!!!!Pong (0x01)
to:
!!!!{+Pong+} (0x01)
Changed line 75 from:
!!!!Query (0x80)
to:
!!!!{+Query+} (0x80)
Changed lines 83-85 from:
!!!!QueryHit (0x81)
Risposta inviata da un ''servent'' se questo trova il file ricercato tra i propri dati.
to:
!!!!{+QueryHit+} (0x81)
Risposta inviata da un ''servent'' se questo trova il file ricercato tra i propri dati quindi il Descriptor QueryHit viene inviato solo in risposta di un Descriptor Query.
Changed lines 92-93 from:
* '''Result Set''': un insieme di risposte alla query. Ogni risposta di questo campo ha la seguente forma:
to:
* '''Result Set''': un insieme di risposte alla query.\\
Ogni risposta di questo campo ha la seguente forma:
Changed lines 103-106 from:
!!!!Push (0x40)
to:
!!!!{+Push+} (0x40)
Meccanismo che permette ad un ''servent'' nascosto dietro ad un firewall di contribuire in un network Gnutella.

Attach:GnutellaPush.jpg\\\
Changed lines 92-94 from:
* '''Result Set''': un insieme di risposte alla query.
to:
* '''Result Set''': un insieme di risposte alla query. Ogni risposta di questo campo ha la seguente forma:

Attach:GnutellaResultSet.jpg\\\

** '''File Index''': numero, creato dall'host che risponde alla richiesta, usato per identificare univocamente il file richiesto.
** '''File Size''': dimensione in byte del file.
** '''File Name''': nome del file.

* '''Servent Identifier''': stringa da 16 byte che identifica univocamente il ''servent'', che risponde alla query, sul network.

!!!!Push (0x40)
Changed line 71 from:
* '''IP Address''': l'indirizzo IP dell'host che risponde. Questo valore è in big-endian.
to:
* '''IP Address''': l'indirizzo IP dell'host che risponde(in big-endian).
Changed lines 76-77 from:
to:
Il descriptor Query è un formato di ricerca di Gnutella. Viene passato ai vari ''servents'' connessi per controllare se hanno il file desiderato.\\
Added lines 80-94:
* '''Minimu Speed''': velocità minima(in kb/s) dei ''servents'' che possono rispondere
* '''Search Criteria''': stringa di ricerca. La massima lunghezza è data dal Payload Lenght che si trova nell'header

!!!!QueryHit (0x81)
Risposta inviata da un ''servent'' se questo trova il file ricercato tra i propri dati.

Attach:GnutellaQueryHit.jpg\\\

* '''Number of Hits''': numero di risultati ottenuti dalla query e contenuti in Result Set
* '''Port''': porta sulla quale l'host accetta connessioni in entrata.
* '''IP Address''': indirizzo IP dell'host che risponde(in big-endian).
* '''Speed''': velocità(kb/s) dell'host che risponde.
* '''Result Set''': un insieme di risposte alla query.
Changed lines 27-28 from:
Per comunicare tra di loro i ''servents'' utilizzano TCP/IP sulla porta 6346.\\
to:
Per comunicare tra di loro i ''servents'' utilizzano TCP/IP sulla porta 6346.\\\
Added line 54:
Changed lines 56-57 from:
\\
to:
\\\
Changed lines 63-64 from:
I descriptors Ping sono di lunghezza zero e sono rappresentati solo dal Payload Descriptor dell'Header (visto sopra) contenente 0x00.\\
to:
I descriptors Ping sono di lunghezza zero e sono rappresentati solo dal Payload Descriptor dell'Header (visto sopra) contenente 0x00.\\\
Added line 67:
I descriptors Pong sono inviati solo in risposta di un Ping ed è possibile che più Pong siano inviati in risposta ad un singolo Ping.
Changed lines 69-73 from:
* '''Port''':
* '''IP Address
''':
* '''Number of Files Shared''':
* '''Number of Kylobytes Shared''':
to:
* '''Port''': la porta sulla quale l'host(che risponde) può accettare connessioni in entrata.
* '''IP Address''': l'indirizzo IP dell'host che risponde. Questo valore è in big-endian.
* '''Number of Files Shared''': numero di files che il ''servent'' stà condividendo sul network.
* '''Number of Kylobytes Shared''': numero di Kylobytes che il ''servent'' stà condividendo sul network.\\\

!!!!Query (0x80)

Attach:GnutellaQuery.jpg\\\
Added line 83:
Added line 89:
Changed lines 94-95 from:
# I peers in Gnutella inviano periodicamente il messaggio ''Ping'' (contenente l'indirizzo di chi lo invia) ai loro vicini, per scoprire gli hosts sul network.\\
I messaggi ''Ping'' vengono inviati anche agli altri ''servents'' connessi.
to:
# I peers in Gnutella inviano periodicamente il messaggio ''Ping'' (contenente l'indirizzo di chi lo invia) ai loro vicini, per scoprire gli hosts sul network. I messaggi ''Ping'' vengono inviati anche agli altri ''servents'' connessi.
Changed lines 97-100 from:
nota1 è una stringa(ASCII) formata da: '''GNUTELLA CONNECT/<protocol version string>\n\n'''\\
nota2 il servent che risponde invia la stringa: '''GNUTELLA OK\n\n'''
\\
Esempio di connessione:\\
to:
''nota1'' è una stringa(ASCII) formata da: '''GNUTELLA CONNECT/<protocol version string>\n\n'''\\
''nota2'' il servent che risponde invia la stringa: '''GNUTELLA OK\n\n'''
\\\
'''
Esempio di connessione:'''\\
Changed line 46 from:
Ogni descrittore è preceduto da un Descriptor Header con questa struttura:\\
to:
Ogni descriptor è preceduto da un Descriptor Header con questa struttura:\\
Added line 59:
Added line 62:
Changed lines 64-66 from:
Un descrittore Pong contiene
Attach:GnutellaPong
.jpg
to:
Un descriptor Pong contiene l'indirizzo di un ''servent'' attivo (quello che ha inviato il Pong) e la quantità di dati che stà condividendo sul network.\\
Attach:GnutellaPong.
jpg\\\
* '''Port''':
* '''IP Address''':
* '''Number of Files Shared''':
* '''Number of Kylobytes Shared''':
Changed line 24 from:
!!!Cosa è Gnutella
to:
!!Cosa è Gnutella
Changed line 30 from:
!!!Descrizione del protocollo
to:
!!Descrizione del protocollo
Changed line 35 from:
!!!!Gnutella Descriptors
to:
!!!Gnutella Descriptors
Changed line 45 from:
!!!!Gnutella Descriptor Header
to:
!!!Gnutella Descriptor Header
Changed lines 57-58 from:
!!!!Gnutella Descriptor Payload
to:
!!!Gnutella Descriptor Payload
Subito dopo il Descriptor Header si trova il Descriptor Payload, contenente uno dei descriptors(sono quelli visti prima, ma descritti più dettagliatamente):\\
!!!!Ping (0x00)
I descriptors Ping sono di lunghezza zero e sono rappresentati solo dal Payload Descriptor dell'Header (visto sopra) contenente 0x00.\\
!!!!Pong (0x01)
Un descrittore Pong contiene
Changed lines 66-67 from:
!!!Connettersi e operare con un network Gnutella
!!!!Individuare peers
to:
!!Connettersi e operare con un network Gnutella
!!!Individuare peers
Changed lines 76-77 from:
# L'utente A invia un ''Gnutella Connect''* all'utente B per richiedere di unirsi al network.
# L'utente B accetta e risponde con un ''Gnutella OK''** all'utente A. L'utente A in questo momento è collegato al network.
to:
# L'utente A invia un ''Gnutella Connect'''^nota1^' all'utente B per richiedere di unirsi al network.
# L'utente B accetta e risponde con un ''Gnutella OK'''^nota2^' all'utente A. L'utente A in questo momento è collegato al network.
Changed lines 82-85 from:
[@
*
è una stringa(ASCII) formata così: @]'''GNUTELLA CONNECT/<protocol version string>\n\n'''[@
**
il servent che risponde invia la stringa: @]'''GNUTELLA OK\n\n''' [@
@]
to:
nota1 è una stringa(ASCII) formata da: '''GNUTELLA CONNECT/<protocol version string>\n\n'''\\
nota2
il servent che risponde invia la stringa: '''GNUTELLA OK\n\n'''
Changed line 89 from:
!!!!Cercare file all'interno di una rete Gnutella
to:
!!!Cercare file all'interno di una rete Gnutella
Changed lines 95-96 from:
!!!!File Download
to:
!!!File Download
Changed line 98 from:
!!!Link
to:
!!Link
Changed line 54 from:
Nota: tutti i campi di questa struttura utilizzano l'ordinamento little-endian.
to:
''Nota'': tutti i campi di questa struttura utilizzano l'ordinamento little-endian.
Changed line 46 from:
Ogni descrittore è preceduto da un Descriptor Header\\
to:
Ogni descrittore è preceduto da un Descriptor Header con questa struttura:\\
Added line 46:
Ogni descrittore è preceduto da un Descriptor Header\\
Changed lines 49-55 from:
to:
* '''Descriptor ID''': un identificatore univoco sulla rete per il descrittore (stringa a 16 byte).
* '''Payload Descriptor''': 0x00 = Ping / 0x01 = Pong / 0x40 = Push / 0x80 = Query / 0x81 = QueryHit.
* '''TTL(Time To Live)''': numero di volte che il descrittore sarà inoltrato dai ''servents'' prima di essere rimosso dalla rete. Il TTL è l'unico modo per accoppare i descrittori sulla rete.
* '''Hops''': numero di volte che il descrittore è stato inoltrato.
* '''Payload lenght''': lunghezza del ''payload'' che viene subito dopo l'header. Il prossimo Descriptor Header sarà localizzato esattamente "Payload Lenght bytes" dalla fine di questo header. E' l'unico modo per un ''servent'' di trovare l'inizio del prossimo descrittore.
Nota: tutti i campi di questa struttura utilizzano l'ordinamento little-endian.
\\
Added lines 59-60:
Attach:GnutellaPong.jpg
Changed lines 36-37 from:
I Gnutella Descriptors vengono inviati e ricevuti dai ''servents'' una volta che questi sono collegati alla rete\\
to:
I Gnutella Descriptors vengono inviati e ricevuti dai ''servents'' una volta che questi sono collegati alla rete\\\
Changed lines 46-47 from:
to:
Attach:GnutellaDescriptorHeader.jpg\\\
Changed lines 70-71 from:
* è una stringa(ASCII) formata così: GNUTELLA CONNECT/<protocol version string>\n\n
** il servent che risponde invia la stringa: GNUTELLA OK\n\n
to:
* è una stringa(ASCII) formata così: @]'''GNUTELLA CONNECT/<protocol version string>\n\n'''[@
** il servent che risponde invia la stringa: @]'''GNUTELLA OK\n\n''' [@
Added lines 36-37:
I Gnutella Descriptors vengono inviati e ricevuti dai ''servents'' una volta che questi sono collegati alla rete\\
Added line 47:
Changed line 70 from:
** il servent che risponde invia la stringa: GNUTELLA OK\n\n
to:
** il servent che risponde invia la stringa: GNUTELLA OK\n\n
Changed lines 40-41 from:
* '''Push''': meccanismo che permette ad un ''servent' dietro firewall di fornire i dati al network
to:
* '''Push''': meccanismo che permette ad un ''servent'' dietro firewall di fornire i dati al network
Changed lines 59-60 from:
# L'utente A invia un ''Gnutella Connect'' all'utente B per richiedere di unirsi al network.
# L'utente B accetta e risponde con un ''Gnutella OK'' all'utente A. L'utente A in questo momento è collegato al network.
to:
# L'utente A invia un ''Gnutella Connect''* all'utente B per richiedere di unirsi al network.
# L'utente B accetta e risponde con un ''Gnutella OK''** all'utente A. L'utente A in questo momento è collegato al network.
Added lines 65-69:
[@
* è una stringa(ASCII) formata così: GNUTELLA CONNECT/<protocol version string>\n\n
** il servent che risponde invia la stringa: GNUTELLA OK\n\n
@]
\\
Changed lines 39-41 from:
* '''QueryHit''': è la risposta ad una Query.
* '''Push''':
to:
* '''QueryHit''': è la risposta ad una Query. Questo descrittore fornisce al destinatario abbastanza informazioni per acquisire i dati corrispondenti alla Query
* '''Push''': meccanismo che permette ad un ''servent' dietro firewall di fornire i dati al network
Added lines 7-23:
>>left bgcolor=#f5f9fc width=240px border='2px solid #cccccc' padding=5px<<
%center%'''Indice'''

# [[#s1|Cosa è Gnutella]]
# [[#s2|Descrizione del protocollo]]
# [[#s3|Gnutella Descriptors]]
# [[#s4|Gnutella Descriptor Header]]
# [[#s5|Gnutella Descriptor Payload]]
# [[#s6|Connettersi e operare con un network Gnutella]]
# [[#s7|Cercare file all'interno di una rete Gnutella]]
# [[#s8|File Download]]
# [[#s9|Link]]
>><<

[[<<]]

[[#s1]]
Added line 29:
[[#s2]]
Added line 34:
[[#s3]]
Added lines 42-48:
[[#s4]]
!!!!Gnutella Descriptor Header

[[#s5]]
!!!!Gnutella Descriptor Payload

[[#s6]]
Added line 68:
[[#s7]]
Changed lines 74-75 from:
to:
[[#s8]]
!!!!File Download

[[#s9]]
Changed lines 10-11 from:
Per comunicare tra di loro i ''servents'' utilizzano TCP/IP sulla porta 6346.\\\
to:
Per comunicare tra di loro i ''servents'' utilizzano TCP/IP sulla porta 6346.\\
Changed lines 14-15 from:
Attach:GnutellaDescriptor.jpg\\\
to:
Attach:GnutellaDescriptor.jpg\\
Changed line 29 from:
\\\
to:
\\
Changed line 38 from:
\\\
to:
\\
Changed lines 54-56 from:
'''Nota: Il protocollo Gnutella è open, quindi tutto il materiale presente in questa pagina non è protetto dai copyright.'''\\
Questa specifica si riferisce alla versione 0.4.\\\
to:
'''Nota:\\
Il
protocollo Gnutella è open, quindi tutto il materiale presente in questa pagina non è protetto dai copyright.'''\\
'''Questa specifica si riferisce alla versione 0.4.'''\\\
Added lines 12-22:
!!!Descrizione del protocollo
Il protocollo Gnutella descrive il modo in cui i vari ''servents'' comunicano tra di loro nella rete. Questi inviano e ricevono dei Gnutella Descriptors, formati da un Header e da un Payload.\\
Attach:GnutellaDescriptor.jpg\\\

!!!!Gnutella Descriptors
* '''Ping''': usato per scoprire gli hosts sulla rete. Un ''servent'' che riceve un Ping Descriptor dovrebbe rispondere con uno o più Pong Descriptors.
* '''Pong''': è la risposta ad un Ping. Contiene l'indirizzo di un ''servent'' connesso ed informazioni riguardo alla quantità di dati disponibili nella rete.
* '''Query''': meccanismo per cercare file nella rete. Quando un ''servent'' riceve una Query dovrebbe rispondere con una QueryHit se riesce a trovare il file richiesto tra i propri dati.
* '''QueryHit''': è la risposta ad una Query.
* '''Push''':
Changed lines 47-56 from:
!!!Descrizione del protocollo
Il protocollo Gnutella descrive il modo in cui i vari ''servents'' comunicano tra di loro nella rete. Questi inviano e ricevono dei Gnutella Descriptors, formati da un Header e da un Payload.\\
Attach:GnutellaDescriptor.jpg\\\

!!!!Gnutella Descriptors
* '''Ping''': usato per scoprire gli hosts sulla rete. Un ''servent'' che riceve un Ping Descriptor dovrebbe rispondere con uno o più Pong Descriptors.
* '''Pong''': è la risposta ad un Ping. Contiene l'indirizzo di un ''servent'' connesso ed informazioni riguardo alla quantità di dati disponibili nella rete.
* '''Query''': meccanismo per cercare file nella rete.
*
to:
Changed lines 10-11 from:
Per comunicare tra di loro i ''servents'' utilizzano TCP/IP.\\\
to:
Per comunicare tra di loro i ''servents'' utilizzano TCP/IP sulla porta 6346.\\\
Changed lines 9-10 from:
Questi ''servents'' forniscono interfacce tramite le quali gli utenti possono eseguire query e vedere i risultati della ricerca; contemporaneamente possono anche accettare query da altri ''servents'', controllare i risultati tra i propri dati e rispondere.\\
to:
Questi ''servents'' forniscono interfacce tramite le quali gli utenti possono eseguire query e vedere i risultati della ricerca; contemporaneamente possono anche accettare query da altri ''servents'', controllare le corrispondenze tra i propri dati e rispondere.\\
Per comunicare tra di loro i ''servents'' utilizzano TCP/IP.\
\\
Changed line 18 from:
to:
\\\
Changed line 27 from:
to:
\\\
Changed lines 34-36 from:
Ogni query è identificata da un identificatore univoco (MUID) per evitare che ogni nodo non risponda alla stessa query più di una volta. Quando un ''servent'' riceve una query a cui ha già risposto la salta.\\
to:
Ogni query è identificata da un identificatore univoco (MUID) per evitare che ogni nodo non risponda alla stessa query più di una volta. Quando un ''servent'' riceve una query a cui ha già risposto la salta.\\\
Changed lines 37-38 from:
to:
Il protocollo Gnutella descrive il modo in cui i vari ''servents'' comunicano tra di loro nella rete. Questi inviano e ricevono dei Gnutella Descriptors, formati da un Header e da un Payload.\\
Attach:GnutellaDescriptor.jpg\\\

!!!!Gnutella Descriptors
* '''Ping''': usato per scoprire gli hosts sulla rete. Un ''servent'' che riceve un Ping Descriptor dovrebbe rispondere con uno o più Pong Descriptors.
* '''Pong''': è la risposta ad un Ping. Contiene l'indirizzo di un ''servent'' connesso ed informazioni riguardo alla quantità di dati disponibili nella rete.
* '''Query''': meccanismo per cercare file nella rete.
*
Changed lines 31-32 from:
Per localizzare un file, un ''servent'' invia una query di richiesta a tutti i suoi vicini, che a loro volta invieranno a tutti i loro vicini.
to:
Per localizzare un file, un ''servent'' invia una query di richiesta a tutti i suoi vicini, che a loro volta invieranno a tutti i loro vicini. Quando un ''servent'' riceve una query di richiesta controlla tra i propri dati se c'è qualche file corrispondente e risponde con una query contenente tutte le corrispondenze che ha trovato. Le query di risposta seguono lo stesso percorso fatto dalle query di richiesta così da poter risalire al ''servent'' che ha fatto la richiesta iniziale.\\
Per evitare che le query di richiesta e risposta intasino la rete, ognuna contiene un campo TTL(time to live) che è disolito inizializzato a 7. Quando un ''servent'' riceve una query con un TTL positivo, lo decrementa di uno prima di inviare la query ai propri vicini. Quando si riceve una query con un TTL=1, questa non viene ulteriormente inviata ai vicini.\\
Ogni query è identificata da un identificatore univoco (MUID) per evitare che ogni nodo non risponda alla stessa query più di una volta. Quando un ''servent'' riceve una query a cui ha già risposto la salta.\\
Added lines 27-29:
Esempio di connessione:\\
Attach:GnutellaConn.jpg\\\
Changed lines 31-32 from:
to:
Per localizzare un file, un ''servent'' invia una query di richiesta a tutti i suoi vicini, che a loro volta invieranno a tutti i loro vicini.
Changed line 8 from:
Gnutella è un protocollo per la ricerca distribuita che utilizza un modello decentralizzato nel quale ogni nodo è sia client che server e viene chiamato ''Gnutella servents''.\\
to:
Gnutella è un protocollo per la ricerca distribuita che utilizza un modello decentralizzato (quindi ogni utente è responsabile della violazione dei copyright del proprio materiale condiviso) nel quale ogni nodo è sia client che server e viene chiamato ''Gnutella servent''.\\
Changed lines 20-24 from:
# Utilizzando la GnuCache quest'ultima ritorna un elenco di nodi del network. L'utente A sceglie uno di questi e cerca di contattarlo
# L'utente A invia un ''Gnutella Connect'' all'utente B per richiedere di unirsi al network
# L'utente B accetta e risponde con un ''Gnutella OK'' all'utente A. L'utente A in questo momento è collegato al network
# I peers in Gnutella inviano periodicamente ''Ping''(usato per scoprire gli hosts sul network) ai loro vicini
to:
# Utilizzando la GnuCache quest'ultima ritorna un elenco di nodi del network. L'utente A sceglie uno di questi e cerca di contattarlo.
# L'utente A invia un ''Gnutella Connect'' all'utente B per richiedere di unirsi al network.
# L'utente B accetta e risponde con un ''Gnutella OK'' all'utente A. L'utente A in questo momento è collegato al network.
# I peers in Gnutella inviano periodicamente il messaggio ''Ping'' (contenente l'indirizzo di chi lo invia) ai loro vicini, per scoprire gli hosts sul network.\\
I messaggi ''Ping'' vengono inviati anche agli altri ''servents'' connessi.
# In questo modo l'utente A scopre dell'esistenza dell'utente C perché il ''Ping'' dell'utente C è arrivato fino ad A.

!!!!Cercare file all'interno di una rete Gnutella
Changed lines 39-40 from:
to:
Questa specifica si riferisce alla versione 0.4.\\\
Deleted lines 6-7:
'''Nota: Il protocollo Gnutella è open, quindi tutto il materiale presente in questa pagina non è protetto dai copyright.'''\\
Added lines 33-34:
'''Nota: Il protocollo Gnutella è open, quindi tutto il materiale presente in questa pagina non è protetto dai copyright.'''\\
Changed lines 25-26 from:
#
to:
# I peers in Gnutella inviano periodicamente ''Ping''(usato per scoprire gli hosts sul network) ai loro vicini
Changed line 9 from:
!!Cosa è Gnutella
to:
!!!Cosa è Gnutella
Changed lines 13-14 from:
!!Connettersi e operare con un network Gnutella
to:
!!!Connettersi e operare con un network Gnutella
!!!!Individuare peers
Changed lines 16-19 from:
# Messaggi PING PONG: annotando gli indirizzi dei peers che hanno inizializzato le query
# GnuCache: è incluso nel software per unix. Permette agli utenti di collegarsi ad un server permanente e trovare altri utenti sul network Gnutella
# Fuori dai limiti: Ad esempio utilizzando IRC(Internet Relay Chat) e il Web cercando un host a cui connettersi, altrimenti controllando una paio di pagine web per vedere quali hosts sono disponibili.\\
to:
# Messaggi PING PONG: annotando gli indirizzi dei peers che hanno inizializzato le query.
# GnuCache: è incluso nel software per unix. Permette agli utenti di collegarsi ad un server permanente e trovare altri utenti sul network Gnutella.
# Fuori dai limiti: Ad esempio utilizzando IRC(Internet Relay Chat) e il Web cercando un host a cui connettersi, altrimenti controllando una paio di pagine web per vedere quali hosts sono disponibili.

Un utente compie i seguenti passi per unirsi e diventare un partecipante attivo in un network Gnutella:
# L'utente A si unisce al network Gnutella tramite una delle 3 tecniche viste sopra
# Utilizzando la GnuCache quest'ultima ritorna un elenco di nodi del network. L'utente A sceglie uno di questi e cerca di contattarlo
# L'utente A invia un ''Gnutella Connect'' all'utente B per richiedere di unirsi al network
# L'utente B accetta e risponde con un ''Gnutella OK'' all'utente A. L'utente A in questo momento è collegato al network
#

!!!Descrizione del protocollo
Changed lines 7-8 from:
'''Nota: Il protocollo Gnutella è aperto, quindi tutto il materiale presente in questa pagina non è protetto dai copyright.'''\\
to:
'''Nota: Il protocollo Gnutella è open, quindi tutto il materiale presente in questa pagina non è protetto dai copyright.'''\\
Changed lines 15-18 from:
# Messaggi PING PONG
# GnuCache
# Fuori dai limiti: Ad esempio utilizzando IRC(Internet Relay Chat) e il Web cercando un host a cui
connettersi.
to:
# Messaggi PING PONG: annotando gli indirizzi dei peers che hanno inizializzato le query
# GnuCache: è incluso nel software per unix. Permette agli utenti di collegarsi ad un server permanente e trovare altri utenti sul network Gnutella
# Fuori dai limiti: Ad esempio utilizzando IRC(Internet Relay Chat) e il Web cercando un host a cui
connettersi, altrimenti controllando una paio di pagine web per vedere quali hosts sono disponibili.\\
Added lines 7-8:
'''Nota: Il protocollo Gnutella è aperto, quindi tutto il materiale presente in questa pagina non è protetto dai copyright.'''\\
Added lines 13-18:
!!Connettersi e operare con un network Gnutella
Ci sono diversi metodi per scoprire i peer quando ci si collega ad un network Gnutella e quando si è già connessi:
# Messaggi PING PONG
# GnuCache
# Fuori dai limiti: Ad esempio utilizzando IRC(Internet Relay Chat) e il Web cercando un host a cui connettersi.
Changed line 13 from:
* %newwin%[[Specifica Gnutella Eng in PDF -> Attach:SpecificaGnutella.pdf]]
to:
* %newwin%[[Specifica Gnutella(Eng) in PDF -> Attach:SpecificaGnutella.pdf]]
Changed line 13 from:
* %newwin%[[Attach:SpecificaGnutella.pdf]]
to:
* %newwin%[[Specifica Gnutella Eng in PDF -> Attach:SpecificaGnutella.pdf]]
Changed line 13 from:
* %newwin%[[Specifica Eng in PDF -> www.stanford.edu/class/cs244b/gnutella_protocol_0.4.pdf ]]
to:
* %newwin%[[Attach:SpecificaGnutella.pdf]]
Changed lines 7-9 from:
!!Storia
to:
!!Cosa è Gnutella
Gnutella è un protocollo per la ricerca distribuita che utilizza un modello decentralizzato nel quale ogni nodo è sia client che server e viene chiamato ''Gnutella servents''.\\
Questi ''servents'' forniscono interfacce tramite le quali gli utenti possono eseguire query e vedere i risultati della ricerca; contemporaneamente possono anche accettare query da altri ''servents'', controllare i risultati tra i propri dati e rispondere.\\

!!!Link
* %newwin%[[Pagina Wikipedia -> http://en.wikipedia.org/wiki/Gnutella]]
* %newwin%[[Specifica Eng in PDF -> www.stanford.edu/class/cs244b/gnutella_protocol_0.4.pdf ]]
* %newwin%[[Gnutella for Users -> http://rakjar.de/gnufu/index.php/Main_Page]]
Added lines 1-11:
(:title Sistemi - Gnutella :)
[[Torna alla pagina di Sistemi Anticoncezionali delle Reti e dei Damiani->Sistemi]]
----

%titolo%''':: Sistemi - Gnutella ::'''

!!Storia


----
[[Torna alla pagina di Sistemi Anticoncezionali delle Reti e dei Damiani->Sistemi]]