# FAQ

## Generale

- Ad ogni modo, cos'è Gnutella?
- E a proposito di G2?
- Cosa è GTKG?
- Richiede troppa banda!
- Cosa sono gli ultranodi ed i nodi foglia?
- Perché gtk-gnutella dice di essere dietro firewall se non è vero?

## Compilare il sorgente

- Come posso fare in modo che Configure smetta di farmi tutte quelle domande?

## Connessioni Gnutella

- Qual'è il numero ottimale di connessioni?
- Devo attivare il port forwarding sul mio firewall?
- Come configuro il port forwarding?
- Gtk-gnutella usa UDP?
- Cosa significa "[FC]"?
- Perché perdo connessioni gnet quando ho un upload?
- Cosa significa tutta questa roba nella colonna Flag?
- Cosa significa il "!" iniziale nel nome del programma?
- Cosa significa "Questa versione contiene dei bug, appena possibile aggiornarla"?
- Cosa significa "Versione obsoleta, per cortesia aggiornare"?
- Perché il mio proxy HTTP non funziona?
- Come incremento i timeout?
- In che modo la modalità automatica decide tra ultra e foglia?
- Sono in esecuzione come ultranodo; come mai GTKG ha difficoltà a raggiungere il numero massimo di ultranodi collegati mentre il numero di foglie è costantemente prossimo al 100%?

## Ricerche

- Come posso ottenere più risultati?
- Dove è finito il campo per le ricerche?
- Cosa sono le ricerche "Passive"?
- Come posso copiare il magnet link di un file che sto condividendo?

## Download

- Cosa significa lo stato "Ignoro richiesta [SHA1|nome & dimensione]"?
- Cosa significa lo stato "No URN sul server"?
- Perché lo stesso file viene scaricato X volte?
- Cosa è lo "swarming"?
- Cosa è un "pezzo" o "chunk"?
- Cosa è il "download mesh"?
- Cosa è una "richiesta push"?
- Perché gtk-gnutella aggiunge uno .OK ai nomi dei miei file?
- C'è un file che non si riesce a scaricare!
- Nella schermata dei download, cosa significa se il colore è grigio invece che nero?

## Upload e Condivisioni

- Cosa significa "Normalizzato"?
- Perchè non tutti i file delle cartelle che ho messo in condivisione vengono condivisi?

## GTK+ 2.x

- I caratteri non-ASCII compaiono come un _ (trattino basso).

## Generale

### Ad ogni modo, cosa è Gnutella?

GNutella è una rete di scambio informazioni peer-to-peer decentralizzata. Al momento puoi pubblicare e scaricare file di ogni tipo tramite la rete Gnutella. Per maggiori informazioni date un'occhiata alla definizione di Gnutella su Wikipedia.

### E a proposito di G2?

G2 è un protodollo peer-to-peer ispirato a Gnutella, sviluppato da Michael Stokes e pubblicato nel 2002 nel client Shareaza per sistema operativo Windows. Dalla versione 1.1, gtkg può collegarsi a G2 in modalità foglia in modo da cercare e condividere i file anche lì oltre che su Gnutella. Gli equivalenti degli ultranodi sono chiamati hub sulla rete G2.

### Cosa è GTKG?

Ci riferiamo spesso a gtk-gnutella come GTKG o gtkg (perché è più corto). GTK deriva da GTK+, l'ambiente grafico usato da gtk-gnutella.

### Richiede troppa banda!

Al momento puoi provare uno o più dei provvedimenti seguenti se ti trovi su una linea lenta:

- Scegli la modalità foglia. Puoi cambiare la modalità nel pannello di configurazione sotto GnutellaNet. Un'icona nella barra di stato indica la modalità di esecuzione.
- Limita il numero di connessioni gnet che possiedi.
- Se sei in grado di ricevere connessioni in ingresso, abilita Preferisci connessioni compresse nelle opzioni Banda.
- Anche se hai una connessione lenta, è comunque importante condividere files. Con lo swarming, le persone ricevere da te piccole porzioni di file in modo che, anche se lente, molteplici fonti possono determinare un contributo sostanziale. Impostare Limiti di banda per il traffico HTTP - Velocità cumulativa in upload fino al 50% della banda disponibile non dovrebbe compromettere la navigazione e l'uso di internet da parte di altri programmi.
- Se si sta usando un router ADSL, considerate di configurare il Quality of Service (QoS) per ottimizzare la banda disponibile secondo regole personalizzabili.
- Deselezionate il tasto in basso a sinistra nella schermata grafica dopo che il download è iniziato. Questo determinerà la disconnessione dalla rete Gnutella. Sconsigliamo decisamente di NON farlo. Non sarete in grado di ottenere fonti alternative dalla rete e gli altri nodi non saranno in grado di cercare tra i vostri file condivisi.

### Cosa sono i nodi ultranodo e foglia?

Dalla versione 0.92, gtk-gnutella ha implementato gli ultranodi e i nodi foglia. In questo modo i nodi di gnet si dividono in foglie, che si connettono solo agli ultranodi, che si connettono a molte foglie e a un ridotto numero di altri ultranodi (vedi Quale è il numero ottimale di connessioni?).

Gli ultranodi non devono trovarsi dietro un firewall e ci si aspetta che rimangano attivi a lungo (più di due ore) avendo abbastanza banda da donare a gnet. Gli ultranodi inoltrano le query dei loro nodi foglia, mentre i nodi foglia mandano ai propri ultranodi le tabelle QRP che contengono hash di parole chiave corrispondenti ai file condivisi dalla foglia. Quando un ultranodo riceve una richiesta sulla tabella di routing delle ricerche, rimanda la richiesta al nodo foglia corrispondente. La conseguenza di questa organizzazione è che alle foglie arriva poco traffico, liberando spazio per la condivisione e il download (che avviene direttamente tra i due nodi). Gli ultranodi possono anche fungere da push-proxy per le foglie che si trovano dietro un firewall.

### Perché gtk-gnutella sostiene di essere dietro firewall quando non è così?

gtk-gnutella ha bisogno di ricevere una connessione in ingresso per capire se puoi essere raggiunto dall'esterno. Fino a quel momento, suppone di trovarsi dietro un firewall che blocca la porta TCP di ascolto definita. Se desideri accelerare il rilevamento, usa un browser web, telnet o similari e collegati alla porta in ascolto dall'esterno. Se la connessione è rifiutata o ignorata, molto probabilmente non sei raggiungibile a causa di un firewall che blocca la porta, un NAT mal configurato o simili. Potresti voler provare una porta TCP diversa in quanto alcuni provider bloccano la porta default di Gnutella (6346). Vedi anche: Devo inoltrare una porta sul mio firewall?.

## Compilare il sorgente

### Come posso fare in modo che Configure smetta di farmi tutte quelle domande?

Puoi configurare lo script `Configure` nel modo seguente in modo da farglin usare le impostazioni di default. Così si comporta come quando in passato si chiamava il vecchio script `configure` da autoconf.

`$ ./Configure -ders`

Puoi impostare le opzioni di compilazione anche dalla riga di comando. Qui c'è un esempio che configurerà gtk-gnutella in modo da

- accettare impostazioni personalizzate (`-O`). Senza questo tutti i parametri sotto non avranno effetto.
- usa l'interfaccia Gtk1, attiva la shell remota (`-D gtkversion=1 -D remotectrl=y`)
- compila per un pentium con supporto MMX (`-Dccflags="-march=pentium -mmmx"`).
- compila le informazioni di debug disabilitando tutte le ottimizzazioni del compilatore (`-Doptimize="-g -O0"`).

`$ ./Configure -ders -O -D gtkversion=1 -D remotectrl=y -Dccflags="-march=pentium -mmmx" -Doptimize="-g -O0"`

## Connessioni Gnutella

### Quale è il numero ottimale di connessioni?

In modalità foglia 4 ultranodi, in modalità ultranodo 32/50 (minimo/massimo) ultranodi e almeno 100 nodi foglia. Il numero effettivo dovrebbe dipendere dalla banda disponibile. Se hai impostato "Preferisci connessioni compresse", la banda utilizzata sarà molto minore. Non dovresti mai usare tutta la banda per le connessioni gnet. Specialmente su connessioni asimmetriche tipo ADSL è facile disturbare il traffico in ingresso generando un eccesso di traffico in uscita (problematica TCP/IP). Utilizza al massimo metà della banda uscente per i collegamenti gnet.

Dall'adozione delle "alte diramazioni" nella versione 0.95 dovreste avere 32/50 connessioni ad altri ultranodi. Il numero di connessioni foglia da usare dipende dalla larghezza di banda disponibile e dalla velocità della cpu. Come minimo assoluto un ultranodo dovrebbe collegarsi a 20 nodi foglia, ma è molto meglio collegarsi a 100 o più. Osserva gli indicatori dell'uso della banda in basso a sinistra e usa il comando top per controllare l'uso della cpu. Aumenta il numero di connessioni foglia finché non raggiungi il massimo della banda e risorse di sistema che intendi dedicare a questo scopo.

Il campo di controllo della larghezza di banda ti aiuterà ad affinare ulteriormente l'utilizzo di banda di gtk-gnutella.

### Devo inoltrare una porta sul mio firewall?

Non è necessario effettuare il forwarding delle porte TCP per far funzionare gtk-gnutella, ma tutto funzionerà meglio se lo fate. Se gtk-gnutella rileva di essere dietro firewall, non mostrerà alcun risultato "push" dal momento che non riuscirete a scaricarli comunque.
Anche se gli altri non potranno collegarsi direttamente a voi, possono ancora scaricare file dal vostro nodo usando una richiesta push.
Potete configurare la porta su cui gtk-gnutella resta in ascolto. L'impostazione Porta in ascolto è localizzata in File->Preferenze->Rete.

### Come configuro il port forwarding?

Potete trovare istruzioni per i router più popolari su http://www.portforward.com/routers.htm. Provate http://www.canyouseeme.org/per controllare il port forwarding.

### gtk-gnutella usa l'UDP?

Si, a partire dalla versione 0.95 gtk-gnutella può anche usare UDP in aggiunta a TCP.

### Cosa significa "[FC]"?

FC vuol dire "flow control" ovvero controllo di flusso.
In generale, dovresti accertarti che i servent a cui sei connesso non effettuino controllo di flusso. Guarda l'indicazione [FC] alla fine della riga Info (potresti dover trascinare il bordo destro oltre la finestra per attivare la barra di scorrimento), oppure controlla lo stato FC nella colonna Flags. Come regola, se hai più di un nodo che effettua controllo di flusso in un certo momento, non hai abbastanza banda dedicata a gnet, quindi stai danneggiando la rete: diminuisci il numero di connessioni, attiva l'opzione Preferisci connessioni compresse oppure aumenta il limite per la banda in uscita.

### Perché perdo connessioni gnet quando ho un upload?

Cerca di limitare la banda. Se questo non aiuta, forse il vostro provider modula il traffico gnutella. Provate a cambiare la porta per gnutella nelle impostazioni di rete di gtk-gnutella.

### Cosa significa tutta questa roba nella colonna Flag?

Qui potete vedere il tipo di connessione e alcuni settaggi relativi. Notate che i push-proxy sono implementati solo a partire dalla versione 0.92.1c.

    012345678AB (offset)
      NIrwqxZPFhE
      ||||||||||+ indica una connessione TLS Encripted (criptata)
      |||||||||+- flusso di hop triggerato (h), o controllo totale del flusso query (f)
      ||||||||+-- controllo flusso (F), dati in attesa in coda (d)
      |||||||+--- Noi siamo push-proxy per il nodo (P) o il nodo è il nostro push-proxy (p)
      ||||||+---- indica se Rx, Tx o entrambi (Z) sono compressi
      |||||+----- noi abbiamo inviato il nostro ultimo-hop QRT a un UP remoto (X), o ne stiamo inviando uno  (x)
      ||||+------ noi abbiamo inviato/ricevuto un QRT, o ne stiamo inviando/ricevendo uno (q)
      |||+------- indica se il nodo è writable (scrivibile)
      ||+-------- indica se il nodo è readable (leggibile)
      |+--------- tipo di connessione: (Incoming (in ingresso), Outgoing (in uscita), genera messaggi Pong)
      +---------- modalità peer: G2 Hub, Ultra, Leaf (foglia), or Legacy (cioè Normale)

### Cosa significa il "!" iniziale nel nome del programma?

Indica che il nome del programma potrebbe essere fasullo ma potrebbe trattarsi di un falso positivo dovuto a un tempo errato in uno dei lati,

### Cosa significa "Questa versione contiene dei bug, appena possibile aggiornarla"?

Talora vengono rilevati ed esclusi servent con un bug o con comportamento tale da danneggiare gnet. Per esempio gtk-gnutella-0.92b aveva un bug che generava un numero eccessivo di query che disturbavano il sistema GWebCache. Questa esclusione è eccezionale, di solito ristretta a versioni specifiche, e l'autore del servent ne viene informato.

### Cosa significa "Versione obsoleta, per cortesia aggiornare"?

E' importante aggiornare le versioni di gtk-gnutella più vecchie di un anno poiché mancano caratteristiche essenziali per la salute e scalabilità della rete Gnutella che è in rapida evoluzione.

### Perché il mio proxy HTTP non funziona?

Il vostro proxy HTTP deve supportare il metodo `CONNECT` in quanto il normale `GET` non funziona con le connessioni Gnutella. Questa è un'estensione del protocollo HTTP supportata principalmente da proxy SQUID. E' spesso disattivata perché il vostro provider potrebbe considerarla problematica per la sicurezza del proxy. Al momento il supporto proxy - anche per SOCKS - non è molto buono. Gli sviluppatori non usano proxy ma se pensate di poterlo sistemare, accetteremo volentieri le vostre correzioni.

### Come posso aumentare i timeout?

Se la vostra connessione ha problemi di latenza elevata, aumentare i timeout potrebbe essere utile. Andate su File->Preferenze->Interfaccia Utente e selezionate Modalità esperto. Così troverete molti più settaggi da cambiare quando andate su File->Preferenze->Gnutella.

### In che modo la modalità automatica decide tra ultra e foglia?

Al fine di essere promosso ultranodo devono essere soddisfatte le seguenti condizioni:

1. Devono esserci più di 8192 byte/s di banda uscente disponibili.
2. Se sono attivi sistemi di gestione automatica della banda, i nodi foglia non devono essere configurati in modo da utilizzare tutta la banda HTTP uscente.
3. Se un gestore automatico della banda è attivo per Gnet, devono essere disponibili almeno 256 byte/s per ogni connessione gnet (ultranodo o normale/legacy).
4. Complessivamente devono essere disponibili 32 byte/s per ogni foglia più 256 byte/s per gnet.

### Sono in esecuzione come ultranodo; come mai GTKG ha difficoltà a raggiungere il numero massimo di ultranodi collegati mentre il numero di foglie è costantemente prossimo al 100%?

Possono esserci teoricamente due motivi all'origine di questo fenomeno: 1) una carenza globale di ultranodi sulla rete Gnutella, 2) problemi di collegamento in uscita. Quest'ultima è senz'altro la spiegazione più verosimile. Quando sono in esecuzione come ultranodi, molte foglie cercano continuamente di collegarsi a voi. Analogamente, un numero relativamente inferiore di ultranodi cerca di fare lo stesso. Il vostro nodo cerca a sua volta di collegarsi attivamente ad altri ultranodi, ma non a foglie. Se la vostra connessione in uscita è problematica (banda uscente saturata, limitazioni da parte del provider, ecc) avrete difficoltà a collegarvi ad alcuni ultranodi, il cui indirizzo IP viene quindi rimosso dalla vostra cache. Probabilmente avrete anche notato che nella pagina della cache il livello degli host regolari aumenta gradualmente fino a raggiungere il massimo, mentre la cache degli ultranodi è molto più limitata e il numero di nodi diminuisce invece che aumentare. In effetti non c'è molto da fare. Provate a ridurre il numero di connessioni simultanee e/o il numero di collegamenti verso ultranodi e foglie; in alternativa scegliete la modalità in esecuzione come foglia.

## Ricerche

### Come posso ottenere più risultati?

Il numero di risultati ottenuti dipende grandemente dal fatto che altri vogliano collegarsi con voi (vedere port forwarding) e il numero di connessioni a altri nodi.

### Dove è finito il campo per le ricerche?

Le ricerche vanno inserite nella casella Cerca: della barra laterale.

### Cosa sono le ricerche "passive"?

Una ricerca passiva fornisce tutti i risultati delle ricerche che transitano in gtk-gnutella. Questi risultati possono essere utili se filtrati.

Se ci si trova in modalità ultra, molti risultati di ricerca stanno già transitando attraverso il proprio nodo a fianco dei risultati delle proprie ricerche. Potete trarre vantaggio da ciò eseguendo ricerche senza generare traffico Gnutella aggiuntivo. Per esempio, sul mio ultranodo con 200 nodi foglia, ho aperto una ricerca passiva e filtrato i risultati per mostrare solo quelli contenenti il termine linux. Nel giro di un'ora ho ottenuto 1500 risultati. Naturalmente, più popolare è un termine di ricerca e più pazienti si è, tanto più questa tecnica è utile.

If you are in leaf mode, then the only search results that will pass through gtk-gnutella will be those from your own searches, so the above technique won't be useful. But there is another way to use passive searches that is only useful in leaf mode. For example, if you start a passive search and filter it to display only mp3 files, then all mp3 files from all your open searches will be conveniently aggregated in one search window. By opening more passive searches with different filters, you can display different file types in each.

### Come posso copiare il magnet link di un file che sto condividendo?

Fate una ricerca con la parola chiave `local:,`. Il "." è un'espressione regolare, che qui corrisponde a qualsiasi file: questo fornirà una lista completa dei propri file condivisi. Selezionate quindi una voce, fate clic con il tasto destro e copiate il magnet link negli appunti.

### Download

### Cosa significa lo stato "Ignoro richiesta [SHA1|nome & dimensione]"?

Questo significa che gtk-gnutella ha quel file memorizzato come completo nel proprio database. Questo database è di solito localizzato in `~/.gtk-gnutella/done.sha1` e `~/.gtk-gnutella/done.namesize`. Al momento non c'è modo di rimuovere o modificare una voce del database dall'interfaccia grafica, ma potete editare il file con qualsiasi editor di testo mentre gtk-gnutella non è in esecuzione. Se aggiungete o rimuovete qualcosa da un file, fate lo stesso con gli altri.

### Cosa significa lo stato "No URN sul server"?

Questo significa che gtk-gnutella vuole scaricare un nuovo file da un nodo, ma quel nodo non fornisce un hash SHA1 per quel file. Dal momento che il file è nuovo (non ancora parzialmente scaricato), gtk-gnutella non può controllare che il file sul nodo sia proprio quello che desiderate. In tal caso utilizza lo SHA1 fornito dal nodo remoto, ma se nessun SHA1 viene fornito, gtk-gnutella non ha modo di accertarsi che il file da scaricare e quello sul server remoto siano davvero gli stessi.
Se questi messaggi vi stufano, potete attivare l'opzione Calcolo ottimistico del primo pezzo nel File->Preferenze->Download (dovrete prima andare in Impostazioni->Preferenze->Interfaccia utente e selezionare Modalità esperto).

### Perché lo stesso file viene scaricato X volte?

Controlla la colonna Range. Questo è chiamato swarming. gtk-gnutella cerca di ottenere il file a pezzi e lo recupera da molteplici nodi in parallelo, se possibile.

### Cosa è lo "swarming"?

Lo "swarming" descrive la capacità di scaricare un singolo file da molteplici host in parallelo. gtk-gnutella cercherà automaticamente surgenti aggiuntive per ogni file in coda utilizzando il download mesh e monitorando i risultati ottenuti.

### Cosa è un "pezzo" o "chunk"?

Un chunk o pezzo è un modo per definire parte di un file. Quando gtk-gnutella funziona in modalità swarming riceverà molteplici pezzi di un file in download finché l'intero file è stato completato. La colonna Range mostra qualche pezzo stai scaricando.

### Cosa è il "download mesh"?

Quando scarichi un file da uno host che supporta il download mesh, questo ti comunicherà sorgenti aggiuntive fer il file ricercato (sempre che ne conosca). Queste saranno quindi utilizzate per lo swarming.

### Cosa è una "richiesta push"?

La richiesta di push è una funzione per scaricare file da nodi a cui non è possibile collegarsi direttamente (in quanto si è dietro firewall). Bene, non potete collegarvi a questi nodi, ma questi potrebbero essere in grado di collegarsi a voi. Per chiedere a un nodo remoto di connettersi a voi in modo che possiate scaricare un file da esso, inviate una richiesta di push.
Se scaricate un file usando una push request e perdete il contatto con l'host che originariamente vi aveva fornito i risultati per quel file, allora il push route è perduto e non potete più scaricare questo file. I push route sono piuttosto fragili. Non potere usare richieste push quando siete dietro a un firewall (vedere port forwarding).

### Perché gtk-gnutella aggiunge uno .OK ai nomi dei miei file?

Probabilmente non avete impostato cartelle diverse per i file scaricati, temporanei o cattivi.

### C'è un file che non si riesce a scaricare!

Se non vedete nella barra di stato un'icona gialla sorridente con gli occhiali da sole, dovreste cercare di cambiarlo. Date un'occhiata alla sezione sui firewall.

Altrimenti, se gtk-gnutella dice di avere poche sorgenti per il file (visto meglio nella sezione fileinfo della schermata dei download), questo può essere dovuto a due ragioni:

- questo file è raro
- Avete scelto una versione del file che è unica. Ci sono possibilità che esista una versione più diffusa. Un file può diventare unico per esempio quando qualcuno modifica le informazioni id tag di un file mp3 oppure ne produce un versione personalizzata.

Potete provare a cercare nuovamente il file e vedere se trovate un'altra versione più diffusa. Di solito è positivo se il "#" mostra un numero per quel file. Maggiore il numero, più alte sono le possibilità di ottenere il file rapidamente.

### Nella schermata dei download, cosa significa se il colore è grigio invece che nero?

Significa che il file viene ricevuto attraverso un percorso push.

## Upload e Condivisioni

### Cosa significa "Normalizzato"?

Mostra il numero totale di byte inviati fratto la dimensione del file.

### Perchè non tutti i file delle cartelle che ho messo in condivisione vengono condivisi?

Di default Gtk-Gnutella condivide solo file le cui estensioni sono incluse in Estensioni ricerche sotto la lista delle cartelle condivise nelle Preferenze. Se alcuni fine non vengono condivisi, probabilmente la loro estensione non è inclusa nella lista. Ci sono 2 modi per risolvere il problema:

1. includere le estensioni dei file non condivisi nella lista Estensioni ricerche;
2. sostituire l'intera lista di estensioni con la parola chiave "--all--".

Notate che è possibile controllare quali file sono effettivamente in condivisione effettuando una ricerca con la sola parola chiave "local:".

## GTK+ 2.x

### I caratteri non-ASCII compaiono come un _ (trattino basso).

Impostate la variabile di ambiente `LC_CTYPE` o `LC_ALL` al valore corretto in base alla codifica che utilizzate. Per esempio, se usate caratteri accentati nei nomi dei file, impostatele su `it_IT.ISO8859-1`. I valori validi dipendono dal vostro sistema operativo, controllate la pagina del manuale setlocale(3) per dettagli. Idealmente tutti dovrebbero utilizzare la codifica UTF-8 che compre quasi tutte le lingue.