Lange Zeit vor dem World Wide Web entstand in den frühen 1980er-Jahren mit dem Usenet (urspr. UNIX User Network) eine weltweite Plattform für den In­for­ma­ti­ons­aus­tausch, die auch heute noch als selbst­stän­di­ger In­ter­net­dienst parallel zum Web existiert. Die News­groups, wie die einzelnen The­men­be­rei­che des Usenets genannt werden, haben in den ver­gan­ge­nen Jahr­zehn­ten aber aufgrund neuer, digitaler Aus­tausch­me­di­en wie Foren oder sozialen Netz­wer­ken stark an Bedeutung verloren.

Der his­to­ri­sche Wert des hier­ar­chisch auf­ge­bau­ten Usenets, das auf den klas­si­schen Client-Server-Nach­rich­ten­aus­tausch setzt, steht al­ler­dings außer Frage. Grund genug, einen Blick auf das hinter dem In­for­ma­ti­ons­netz­werk steckende Protokoll NNTP (Network News Transfer Protocol) zu werfen, das für die Kom­mu­ni­ka­ti­on zwischen den einzelnen News-Servern und -Clients un­er­läss­lich ist.

Was ist NNTP (Network News Transfer Protocol)?

Beim Network News Transfer Protocol, kurz NNTP, handelt es sich um ein TCP/IP-Über­tra­gungs­pro­to­koll für Nach­rich­ten in News­groups. Diese News­groups sind haupt­säch­lich im Rahmen des so­ge­nann­ten Usenets im Einsatz, wo sie als eine Art Vorreiter moderner In­ter­net­fo­ren Raum für den Austausch einer un­be­grenz­ten Zahl an Text­nach­rich­ten zu den ver­schie­dens­ten The­men­be­rei­chen bieten. Die erste Spe­zi­fi­ka­ti­on des NNTP-Pro­to­kolls, die in RFC 977 fest­ge­hal­ten wurde, stammt aus dem Jahr 1986. Seitdem ist das Protokoll mehrmals über­ar­bei­tet worden – die aktuelle Version ist in RFC 3977 zu finden. Seit 2009 existiert mit RFC 5536 außerdem ein Request for Comments, der auch das Nach­rich­ten­for­mat der NNTP-Über­tra­gung genauer spe­zi­fi­ziert.

Hinweis

Bis zur Ent­wick­lung und Ver­öf­fent­li­chung von NNTP erfolgte der Da­ten­aus­tausch im Usenet über Te­le­fon­lei­tun­gen mit dem UNIX-Protokoll UUCP (Unix to Unix copy)!

Wo kommt das NNTP-Protokoll zum Einsatz?

In der heutigen Zeit spielt NNTP in der digitalen Kom­mu­ni­ka­ti­on keine große Rolle mehr, was vor allem auf die Tatsache zu­rück­zu­füh­ren ist, dass auch das Usenet nur noch ver­ein­zelt und in Fach­krei­sen Ver­wen­dung findet. Für das In­for­ma­ti­ons­netz­werk ist das Network News Transfer Protocol seit 1986 un­ver­zicht­bar und sowohl auf Server- als auch auf Cli­ent­sei­ten im Einsatz. Abseits des Aus­tauschs per­sön­li­cher Di­rekt­nach­rich­ten zeichnet sich das Usenet ins­be­son­de­re durch die bereits erwähnten News­groups aus, die dank des Pro­to­kolls in­di­vi­du­ell erstellt und verwaltet werden können. Auf diese Weise sind im Laufe der Zeit zahl­rei­che Sub-News­groups in die be­stehen­de Basis-Hier­ar­chie des Usenets ein­ge­glie­dert worden.

Hinweis

Die acht Haupt­the­men des Usenets, die auch als „Big Eight“ (dt. die großen Acht) bzw. „Big-8“ be­zeich­net werden, sind folgende:

  • comp: Computer
  • sci: Wis­sen­schaft und Technik
  • soc: Ge­sell­schaft
  • talk: All­ge­mei­ne Themen
  • rec: Themen rund um Freizeit, Erholung, Kunst und Kultur
  • news: In­for­ma­tio­nen und Neu­ig­kei­ten über das Usenet selbst
  • misc: Ver­misch­tes
  • hu­ma­ni­ties: Geis­tes­wis­sen­schaf­ten, Kul­tu­rel­les

Wie funk­tio­niert das Network News Transfer Protocol?

NNTP ist ein text­ba­sier­tes Protokoll und sieht den ab­wech­seln­den Austausch zwischen Client und Server vor: Auf jede NNTP-Anfrage wird also eine NNTP-Antwort erwartet. Für diese Kom­mu­ni­ka­ti­on hat die IANA (Internet Assigned Numbers Authority) den TCP-Port 119 vor­ge­se­hen, der in diesem Fall sogar aus­schließ­lich für das Über­tra­gungs­pro­to­koll re­ser­viert ist – ein TCP/IP-Netzwerk wie das Internet ist folglich die zu­grun­de­lie­gen­de Basis für die In­for­ma­ti­ons­platt­form. Das NNTP-Protokoll, das selbst auf der An­wen­dungs­schicht greift, setzt dabei direkt auf dem TCP-Protokoll auf, was den Vorteil hat, dass sowohl eine sichere als auch eine zu­ver­läs­si­ge Über­tra­gung der Daten ge­währ­leis­tet wird.

Das ele­men­ta­re Konzept des Usenets sieht vor, dass eine neue Nachricht, die von einem NNTP-Client an einen be­lie­bi­gen NNTP-Server geschickt wurde, auf diesem Server auf­be­wahrt wird. Alle anderen Clients, die an der je­wei­li­gen Un­ter­hal­tung teil­neh­men möchten, können diese Nachricht bzw. den Artikel jederzeit her­un­ter­la­den, um den aktuellen Stand der Newsgroup her­zu­stel­len. Das bedeutet folglich, dass ein Client nach dem Ver­bin­dungs­auf­bau zu einem NNTP-Server zunächst alle Nach­rich­ten her­un­ter­lädt, die seit der letzten Ver­bin­dung zu dem Server ver­öf­fent­licht worden sind. Je länger ein Client also „offline“ war, desto mehr Zeit nimmt der Ak­tua­li­sie­rungs­pro­zess nach dem Ver­bin­dungs­au­bau in Anspruch.

Hinweis

Sobald ein Server eine neue Nachricht via Network News Transfer Protocol erhält, fügt er dieser Nachricht bzw. diesem Artikel eine in­di­vi­du­el­le Message-ID hinzu. Diese hat das Format „<laufende Nummer@News-Server>“ und dient der ein­deu­ti­gen Kenn­zeich­nung und dem Wie­der­fin­den und Re­fe­ren­zie­ren, falls andere Clients bzw. Nutzer mit einer eigenen Nachricht reagieren oder antworten möchten.

Um neue Nach­rich­ten im gesamten Usenet-Netzwerk zu verteilen, senden die einzelnen Server erhaltene Nach­rich­ten außerdem an alle weiteren, ihnen bekannten NNTP-Server weiter. Zuvor fügen sie dem Path-Header der NNTP-Nachricht den eigenen Namen bei, damit diese nicht noch ein weiteres Mal empfangen wird.

NNTP: Beispiel für den Nach­rich­ten­aus­tausch

Nachdem die Grund­la­gen des Network News Transfer Protocols in den vor­an­ge­gan­ge­nen Ab­schnit­ten erläutert wurden, soll die Kom­mu­ni­ka­ti­on zwischen Clients und Servern nun an einem konkreten Beispiel ver­deut­licht werden. Aus­gangs­punkt ist Client 1, von dem aus eine neue Nachricht bzw. ein neuer Artikel in das Usenet gespeist wird:

Die einzelnen Schritte der Nach­rich­ten­über­mitt­lung, die in diesem Schaubild zu sehen sind, lassen sich wie folgt zu­sam­men­fas­sen:

  1. Der Nutzer hinter NNTP-Client 1 schreibt eine neue Nachricht (bzw. einen neuen Artikel) und schickt diese Daten an NNTP-Server 1.
     
  2. NNTP-Server 1 versieht die Nachricht mit einer ein­deu­ti­gen Message-ID und fügt dem Header seinen Namen hinzu. Er kennt NNTP-Server 2 und NNTP-Server 3 und leitet die Nachricht an beide weiter.
     
  3. NNTP-Server 2 nimmt die Nachricht entgegen und fügt seinen Namen in den Header ein. Auch NNTP-Server 3 erhält die Nachricht, erweitert den Header um seinen Namen und leitet die Nachricht an den ihm bekannten NNTP-Server 4 weiter.
     
  4. Auch auf NNTP-Server 4 wird die Nachricht empfangen und ver­ar­bei­tet: Der Header wird um den eigenen Namen erweitert. An­schlie­ßend kon­tak­tiert er den ihm bekannten NNTP-Server 5 kon­tak­tiert und versorgt ihn mit den Daten.
     
  5. NNTP-Server 5 fügt seine Erkennung dem Header hinzu. Er wertet die Einträge im Header aus und versucht daher nicht, die Nachricht sei­ner­seits an die ihm bekannten Server 2 und 3 wei­ter­zu­lei­ten (die roten Pfeile stehen somit für un­ter­las­se­ne Wei­ter­lei­tun­gen).
     
  6. Sobald sie online sind, holen sich die Clients derweil die Nachricht von ihrem per­sön­li­chen News-Server ab. NNTP-Client 2 erhält die In­for­ma­tio­nen bei­spiels­wei­se direkt von Server 1, Client 6 hingegen von Server 4.

NNTP-Kommandos und -Sta­tus­codes im Überblick

Für die Kom­mu­ni­ka­ti­on mit dem NNTP-Protokoll greifen Clients und Server auf ASCII-Kommandos zurück. Mit jeder NNTP-Anfrage sendet ein Client also au­to­ma­tisch auch eines dieser Kommandos. Der Server antwortet dann mit einer Sta­tus­mel­dung und schickt dem Client die an­ge­for­der­ten Daten. Die wich­tigs­ten Befehle der NNTP-Kom­mu­ni­ka­ti­on sind in der folgenden Tabelle zu­sam­men­ge­fasst:

NNTP-Kommando Funktion
LIST fordert eine Auf­lis­tung der ver­füg­ba­ren News­groups an (inklusive der ersten und letzten Ar­ti­kel­num­mer)
NEWGROUPS erfragt alle neuen ver­füg­ba­ren Gruppen
NEWNEWS erfragt alle neuen ver­füg­ba­ren Artikel, die ab einem be­stimm­ten Datum erstellt wurden
GROUP spe­zi­fi­ziert die Gruppe, für die eine Anfrage gelten soll
ARTICLE er­mög­licht die Abfrage eines konkreten Beitrags über dessen Nummer in der Gruppe oder seine Message-ID
HEADER fordert aus­schließ­lich den Header eines Artikels an
BODY fordert aus­schließ­lich den Body eines Artikels an
STAT wird für die Angabe der Message-ID eines Artikels benötigt
NEXT wählt den nächsten Artikel in der Newsgroup an
POST in­for­miert den Server darüber, dass eine neue Nachricht bzw. ein neuer Artikel über­mit­telt wird
QUIT trennt die Ver­bin­dung zum NNTP-Server

Bei der Sta­tus­mel­dung, die der Server als NNTP-Antwort (inklusive der an­ge­for­der­ten Daten) zu­rück­schickt, handelt es sich um einen drei­stel­li­gen Zah­len­code. Die erste Stelle lässt sich dabei wie folgt über­set­zen:

NNTP-Server-Sta­tus­code Bedeutung
1xx all­ge­mei­ne In­for­ma­tio­nen
2xx Kommando erhalten, Aus­füh­rung er­folg­reich
3xx Kommando erhalten, weitere In­for­ma­tio­nen werden benötigt
4xx Kommando erhalten, Aus­füh­rung nicht er­folg­reich
5xx un­gül­ti­ges Kommando

Über die zweite Stelle des Zif­fern­codes gibt der Server indes folgende In­for­ma­tio­nen weiter:

NNTP-Server-Sta­tus­code Bedeutung
x0x In­for­ma­tio­nen über die Ver­bin­dung, das Setup oder Sonstiges
x1x In­for­ma­ti­on über aus­ge­wähl­te Newsgroup
x2x In­for­ma­ti­on über aus­ge­wähl­ten Artikel
x3x In­for­ma­ti­on über Nach­rich­ten­trans­fer
x4x In­for­ma­ti­on über ge­sen­de­ten Artikel
x5x Au­then­ti­fi­zie­rungs­ant­wort
x8x Nachricht für er­wei­ter­te Kommandos, die nicht stan­dar­di­siert sind
x9x Debugging-Nachricht
Zum Hauptmenü