NNTP - Network News Transfer Protocol
NNTP ist das Kommunikationsprotokoll, das im USENET zwischen dem Client und dem Server zur Verteilung, Abruf, Suchen und Absetzen von Newsgroup-Artikeln verwendet wird. Die Hauptfunktion von NNTP ist das Verteilen von Nachrichten zwischen den News-Servern. In seinen Grundfunktionen ist es an SMTP angelehnt, welches zum Versand von E-Mails verwendet wird. Eine Verwandtschaft zu HTTP ist in weiten Teilen ebenfalls gegeben.
Ablauf der Verbreitung von Artikeln
Die folgende Beschreibung ist ein Beispiel-Szenario, wie es möglich wäre, wenn ein Artikel seinen Weg vom Client zum News-Server und von dort weiter nimmt. Bis ein anderer Client den Artikel von seinem eigenen News-Server abruft.
- Der Benutzer von Client C1 schreibt einen neuen Artikel und sendet ihn seinem News-Server N1.
- Der vergibt dem Artikel eine eindeutige Message-ID und fügt dem Path-Header seinen Namen hinzu.
- N1 kennt die News-Server N2 und N3 und leitet den Artikel an diese beiden Server weiter.
- Die News-Server N2 und N3 nehmen den Artikel entgegen und fügen ihren Name dem Path-Header hinzu.
- Der News-Server N3 hat Kontakt zu N4 und leitet den Artikel an N5 weiter.
- Der News-Server nimmt den Artikel entgegen. Fügt seinen Namen dem Path-Header hinzu und leitet ihn an N5 weiter.
- Der News-Server N5 nimmt den Artikel entgegen und fügt seinen Namen dem Path-Header hinzu.
- N5 kennt N3, leitet den Artikel nicht weiter, da N3 sich im Path-Header des Artikels vermerkt hat und demnach den Artikel schon hat.
- N5 kennt außerdem N2. Er leitet den Artikel dort hin. N2 hat den Artikel allerdings schon und nimmt den Artikel nicht entgegen.
- Sind die Clients C2, C3 und C4 irgendwann online, holen sie sich den neuen Artikel von ihren News-Servern ab.
Message-ID
Da das USENET aus Diskussionsgruppen (Newsgroups) mit fortlaufenden Diskussionen besteht, hat jeder Artikel eine eindeutige Nummer. Die Message-ID liegt im Format <laufende Nummer@News-Server> vor und ist eine eindeutige Kennzeichnung für einen Artikel. Die fortlaufende Nummer wird von entgegennehmenden News-Servern vergeben und darf frühestens zwei Jahre nach Ablauf der Nachricht erneut vergeben werden. Die Message-ID dient nicht nur zum Kennzeichnen, sondern auch zum Wiederauffinden und zum Referenzieren, wenn auf einen Artikel geantwortet wurde. Mittels dieser ID kann ein Server also feststellen, ob er den Artikel schon hat und der Client ist in der Lage diesen Artikel einer Diskussion (Thread) zuzuordnen.
Path-Header
Der Artikel-Header des NNTP ist ähnlich aufgebaut wie bei SMTP, hat aber eine Besonderheit: den Path-Header.
Bevor ein Server einen Artikel weiterleitet, fügt er seinen Namen dem Path-Header hinzu. Findet ein bekannter News-Server den Namen im Path-Header weiss er, dass der betreffende Artikel bereits bei diesem News-Server ist und schickt in nicht noch einmal. Somit wird sehr viel Übertragungskapazität gespart.
NNTP-Kommandos
Die Kommunikation zwischen NNTP-Client und NNTP-Server erfolgt auf Basis von ASCII-Kommandos. Der NNTP-Client schickt ein Kommando an den Server und der Server schickt seine Antwort und die Daten an den Client zurück. Die wichtigsten Kommandos sind in der folgenden Tabelle beschrieben.
Kommando | Beschreibung |
---|---|
LIST | Der Client fordert vom Server alle verfügbaren Gruppen an. |
NEWSGROUPS | Mit diesem Kommando werden Datum und Uhrzeit mitgeschickt. Ab diesem Zeitpunkt forder der Client alle neuen Gruppen an. |
NEWNEWS | Mit diesem Kommando ruft der Client alle neuen Artikel einer Gruppe, ab einem bestimmten Datum und Uhrzeit, ab. |
GROUP | Der Client signalisiert dem Server, dass er nur mit einer bestimmten Gruppe arbeiten möchte. |
ARTICLE | Dieses Kommando liefert den Artikel-Header eine leere Zeile und anschließend den Artikel-Text zurück. |
HEAD | Dieses Kommando liefert den Artikel-Header zurück |
BODY | Dieses Kommando liefert den Artikel-Text zurück. |
STAT | Mit diesem Befehl wählt der Client einen Artikel aus. |
NEXT | Dieses Kommando liefert die Artikel-Kennung des nächsten Artikels zurück |
QUIT | Dieses Kommando beendet die Verbindung zum NNTP-Server. |
NNTP-Statuscodes
Mit jeder Antwort des Servers wird ein dreistelliger Zahlencode mitgeliefert. Mit ihm zeigt der Server den Status der aktuellen Antwort an. Der Statuscode teilt sich in mehrere Bereiche, der an der ersten Ziffer des Codes erkennbar ist.
Zahlencode | Bedeutung |
---|---|
1xx | Informativ |
2xx | Kommando OK. |
3xx | Kommando OK. Rest senden! |
4xx | Kommando OK. Kommando wurde nicht ausgeführt. |
5xx | Kommando unbekannt oder Fehler. |
Die zweite Ziffer des Zahlencodes bezieht sich näher auf den Vorgang und teilt sich wie folgt auf:
Zahlencode | Bedeutung |
---|---|
x0x | Verbindung, Setup und sonstige Nachrichten |
x1x | Newsgroupauswahl |
x2x | Artikelauswahl |
x3x | Distributionsfunktionen |
x4x | Senden von Artikeln |
x8x | Erweiterungen, die nicht standardisiert sind. |
x9x | Debug-Ausgaben |