GNUnet (protocollo)
# GNUnet (protocollo)

Il protocollo GNUnet è un protocollo modulare pensato per l'omonima rete peer-to-peer anonima e decentralizzata. È utilizzato principalmente dal framework multipiattaforma GNUnet.

Il protocollo GNUnet è accessibile tramite un Uniform Resource Identifier attualmente non approvato dallo IANA, la cui forma è cambiata diverse volte durante la storia del progetto di cui fa parte. La notazione a cui si fa riferimento qui è quella adottata ufficialmente a partire dalla versione 0.7.0 del framework GNUnet.

La porta di comunicazione, ufficialmente registrata presso lo IANA, è la numero 2086 (tcp + udp).

Gli URI del protocollo GNUnet consistono principalmente in due sezioni: il modulo e l'identificatore del modulo (id). Un tipico URI GNUnet presenta la seguente struttura gnunet://modulo/identificatore, dove modulo è il nome del modulo e identificatore è la stringa specifica del modulo.

## Il modulo ECRS

I file condivisi tramite il protocollo GNUnet sono codificati in ECRS (An Encoding for Censorship-Resistant Sharing). L'identificatore del modulo ecrs consiste in una delle seguenti istruzioni: chk, sks, ksk o loc seguita da uno slash e da un valore specifico per ciascuna categoria.

* chk identifica file, tipicamente: gnunet://ecrs/chk/[file hash, utilizzando 0-9A-V].[query hash, utilizzando 0-9A-V].[dimensione in byte]
* sks identifica file all'interno dei namespaces, tipicamente: gnunet://ecrs/sks/NAMESPACE/IDENTIFICATORE
* ksk identifica richieste di ricerca, tipicamente: gnunet://ecrs/ksk/KEYWORD[+KEYWORD]*
* loc identifica un dato su una specifica macchina, tipicamente: gnunet://ecrs/loc/PEER/RICHIESTA.TIPO.KEYWORD.DIMENSIONE

### Esempi

Un tipico URI di file-sharing per GNUnet che punta a una specifica copia del testo della licenza GPL:

Un'altra tipologia di URI di file-sharing per GNUnet che punta più genericamente a tutti i risultati della ricerca della parola chiave "gpl":

