Già da tanto tempo prima che il World Wide Web venisse alla luce nei primi anni ’80, esisteva una piat­ta­for­ma globale per lo scambio delle in­for­ma­zio­ni, la Usenet (ori­gi­na­ria­men­te UNIX User Network), che ancora oggi continua a fun­zio­na­re come servizio Internet autonomo pa­ral­le­la­men­te al web. I new­sgroups, come sono chiamate le aree tematiche della Usenet, hanno perso di rilevanza negli ultimi decenni a causa dei media che per­met­to­no l’incontro e lo scambio, quali sono, ad esempio, i forum e i social network.

Il valore storico di questa rete dalla struttura ge­rar­chi­ca e basata sul metodo classico di scambio di in­for­ma­zio­ni tra client e server rimane tuttavia fuori di­scus­sio­ne. Motivo suf­fi­cien­te per dare un’occhiata al pro­to­col­lo NNTP (Network News Transfer Protocol) che sta alla base della rete d’in­for­ma­zio­ni, di fon­da­men­ta­le im­por­tan­za per la co­mu­ni­ca­zio­ne tra i singoli news server e news client.

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

Per Network News Transfer Protocol, ab­bre­via­to NNTP, si intende un pro­to­col­lo di tra­smis­sio­ne TCP/IP per l'in­se­ri­men­to di messaggi nei newsgroup. Questi newsgroup sono prin­ci­pal­men­te uti­liz­za­ti nella Usenet, all’interno della quale, quasi come fossero una sorta di pre­cur­so­ri dei moderni forum su Internet, servono come spazi per lo scambio di un numero il­li­mi­ta­to di messaggi testuali ri­guar­dan­ti i topic, o aree tematiche, più disparati. La prima spe­ci­fi­ca­zio­ne del pro­to­col­lo NNTP, messo nero su bianco nel RFC 977, è datata 1986.

Da allora il pro­to­col­lo è stato mo­di­fi­ca­to 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 pre­ci­sio­ne il formato di tra­smis­sio­ne del NNTP.

N.B.

Prima dello sviluppo e della pub­bli­ca­zio­ne del NNTP, lo scambio di dati all’interno della Usenet avveniva uti­liz­zan­do la linea te­le­fo­ni­ca con il pro­to­col­lo UNIX UUCP (Unix to Unix copy).

Quando si utilizza il pro­to­col­lo NNTP?

Al giorno d’oggi, il NNTP ricopre un ruolo più marginale nella nostra co­mu­ni­ca­zio­ne digitale. Il motivo è ri­con­du­ci­bi­le al fatto che la Usenet a sua volta viene uti­liz­za­ta solo spo­ra­di­ca­men­te e uni­ca­men­te per utilizzi specifici da parte di esperti del settore. Al contrario, per la rete di in­for­ma­zio­ne Usenet, il Network News Transfer Protocol risulta ir­ri­nun­cia­bi­le dal 1986 e continua a essere uti­liz­za­to sia lato cliente che server.

All’infuori dello scambio di messaggi personali inviati di­ret­ta­men­te, la Usenet è ca­rat­te­riz­za­ta dai già men­zio­na­ti newsgroup, che, proprio grazie al pro­to­col­lo, 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 pre­e­si­sten­te gerarchia di base della Usenet.

N.B.

Le otto prin­ci­pa­li aree tematiche della Usenet, chiamate anche “Big Eight” o “Big 8” (le grandi otto), sono le seguenti:

- comp: computer

- sci: scienze e tec­no­lo­gia

- soc: società

- talk: argomenti generici

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

- news: in­for­ma­zio­ni e attualità legate alla Usenet

- misc: vario

- hu­ma­ni­ties: di­sci­pli­ne uma­ni­sti­che, cultura.

Come funziona il Network News Transfer Protocol?

NNTP è un pro­to­col­lo testuale e prevede lo scambio bi­di­re­zio­na­le di in­for­ma­zio­ni tra client e server: a ogni richiesta NNTP cor­ri­spon­de una risposta NNTP. Per questa co­mu­ni­ca­zio­ne IANA (Internet Assigned Numbers Authority) ha previsto TCP port 119, riservato esclu­si­va­men­te al pro­to­col­lo di tra­smis­sio­ne. Da questo elemento si evince perciò che una rete TCP/IP, quale è Internet, serve da base portante per la piat­ta­for­ma d’in­for­ma­zio­ne Usenet. Il pro­to­col­lo NNTP, anch’esso basato sul livello ap­pli­ca­ti­vo, utilizza il pro­to­col­lo TCP per garantire una tra­smis­sio­ne dei dati sicura e af­fi­da­bi­le.

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 al­l'in­ter­no dello stesso server. Tutti gli altri clienti che de­si­de­ra­no par­te­ci­pa­re alla ri­spet­ti­va con­ver­sa­zio­ne possono scaricare questo messaggio o articolo in qualsiasi momento per tenere ag­gior­na­to il newsgroup. Questo significa che un client, non appena stabilita la con­nes­sio­ne a un server NNTP, scarica tutti i messaggi che sono stati pub­bli­ca­ti sullo stesso server dal momento del suo ultimo accesso. Dunque, più tempo il client è stato “offline”, maggiore sarà il tempo ne­ces­sa­rio per eseguire l’ag­gior­na­men­to una volta stabilita la con­nes­sio­ne.

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 ri­co­no­sci­men­to ine­qui­vo­ca­bi­le per riuscire a ri­tro­var­lo e a farvi ri­fe­ri­men­to in caso un altro client/utente voglia reagire o ri­spon­de­re con un suo messaggio.

Per di­stri­bui­re messaggi nella rete Usenet i server inviano i messaggi ricevuti a tutti i server NNTP da loro co­no­sciu­ti. 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 fun­zio­na­men­to del Network News Transfer Protocol nel capitolo pre­ce­den­te, pro­ce­dia­mo a spiegare come avviene la co­mu­ni­ca­zio­ne 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 tra­smis­sio­ne di messaggi secondo lo schema il­lu­stra­to 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 am­plian­do­ne l’header con il proprio nome e inol­tran­do­lo al da lui co­no­sciu­to server NNTP 4.
  4. Anche il server NNTP 4 riceve il messaggio e lo elabora: l’header viene ampliato con il suo nome. Suc­ces­si­va­men­te, a sua volta, il server NNTP 4 contatta il server NNTP 5 da lui co­no­sciu­to e gli invia i dati.
  5. Il server NNTP 5 aggiunge il proprio ri­co­no­sci­men­to all’header, analizza i nomi pre­ce­den­te­men­te inseriti nell’header e perciò non tenta di inoltrare il messaggio ai server 2 e 3 da lui co­no­sciu­ti (le frecce rosse del grafico cor­ri­spon­do­no 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 in­for­ma­zio­ni dal server 1, mentre il NNTP client 6 dal server 4.

Comandi e codici di stato NNTP: una pa­no­ra­mi­ca

Per la co­mu­ni­ca­zio­ne con il pro­to­col­lo NNTP, client e server si affidano ai comandi ASCII. Il client invia au­to­ma­ti­ca­men­te uno di questi comandi assieme a ogni richiesta NNTP. Il server risponde perciò con una co­mu­ni­ca­zio­ne di stato e invia al client i dati richiesti. I comandi più im­por­tan­ti della co­mu­ni­ca­zio­ne con NNTP sono riassunti nella tabella qui di seguito:

Comandi NNTP Funzione
LIST Richiede un elenco dei newsgroup di­spo­ni­bi­li (inclusi il primo e l’ultimo numero articolo)
NEWGROUPS Richiede tutti i nuovi gruppi di­spo­ni­bi­li
NEWNEWS Richiede tutti i nuovi articoli di­spo­ni­bi­li creati a partire da una data
GROUP Specifica il gruppo per il quale viene fatta una richiesta
ARTICLE Permette la richiesta di un con­tri­bu­to specifico tramite il suo numero all’interno del gruppo o al suo Message-ID
HEADER Richiede esclu­si­va­men­te l’header di un articolo
BODY Richiede esclu­si­va­men­te il body (il contenuto) di un articolo
STAT Ne­ces­sa­rio per indicare il Message-ID di un articolo
NEXT Sceglie il prossimo articolo nel newsgroup
POST Informa il server della tra­smis­sio­ne di un nuovo messaggio o articolo
QUIT In­ter­rom­pe la con­nes­sio­ne a un server NNTP

La co­mu­ni­ca­zio­ne di stato che il server invia come risposta NNTP, assieme ai dati richiesti, è un codice numerico di tre cifre. La prima cifra si può in­ter­pre­ta­re secondo la seguente legenda:

Codice di stato del server NNTP Si­gni­fi­ca­to
1xx In­for­ma­zio­ni generali
2xx Comando ricevuto, ese­cu­zio­ne avvenuta con successo
3xx Comando ricevuto, ma sono ne­ces­sa­rie altre in­for­ma­zio­ni
4xx Comando ricevuto, ese­cu­zio­ne non avvenuta
5xx Comando non valido

Tramite la seconda cifra il server indica una della seguenti in­for­ma­zio­ni:

Codice di stato del server NNTP Si­gni­fi­ca­to
x0x In­for­ma­zio­ni sulla con­nes­sio­ne, sulle im­po­sta­zio­ni o simili
x1x In­for­ma­zio­ne sul newsgroup se­le­zio­na­to
x2x In­for­ma­zio­ne sull’articolo se­le­zio­na­to
x3x In­for­ma­zio­ne sul mittente del messaggio
x4x In­for­ma­zio­ne sul de­sti­na­ta­rio del messaggio
x5x Risposta di au­ten­ti­ca­zio­ne
x8x Messaggio per comandi avanzati non stan­dar­diz­za­ti
x9x Messaggio di debugging
Vai al menu prin­ci­pa­le