Guida ai newsgroup Web Hosting
 

Il protocollo NNTP

Quando mandiamo un post con un newsreader come Outlook Express o Free Agent, oppure tramite un gateway web to news, noi ci limitiamo a premere il tasto invio ma in realtà tra il nostro computer ed il server delle news avviene tutto un dialogo basato su un "cerimoniale" che tecnicamente si chiama "protocollo". Il protocollo è l'insieme delle regole formali attraverso cui questo dialogo avviene. In questa sezione cercheremo di capire, anche con l'esempio pratico di una sessione telnet, quali sono le regole formali che vengono eseguite quando si invia o si legge un post. NB: questa sezione è molto tecnica e può essere tranquillamente ignorata da chi non è particolarmente interessato all'argomento.

Il primo concetto da capire è quello di "porta". Quando ci connettiamo ad un computer remoto, possiamo immaginare di entrare in un ufficio postale; ogni sportello è adibito ad una determinata funzione: uno sarà destinato alle informazioni, uno a inviare la corrispondenza, uno ad inviare i pacchi, uno a ricevere la posta, uno a effettuare pagamenti, ecc. Per effettuare l'operazione, naturalmente, occorre per prima cosa recarsi allo sportello giusto, ed ogni sportello per farsi identificare reca ben visibile un cartello, spesso con un numero, che dice quali operazioni vi si possono effettuare. Quando ci colleghiamo ad un computer remoto è come se entrassimo in un ufficio postale virtuale con tanti sportelli numerati, che si chiamano appunto "porte". Per effettuare l'operazione che desideriamo effettuare, la prima cosa è individuare la porta giusta; la numerazione delle porte è (abbastanza) standardizzata; alcuni dei più comuni numeri di porte sono:

  • 80: HTTP Serve per "navigare" in internet, e più precisamente per scaricare siti web
  • 22 FTP per lo scambio di files
  • 25 SMTP per inviare le mail
  • 110 POP3 per ricevere mail
  • 119 NNTP per le news

Riprendendo l'esempio dell'ufficio postale, una volta recatisi al giusto sportello occorre sapere come rivolgersi all'impiegato; ad esempio se ci siamo recati allo sportello del fermoposta, occorrerà:

  1. Verificare che l'impiegato sia in servizio;
  2. comunicare un estremo del documento che ci identifica, se già l'impiegato non ci conosce;
  3. chiedere se e quale corrispondenza è in giacenza;
  4. a seconda della risposta, chiedere di ritirarla tutta o in parte;
  5. andarsene.

Quello che abbiamo fatto si chiama seguire un protocollo, cioè un insieme di regole formali di comunicazione. In Internet esistono molti protocolli, a seconda dell'uso che ne facciamo. Il più celebre è forse il protocollo TCP/IP, con cui il proprio PC colloquia con il server che ci offre connettività Internet; esiste poi il protocollo HTTP attraverso cui il browser legge i siti web, SMTP per mandare e-mail, POP3 per ricevere e-mail, e molti altri... e tra questi il protocollo NNTP che è quello delle news; (per essere precisi, ci sarebbe da distinguere un protocollo NNRP: NNTP viene usato per lo scambio di informazioni tra server, mentre NNRP per lo scambio di informazioni tra server ed utente finale). Nel caso del protocollo NNTP le regole da seguire per scaricare un newsgroup sono simili a quelle che abbiamo visto nell'esempio del fermo posta; in particolare occorre:

  1. Connettersi alla porta 119 del computer remoto;
  2. identificarsi tramite password, se già il sistema non ci riconosce dall'indirizzo IP della connessione;
  3. chiedere quali articoli (post) sono disponibili;
  4. richiedere tutti o in parte gli articoli disponibili;
  5. disconnettersi.

Riassumendo, per scaricare le news, occorre effettuare le seguienti operazioni:

  1. Connettersi ad un computer remoto (server)
  2. Connettersi alla porta dedicata alle news (di solito la porta 119)
  3. Dialogare con il server attraverso il protocollo NNRP
  4. Sconnettersi

Esempio pratico

Vediamo di mettere in pratica quanto detto finora utilizzando una sessione telnet. Telnet consente di dialogare senza intermediari con un computer remoto; se si ha windows95 (o successivi) per avviare un client telnet si selezioni dal bottone START di Windows Esegui e si digiti telnet. Si aprira il programma del telnet. Da Terminale -> Preferenze ci si accerti che sia barrata la casella echo locale (e magari si imposti dimensione buffer a 100 invece che a 25 che è il valore di default). Poi si prema Connetti, come nome host si inserisca il nome del proprio server delle news e come porta il numero 119, poi si prema OK. Nel seguito si faccia attenzione a digitare tutto con attenzione: infatti il tasto delete funziona solo sul proprio client ma non ha effetto sul server!

Se si è fatto tutto bene, comparirà un messaggio di benvenuto, del tipo:

200 NNTPCache01 NNTPcache server V2.4.0b5 [see www.nntpcache.org] (c) 1996-2000 Julian Assange <proff@iq.org> Dec 27 2000 ready (posting ok, 62586 groups available).

Nel caso sia necessaria un'autentificazione (di solito si viene avvisati nel messaggio di benvenuto) i comandi da impartire sono:

AUTHINFO USER: (nome utente)
AUTHINFO PASS: (password)

Digitando (seguito dal tasto di invio):

LIST

Comparirà l'elenco di tutti i newsgroup disponibili sul server... ma ci si pensi bene prima di farlo: di solito i newsgroup sono alcune decine di migliaia... e non ha molto senso scaricarseli tutti da una sessione telnet. Piuttosto, se si è interessati a sapere se un newsgroup è tra quelli ospitati dal server, è utile il comando Group. Ad esempio:

Group it.test

dovrebbe riportare qualcosa del tipo:

211 15582 88348 107095 it.test

Il primo numero (211) è un codice che sostanzialmente indica che il ng esiste e non ci sono problemi di sorta. Il secondo numero (nell'esempio 15582) è una stima del numero di articoli che il server ha a disposizione per quel newsgroup. La terza e la quarta cifra (nell'esempio 88348 e 107095) sono i numeri identificativi del primo e dell'ultimo articolo che il server ha a disposizione; quello che segue è ovviamente il nome del newsgroup (qualcuno può domandarsi: perché vengono stimati 15582 articoli, mentre calcolando 107095 - 88348 + 1 dovrei aspettarmene 18748? Il motivo è che alcuni articoli, ad esempio, possono essere stati cancellati). Se invece il newsgroup non esiste la risposta sarebbe stata qualcosa del tipo:

411 No such group

Supponiamo ora di voler leggere un articolo. Il comando da impartire è article seguito dal numero identificativo del messaggio. Ad esempio:

ARTICLE 107095

visualizza l'ultimo articolo postato, completo di intestazioni (header). Se invece si è interessati solo al corpo del messaggio il comando è body; viceversa per visualizzare solo l'header, il comando è head.


Ma supponiamo ora di voler postare, e non solo leggere, su un newsgroup. Come newsgroup di prova utilizzeremo it.test che è appunto un ng destinato alle prove. Ricordo che è contrario alla netiquette fare prove su newsgroup che non siano specificatamente destinati a tale utilizzo.

Per prima cosa, se già non siamo connessi, ci connettiamo alla porta 119 della macchina che ospita il server delle news, come specificato in precedenza. Poi ci accertiamo che it.test sia tra i newsgroup riportati dal newsserver (altrimenti ne scegliamo un altro, ad esempio alt.test)

GROUP it.test

e ci attendiamo come risposta qualcosa del tipo:

211 15586 88348 107100 it.test

Poi diamo il comando post (si ricorda che i comandi vanno confermati con il tasto invio):

POST

La risposta del server dovrebbe essere:

340 Ok

A questo punto dobbiamo inviare il testo dell'articolo. Il testo dell'articolo è distinto in due parti: header e body. Tra gli header, tre campi sono obbligatori: From (il mittente), Newsgroups (il newsgroup in cui inviare l'articolo) e Subject (il titolo da dare al post). Dopo gli heders si dovrà lasciare una riga vuota e quindi si digiterà il body, cioè il testo dell'articolo. Per terminare ed inviare l'articolo si mette un punto "." ad inizio riga e si preme invio. Ad esempio:

FROM: test@nonvalido.con
NEWSGROUPS: it.test
SUBJECT: prova

Questa e' una prova
.

Se è stato fatto tutto correttamente la macchina remota risponderà con:

240 Article posted

Si provi ora a verificare il ng con group:

GROUP it.test

211 15521 88348 107103 it.test

Nell'esempio, l'ultimo articolo disponibile ha ora l'ID 107103. Quindi mentre abbiamo fatto queste operazioni, su it.test sono stati postati tre articoli, compreso il nostro. Proviamo a recuperare l'ultimo:

ARTICLE 107103

220 107103 <y28i6.26982$gb1.1060999@news4.aus1.giganews.com> article
Path: news4.aus1.giganews.com!nntp3.aus1.giganews.com!news4.aus1.giganews.com.PO
STED!not-for-mail
FROM: test@nonvalido.con
NEWSGROUPS: it.test
SUBJECT: prova
Organization: Galactica.it News Service
X-NNTP-Posting-Host: 62.122.24.174
Lines: 1
Message-ID: <y28i6.26982$gb1.1060999@news4.aus1.giganews.com>
NNTP-Posting-Date: Tue, 13 Feb 2001 04:31:58 CST
X-Trace: sv2-tVNsUuq8/K3LUYOHhy0YPMYjEnNxMExiJIY1BTJWZ1sPaT3YTAiu3XPr4tIpORJ+YzH
FJXPuwhsJp8j!JuaoUGVc4jU1fMcLK6vCrnPBoNE=
X-Complaints-To: abuse@GigaNews.Com
X-Abuse-Info: Please be sure to forward a copy of ALL headers
X-Abuse-Info: Otherwise we will be unable to process your complaint properly
Date: Tue, 13 Feb 2001 10:31:58 GMT
Xref: nntp3.aus1.giganews.com it.test:107103
X-Cache: nntpcache 2.4.0b5

Questa e' una prova
.

Siamo stati fortunati: era effettivamente il nostro. Come si può osservare... il server ha anche aggiunto numerosi header di sua iniziativa. Quanto sopra è ben lungi dall'essere una descrizione completa del protocollo NNTP, per il quale il documento di riferimento è invece la RFC 977

 

La rete Usenet
Back
Creare un Newsgroup
Next