Uni.Gnutella History

Show minor edits - Show changes to output

February 21, 2008, at 05:34 PM by Denis -
Changed line 10 from:
# [[#s1|Cosa è Gnutella]]
to:
# [[#s1|Cos'è Gnutella]]
Changed line 26 from:
!!Cosa è Gnutella
to:
!!Cos'è Gnutella
February 21, 2008, at 02:23 PM by Denis -
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'''
February 21, 2008, at 02:21 PM by Denis -
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 \\\'''
February 21, 2008, at 02:20 PM by Denis -
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.\\\
February 21, 2008, at 02:13 PM by Denis -
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.\\

February 21, 2008, at 01:58 PM by Denis -
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.\\

February 21, 2008, at 01:42 PM by Denis -
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.
February 21, 2008, at 12:34 PM by Denis -
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]]
February 20, 2008, at 06:35 PM by Denis -
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.
February 20, 2008, at 06:32 PM by Denis -
February 20, 2008, at 06:32 PM by Denis -
Added lines 108-112:
* '''Servent Identifier''':
* '''File Index''':
* '''IP Address''':
* '''Port''':
February 20, 2008, at 06:31 PM by Denis -
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\\\
February 20, 2008, at 06:23 PM by Denis -
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)


February 20, 2008, at 06:15 PM by Denis -
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.

February 20, 2008, at 06:01 PM by Denis -
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:'''\\
February 20, 2008, at 05:47 PM by Denis -
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''':
February 20, 2008, at 05:41 PM by Denis -
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
February 20, 2008, at 03:51 PM by Denis -
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.
February 20, 2008, at 03:51 PM by Denis -
Changed line 46 from:
Ogni descrittore è preceduto da un Descriptor Header\\
to:
Ogni descrittore è preceduto da un Descriptor Header con questa struttura:\\
February 20, 2008, at 03:50 PM by Denis -
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
February 20, 2008, at 03:27 PM by Denis -
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''' [@
February 20, 2008, at 03:12 PM by Denis -
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
February 20, 2008, at 02:56 PM by Denis -
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
@]
\\
February 20, 2008, at 02:46 PM by Denis -
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
February 20, 2008, at 02:39 PM by Denis -
February 20, 2008, at 11:58 AM by Denis -
February 20, 2008, at 11:57 AM by Denis -
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]]
February 20, 2008, at 11:48 AM by Denis -
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.'''\\\
February 20, 2008, at 11:47 AM by Denis -
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:

February 20, 2008, at 11:41 AM by Denis -
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.\\\
February 20, 2008, at 11:37 AM by Denis -
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.
*
February 20, 2008, at 11:18 AM by Denis -
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.\\

February 20, 2008, at 11:06 AM by Denis -
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.
February 20, 2008, at 11:03 AM by Denis -
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.\\\
February 19, 2008, at 07:18 PM by Denis -
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.'''\\
February 19, 2008, at 04:54 PM by Denis -
Changed lines 25-26 from:
#
to:
# I peers in Gnutella inviano periodicamente ''Ping''(usato per scoprire gli hosts sul network) ai loro vicini
February 19, 2008, at 04:47 PM by Denis -
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

February 19, 2008, at 04:34 PM by Denis -
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.\\
February 19, 2008, at 04:03 PM by Denis -
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.
February 19, 2008, at 03:51 PM by Denis -
Changed line 13 from:
* %newwin%[[Specifica Gnutella Eng in PDF -> Attach:SpecificaGnutella.pdf]]
to:
* %newwin%[[Specifica Gnutella(Eng) in PDF -> Attach:SpecificaGnutella.pdf]]
February 19, 2008, at 03:50 PM by Denis -
Changed line 13 from:
* %newwin%[[Attach:SpecificaGnutella.pdf]]
to:
* %newwin%[[Specifica Gnutella Eng in PDF -> Attach:SpecificaGnutella.pdf]]
February 19, 2008, at 03:48 PM by Denis -
Changed line 13 from:
* %newwin%[[Specifica Eng in PDF -> www.stanford.edu/class/cs244b/gnutella_protocol_0.4.pdf ]]
to:
* %newwin%[[Attach:SpecificaGnutella.pdf]]
February 19, 2008, at 03:47 PM by Denis -
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]]
February 19, 2008, at 03:29 PM by Denis -
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]]