Glossario
Questo glossario deriva dal vecchio Online Manual. Stiamo includendo ulteriori definizioni, alcune delle quali derivano dal Gnutella Protocol Development draft.
Questa è definita banda minima in quanto GUESS utilizza UDP e non può frazionare messaggi grandi per inviare solo pochi byte. Comunque, il valore della banda minima essere superato se sono necessarie una serie di query e la loro quantità totale supera la banda allocata. Valori inferiori significa che possono essere inviate meno query e quindi l'invio globale delle query è rallentato (richiede più tempo) in quanto ciascuna query è inviata a un solo ultrapeer GUESS.
Il processo di accesso alla rete Gnutella durante il quale si trovano altri nodi è chiamato bootstrap. Maggiori informazioni qui.
Un bucket (secchio) è una porzione dello spazio dell'ID del nodo coperto dalla tabella di routing. Ogni bucket può contenere solo K nodi, al momento 8, prima di diventare "pieno". Quando un bucket è pieno di nodi buoni conosciuti, non possono essere aggiunti altri nodi a meno che il nostro stesso ID di nodo rientri nell'ambito del bucket. In quel caso il bucket è rimpiazzato da altri due bucket nuovi, ciascuno con metà range del vecchio bucket e i nodi del vecchio bucket vengono redistribuiti tra i nuovi. Questo processo è definito "bucket SPLIT" (divisione del bucket). Il processo opposto si definisce MERGE (unione). Ogni nodo conserva una tabella di routing di nodi buoni conosciuti. I nodi nella tabella di routing sono usati come punti di partenza per query nel DHT. Le informazioni dei nodi inclusi nella tabella di routing sono inviati in risposta a query provenienti da altri nodi. E' importante che la tabella di routing di ciascun nodo contenga solo nodi buoni. Un nodo buono è un nodo che ha risposto a una o più query negli ultimi 15 minuti. Un nodo è buono anche se ha risposto in passato a una nostra query e ci ha inviato una query negli ultimi 15 minuti. Dopo 15 minuti di inattività un nodo diventa incerto. I nodi diventano cattivi quando non rispondono a diverse query consecutivamente. I nodi che sappiamo essere buoni hanno priorità rispetto a nodi il cui stato è sconosciuto.
Si tratta di un messaggio opzionale con lo scopo di informare gli host remoti che la connessione sta per essere chiusa ed il motivo.
L'entità con cui le informazioni vengono trasmesse alla rete. Sinonimo di messaggio.
La tabella di hash distribuita (Distributed Hash Table, DHT) è una tabella di hash distribuita su tutta la rete Gnutella. Gtk-gnutella usa un'implementazione di Kademlia per la propria DHT. Kademlia è usata anche su altre reti peer-to-peer (come eDonkey) ma memorizza chiavi e valori differenti, rendendo impossibile l'interoperabilità tra DHT di altre reti peer-to-peer. In Gnutella, DHT è usata per eseguire lookup, ricerca di sorgenti alternative, push-proxy, ecc, ma non per i termini di ricerca. Operazioni definite lookup, publish, store, ecc sono tipicamente effettuate in una DHT i cui nodi possono essere alternativamente attivi o passivi.
EAR sta per "Extra Acknowledgement Request" (richiesta extra di riscontro).
I servent impilano i pacchetti in uscita in una coda dove sono trasmessi in modalità - primo che entra primo che esce - (first-in-first-out, FIFO). Se la banda uscente è ridotta e molti pacchetti devono essere trasmessi, la coda diventa sovraccarica e il servent entra in modalità controllo di flusso (Flow Control, FC). Quando ci si trova in modalità FC tutte le query in ingresso vengono ignorate. Ovviamente i servent devono evitare di entrare in modalità FC cercando di avere una maggiore banda uscente o riducendo il numero di nodi connessi.
Il Flooding (inondazione) è un algoritmo di routing semplice ma inefficiente che invia i messaggi a tutti i nodi connessi al fine di farli giungere al destinatario. L'algoritmo di flooding è stato rimpiazzato dal più efficiente algoritmo GUESS.
Gli Hub G2 della rete Gnutella2 sono equivalenti agli Ultrapeer in GnutellaNet. Gtk-Gnutella di solito si connette a 2 Hub G2 comportandosi come nodo foglia sulla rete Gnutella2.
Il protocollo di estensione generica Gnutella (Gnutella Generic Extension Protocol, GGEP) include nuove funzioni aggiunte al protocollo originale Gnutella 0.4: maggiori informazioni qui.
GIV è il messaggio mandato dal servent che sta per inviare un file in risposta a una richiesta.
GnutellaNet (o per brevità "Gnutella") è una rete-sulla-rete (overlay network). Ciò significa che consiste in una rete che funziona sovrapponendosi a internet. GnutellaNet è non strutturata. Questo significa che nessun particolare computer o gruppo di computer la controlla o gestisce; è probabilmente più democratica della maggior parte dei governi!
Poiché GnutellaNet è una rete-sulla-rete, non deve fare attenzione alla geografia. Probabilmente vi connetterete a computer fisicamente in altre nazioni. La rete potrebbe funzionare più velocemente se non fosse così, ma questa struttura garantisce anche maggiore resilienza.
Diversamente dall'algoritmo di flooding, mediante l'indirizzamento GUESS i nodi vengono interrogati uno alla volta. Ogni nodo mantiene una cache di peer conosciuti e affidabili in grado di accettare query e questi sono selezionati a caso. Questo metodo di indirizzamento è considerato più efficiente e sicuro in confronto al flooding.
Consiste in un valore della dimensione di 16 byte costituito da byte casuali, il cui scopo è di etichettare servent e messaggi. Questa etichetta non è una firma, ma solo un modo per identificare gli elementi della rete in modo univoco.
Il protocollo di stima della dimensione dell'orizzonte (Horizon Size Estimation Protocol, HSEP) permette di calcolare il numero di nodi Gnutella raggiungibili, di file condivisi e kibibyte condivisi. Maggiori informazioni qui.
Una foglia (leaf) è la connessione base a GnutellaNet. Una foglia tipicamente si connette a 3-4 ultrapeer. Gli ultrapeer indirizzano le ricerche e mantengono le proprie foglie collegate a GnutellaNet.
I messaggi sono le entità in cui le informazioni vengono trasmesse sulla rete. Pacchetti e descrittori sono sinonimi.
Un GUID per messaggi di rete.
Quando un servent richiede un file ospitato da un servent che non possiede slot di invio liberi, la richiesta entra in una coda remota sul servent ospitante. Questa coda remota è gestita dal PARQ.
Un Ping è un messaggio inviato da un servent che cerca di scoprire attivamente i nodi sulla rete. Ci si aspetta che servent che riceve un messaggio Ping risponda con uno o più messaggi Pong.
Un Pong è un messaggio di risposta a un Ping. Include gli indirizzi di un servent Gnutella connesso, la porta TCP di ascolto di quel servent e informazioni riguardo la quantità di dati resi disponibili sulla rete.
Questo è un meccanismo che permette a un servent dietro firewall di contribuire alla rete con dati sotto forma di file. Per esempio un servent può inviare un messaggio Push se riceve un messaggio QueryHit da un servent che non supporta connessioni in ingresso. Questo potrebbe accadere quando il servent che invia il messaggio QueryHit si trova dietro un firewall.
Un push-proxy è un nodo di ritrasmissione. Se un ultrapeer è collegato a una foglia dietro firewall, per poter inviare un push alla foglia, un servent può inviare un messaggio UDP all'ultrapeer che a sua volta lo ritrasmetterà alla foglia. In questo modo l'ultrapeer agisce da push-proxy: si occupa della ritrasmissione affinché la foglia possa essere raggiunta.
Il protocollo di indirizzamento query (Query Routing Protocol, QRP) è un sistema per evitare di trasmettere query sulla rete Gnutella. Secondo questo sistema, i nodi generano tabella di indirizzamento query facendo l'hash di parole chiave dei file e scambiandole regolarmente con i loro vicini. Le tecniche di compressione standard minimizzano il costo dello scambio tabelle. Questo sistema può drammaticamente ridurre le richieste di banda di Gnutella aumentando la scalabilità e lasciando più banda libera per lo scambio file.
L'invio di una Query è il meccanismo principale per cercare all'interno di una rete distribuita. Un servent che riceve un messaggio Query risponderà con una QueryHit se viene trovata una corrispondenza verso la propria banca dati.
Una QueryHit è la risposta a una Query. Questo messaggio fornisce al destinatario abbastanza informazioni per acquisire i dati riferiti alla Query corrispondente.
Il protocollo affidabile UDP (Reliable UDP, RUDP) permette trasferimenti NAT-verso-NAT, talora chiamati Firewall-verso-Firewall or "hole-punching", in quei casi in cui il port-forwarding non è stato effettuato o non può essere effettuato dall'utente.
RX significa ricezione, è l'opposto del termine TX ovvero trasmissione.
Doppi e singoli apici possono essere usati in modo da ottenere la corrispondenza dell'intero termine di ricerca piuttosto che delle singole parole che lo compongono. Gli apici possono essere necessari se volete cercare una frase con caratteri speciali quali i segni più e meno (vedere "search requireds").
- browse: elenca i file condivisi sul nodo specificato. Il formato è "browse:ip_address:port". Molte parti dell'interfaccia grafica hanno un menù a cui si può accedere facendo click con il tasto destro del mouse; questo permette di visualizzare i contenuti del computer specificato
- http: scarica la pagina web specificata. Potrebbe trattarsi di un file zip, un filmato, una grande immagine JPG, ecc.
- local: cerca le corrispondenze dall'host locale, cioè il vostro computer. Un'espressione regolare può seguire per filtrare i risultati. Per esempio "local:manual" mostrerà tutti i file condivisi che contengono il termine "manual" nel nome.
- magnet: cerca e scarica il contenuto indicato dal magnet link.
- push: il formato di questa ricerca è "push:guid:indirizzo_ip:porta/percorso_al_file". Il guid è l'ID Gnutella del computer che possiede il file cercato. La ip:porta è il push proxy a cui la guid è collegato. Tipicamente questo è un ultrapeer che permette un download proxy. La guid è una stringa di 32 caratteri esadecimali.
- sha1: un valore SHA base64 da cercare. Non è scaricato automaticamente.
- urn: simile alla ricerca sha1, ma il valore di hash è specificato. Per esempio, urn:sha1:valore hash
Piccoli filtri sono creati con i segni '+' e '-'. Il segno più richiede che una parola sia parte del risultato. Il segno meno non mostra risultati contenenti la frase indicata. I segni più e meno possono essere usati per precisare termini ambigui.
Immaginate di voler cercare informazioni sulle mele. Potete usare una ricerca come mele -computers. Potreste ottenere risultati ancora più rilevante specificando mele +frutta.
La parola "Servent" deriva dalla fusione di server+client. Un nodo in una rete P2P è chiamato servent in quanto si comporta sia del server che da client nello stesso momento.
Il protocollo di accesso oggetti semplici (Simple Object Access Protocol, SOAP) è un protocollo leggero basato su XML per scambiare informazioni in un ambiente decentralizzato e distribuito come le reti P2P. Maggiori informazioni qui.
Il formato Tree Hash EXchange (THEX) è usato per scambiare Merkle Hash Trees costituito da un sottoinsieme di hash di singoli file. Maggiori informazioni qui.
TTL è il numero di volte che un messaggio sarà inoltrato dai servent Gnutella prima di essere rimosso dalla rete. Ogni servent decrementerà il valore TTL prima di passarlo al servent successivo. Quando il valore TTL raggiunge lo 0, il messaggio non sarà più inoltrato per evitare di generare traffico eccessivo sulla rete.
TX è la sigla che significa trasmissione.
Un ultrapeer è ben collegato a GnutellaNet. Dal momento che gli ultrapeer devono avere molte connessioni e indirizzare le query di ricerca, necessitano di più risorse rispetto a un nodo foglia. Gli ultrapeer si collegano tipicamente a 30 o più altri ultrapeer e 70 o più nodi foglia.
Il Vendor Code (codice produttore) è un codice di 4 lettere usato convenzionalmente nelle Query Hit di Gnutella per identificare il sofware in esecuzione sul noto Gnutella che ha generato la hit. Per gtk-gnutella il Vendor Code è GTKG.