NNTP: cos’è il Network News Transfer Protocol?

Già da tanto tempo prima che il World Wide Web venisse alla luce nei primi anni ’80, esisteva una piattaforma globale per lo scambio delle informazioni, la Usenet (originariamente UNIX User Network), che ancora oggi continua a funzionare come servizio Internet autonomo parallelamente al web. I newsgroups, come sono chiamate le aree tematiche della Usenet, hanno perso di rilevanza negli ultimi decenni a causa dei media che permettono l’incontro e lo scambio, quali sono, ad esempio, i forum e i social network.

Il valore storico di questa rete dalla struttura gerarchica e basata sul metodo classico di scambio di informazioni tra client e server rimane tuttavia fuori discussione. Motivo sufficiente per dare un’occhiata al protocollo NNTP (Network News Transfer Protocol) che sta alla base della rete d’informazioni, di fondamentale importanza per la comunicazione tra i singoli news server e news client.

Che cos’è il NNTP (Network News Transfer Protocol)?

Per Network News Transfer Protocol, abbreviato NNTP, si intende un protocollo di trasmissione TCP/IP per l'inserimento di messaggi nei newsgroup. Questi newsgroup sono principalmente utilizzati nella Usenet, all’interno della quale, quasi come fossero una sorta di precursori dei moderni forum su Internet, servono come spazi per lo scambio di un numero illimitato di messaggi testuali riguardanti i topic, o aree tematiche, più disparati. La prima specificazione del protocollo NNTP, messo nero su bianco nel RFC 977, è datata 1986.

Da allora il protocollo è stato modificato varie volte. La versione attuale è invece contenuta nel RFC 3977. Dal 2009 però c’è una Request For Comments, la RFC 5536, che specifica con maggiore precisione il formato di trasmissione del NNTP.

N.B.

Prima dello sviluppo e della pubblicazione del NNTP, lo scambio di dati all’interno della Usenet avveniva utilizzando la linea telefonica con il protocollo UNIX UUCP (Unix to Unix copy).

Quando si utilizza il protocollo NNTP?

Al giorno d’oggi, il NNTP ricopre un ruolo più marginale nella nostra comunicazione digitale. Il motivo è riconducibile al fatto che la Usenet a sua volta viene utilizzata solo sporadicamente e unicamente per utilizzi specifici da parte di esperti del settore. Al contrario, per la rete di informazione Usenet, il Network News Transfer Protocol risulta irrinunciabile dal 1986 e continua a essere utilizzato sia lato cliente che server.

All’infuori dello scambio di messaggi personali inviati direttamente, la Usenet è caratterizzata dai già menzionati newsgroup, che, proprio grazie al protocollo, possono essere creati e gestiti in maniera autonoma. In questo modo, con il passare del tempo, numerosi sotto-newsgroup sono stati inclusi all’interno della preesistente gerarchia di base della Usenet.

N.B.

Le otto principali aree tematiche della Usenet, chiamate anche “Big Eight” o “Big 8” (le grandi otto), sono le seguenti:

- comp: computer

- sci: scienze e tecnologia

- soc: società

- talk: argomenti generici

- rec: argomenti relativi il tempo libero, la salute, l’arte e la cultura

- news: informazioni e attualità legate alla Usenet

- misc: vario

- humanities: discipline umanistiche, cultura.

Come funziona il Network News Transfer Protocol?

NNTP è un protocollo testuale e prevede lo scambio bidirezionale di informazioni tra client e server: a ogni richiesta NNTP corrisponde una risposta NNTP. Per questa comunicazione IANA (Internet Assigned Numbers Authority) ha previsto TCP port 119, riservato esclusivamente al protocollo di trasmissione. Da questo elemento si evince perciò che una rete TCP/IP, quale è Internet, serve da base portante per la piattaforma d’informazione Usenet. Il protocollo NNTP, anch’esso basato sul livello applicativo, utilizza il protocollo TCP per garantire una trasmissione dei dati sicura e affidabile.

Il concetto su cui si fonda la Usenet prevede che ogni nuovo messaggio inviato da un client NNTP a un server NNTP qualsiasi venga custodito all'interno dello stesso server. Tutti gli altri clienti che desiderano partecipare alla rispettiva conversazione possono scaricare questo messaggio o articolo in qualsiasi momento per tenere aggiornato il newsgroup. Questo significa che un client, non appena stabilita la connessione a un server NNTP, scarica tutti i messaggi che sono stati pubblicati sullo stesso server dal momento del suo ultimo accesso. Dunque, più tempo il client è stato “offline”, maggiore sarà il tempo necessario per eseguire l’aggiornamento una volta stabilita la connessione.

N.B.

Non appena un server riceve un nuovo messaggio tramite il Network News Transfer Protocol, vi aggiunge, sia al messaggio che all’articolo, un Message-ID univoco. Questo ha il formato <numero corrente@news server> e serve come segno di riconoscimento inequivocabile per riuscire a ritrovarlo e a farvi riferimento in caso un altro client/utente voglia reagire o rispondere con un suo messaggio.

Per distribuire messaggi nella rete Usenet i server inviano i messaggi ricevuti a tutti i server NNTP da loro conosciuti. Prima dell’inoltro però, includono il proprio nome al path header del messaggio NNTP, in modo da evitare che il messaggio si ripeta.

NNTP: un esempio di come avviene lo scambio dei messaggi

Dopo aver chiarito le basi del funzionamento del Network News Transfer Protocol nel capitolo precedente, procediamo a spiegare come avviene la comunicazione tra client e server, per mezzo di un esempio concreto. Il punto di partenza è il client 1, il quale crea un messaggio o un articolo nella Usenet:

I singoli passaggi della trasmissione di messaggi secondo lo schema illustrato si riassume così:

  1. L’utente dietro al client NNTP 1 scrive un messaggio (o un nuovo articolo) e invia i dati relativi al server NNTP 1.
  2. Il server NNTP 1 correda il messaggio con un Message ID univoco e aggiunge il proprio nome all’header. Questo server conosce a sua volta i server NNTP server 2 e NNTP server 3 e inoltra a entrambi il messaggio.
  3. Il server NNTP 2 riceve il messaggio e aggiunge il suo nome all’header. Il server NNTP 3 fa lo stesso, ricevendo il messaggio e ampliandone l’header con il proprio nome e inoltrandolo al da lui conosciuto server NNTP 4.
  4. Anche il server NNTP 4 riceve il messaggio e lo elabora: l’header viene ampliato con il suo nome. Successivamente, a sua volta, il server NNTP 4 contatta il server NNTP 5 da lui conosciuto e gli invia i dati.
  5. Il server NNTP 5 aggiunge il proprio riconoscimento all’header, analizza i nomi precedentemente inseriti nell’header e perciò non tenta di inoltrare il messaggio ai server 2 e 3 da lui conosciuti (le frecce rosse del grafico corrispondono perciò a invii non eseguiti).
  6. Non appena online, i client ricevono il messaggio dal news server personale. Il NNTP client 2, ad esempio, riceve le informazioni dal server 1, mentre il NNTP client 6 dal server 4.

Comandi e codici di stato NNTP: una panoramica

Per la comunicazione con il protocollo NNTP, client e server si affidano ai comandi ASCII. Il client invia automaticamente uno di questi comandi assieme a ogni richiesta NNTP. Il server risponde perciò con una comunicazione di stato e invia al client i dati richiesti. I comandi più importanti della comunicazione con NNTP sono riassunti nella tabella qui di seguito:

Comandi NNTP Funzione
LIST Richiede un elenco dei newsgroup disponibili (inclusi il primo e l’ultimo numero articolo)
NEWGROUPS Richiede tutti i nuovi gruppi disponibili
NEWNEWS Richiede tutti i nuovi articoli disponibili creati a partire da una data
GROUP Specifica il gruppo per il quale viene fatta una richiesta
ARTICLE Permette la richiesta di un contributo specifico tramite il suo numero all’interno del gruppo o al suo Message-ID
HEADER Richiede esclusivamente l’header di un articolo
BODY Richiede esclusivamente il body (il contenuto) di un articolo
STAT Necessario per indicare il Message-ID di un articolo
NEXT Sceglie il prossimo articolo nel newsgroup
POST Informa il server della trasmissione di un nuovo messaggio o articolo
QUIT Interrompe la connessione a un server NNTP

La comunicazione di stato che il server invia come risposta NNTP, assieme ai dati richiesti, è un codice numerico di tre cifre. La prima cifra si può interpretare secondo la seguente legenda:

Codice di stato del server NNTP Significato
1xx Informazioni generali
2xx Comando ricevuto, esecuzione avvenuta con successo
3xx Comando ricevuto, ma sono necessarie altre informazioni
4xx Comando ricevuto, esecuzione non avvenuta
5xx Comando non valido

Tramite la seconda cifra il server indica una della seguenti informazioni:

Codice di stato del server NNTP Significato
x0x Informazioni sulla connessione, sulle impostazioni o simili
x1x Informazione sul newsgroup selezionato
x2x Informazione sull’articolo selezionato
x3x Informazione sul mittente del messaggio
x4x Informazione sul destinatario del messaggio
x5x Risposta di autenticazione
x8x Messaggio per comandi avanzati non standardizzati
x9x Messaggio di debugging

Abbiamo una proposta per te:
Web hosting a partire da 1 €/mese!

Dominio gratis
Certificato SSL Wildcard incluso
Assistenza clienti 24/7
A partire da 1 €/mese IVA escl. per un anno,
poi 8 €/ mese IVA escl.