Copyright © 1996 by O'Reilly/International Thomson Verlag

Bitte denken Sie daran: Sie dürfen zwar die Online-Version ausdrucken, aber diesen Druck nicht fotokopieren oder verkaufen.

Wünschen Sie mehr Informationen zu der gedruckten Version des Buches "Linux: Wegweiser durch das Netzwerk" dann klicken Sie hier.


Kapitel 16
Netnews

Geschichte des Usenet

Die Idee der Netzwerk-News wurde im Jahr 1979 geboren. Die beiden Studenten Tom Truscott und Jim Ellis wollten UUCP verwenden, um Maschinen untereinander zu verbinden, damit Informationen zwischen UNIX-Benutzern ausgetauscht werden könnten. Sie richteten ein kleines Netzwerk aus drei Maschinen in North Carolina ein.

Zu Beginn wurde die Datenübertragung durch eine Reihe von Shell-Scripten (die später in C umgeschrieben wurden) gehandhabt. Diese wurden der Öffentlichkeit aber niemals zugänglich gemacht, sondern schnell durch »A«-News ersetzt, der ersten öffentlichen Release einer News-Software.

A News war nicht dafür ausgelegt, mehr als einige Artikel pro Gruppe und Tag zu verwalten. Als das Volumen wuchs, wurde es von Mark Horton und Matt Glickman neu geschrieben, die es die »B«-Release (also B News) tauften. Die erste öffentliche Release von B News war Version 2.1 im Jahr 1982. Es wurde kontinuierlich erweitert, und neue Features wurden integriert. Die aktuelle Version ist B News 2.11. Es ist aber langsam überholt; der letzte offizielle Verwalter wechselte zu INN.

Das System wurde noch einmal neu geschrieben und im Jahr 1987 von Geoff Collyer und Henry Spencer als Release »C,« oder C News veröffentlicht. Seit seiner Veröffentlichung hat es eine Reihe von Patches für C News gegeben. Der bekannteste ist sicherlich die »C News Performance Release«. Bei Sites mit einer großen Anzahl von Gruppen ist der durch das ständige Aufrufen von relaynews erzeugte Overhead beträchtlich. Dieses Programm ist für die Weiterleitung eingehender Artikel an andere Hosts zuständig. Die Performance Release erweitert relaynews um eine Option, mit der das System im Daemon-Modus ausgeführt werden kann, bei dem sich das Programm selbständig in den Hintergrund begibt. Die Performance Release ist die Version der C News, die momentan in den meisten Linux-Releases zu finden ist. Seit Herbst 1995 gibt es das sogenannte Cleanup Release, das aber keine neuen Features einführt, sondern nur einige Teile verbessert.

Alle News-Releases bis hin zu C waren primär für die Verwendung in UUCP-Netzwerken ausgelegt, obwohl sie auch in anderen Umgebungen verwendet werden konnten. Die effiziente Übertragung von News über Netzwerke wie TCP/IP oder DECNet machte ein neues Schema notwendig. Daher wurde im Jahr 1986 das Network News Transfer Protocol (NNTP) eingeführt. Es basiert auf Netzwerkverbindungen und spezifiziert eine Reihe von Befehlen für die interaktive Übertragung und den Empfang von Artikeln.

Über das Netz stehen eine ganze Reihe von NNTP-basierten Anwendungen zur Verfügung. Eine davon ist das nntpd-Paket von Brian Barber und Phil Lapsley, mit dem Sie Newsreading-Dienste für eine ganze Reihe von Hosts innerhalb eines lokalen Netzwerks bereitstellen können. nntpd ist so entworfen worden, daß es News-Pakete wie B News oder C News um NNTP-Features erweitert.

Ein anderes NNTP-Paket ist INN, oder auch Internet News. Es ist nicht einfach nur ein Frontend, sondern ein vollständiges News-System. Es besitzt einen leistungsfähigen News-Verteilerdämon, der effektiv mehrere NNTP-Links gleichzeitig verwalten kann und ist daher der News-Server auf vielen Internet-Sites.

Und was ist nun das Usenet?

Eine der erstaunlichsten Eigenschaften des Usenet ist, daß es weder Teil einer Organisation ist, noch irgendeine Form zentraler Autorität besitzt. Tatsächlich können Sie außer der technischen Beschreibung nicht definieren, was es ist; Sie können nur sagen, was es nicht ist.

Auch auf die Gefahr hin, daß sich das dumm anhört, können Sie das Usenet als einen Zusammenschluß separater Sites betrachten, die untereinander Usenet-News austauschen. Um selbst zu einer Usenet-Site zu werden, müssen Sie nur eine andere Usenet-Site finden und mit deren Besitzern und Verwaltern eine Vereinbarung darüber treffen, daß mit Ihnen News ausgetauscht werden. Das Weitergeben von News an eine andere Site wird auch als Feeding bezeichnet.

Die grundlegende Einheit der Usenet-News ist der Artikel. Dabei handelt es sich um eine Nachricht, die von einem Benutzer geschrieben und ins Netz eingespeist (»gepostet«) wurde. Damit das News-System in der Lage ist, mit Artikeln umzugehen, werden diesen administrative Informationen, die sogenannten Artikel-Header, vorangestellt. Ein solcher Header erinnert stark an das Mail-Header-Format, das im Internet-Mail-Standard-RFC 822 beschrieben ist. Er besteht aus verschiedenen Textzeilen, die mit einem durch einen Doppelpunkt abgeschlossenen Feldnamen beginnen, dem dann der Wert des Feldes folgt.(1)

Artikel werden in eine oder mehrere Newsgruppen übertragen. Sie können sich Newsgruppen als ein Forum für Artikel zu einem bestimmten Thema vorstellen. Alle Newsgruppen sind in einer Hierarchie angeordnet, wobei der Gruppenname den Platz in der Hierarchie widerspiegelt. Das macht es häufig einfach zu erkennen, um was es in einer Gruppe eigentlich geht. Beispielsweise kann jeder aus dem Namen dieser Newsgruppe erkennen, daß comp.os.linux.announce für Ankündigungen zu einem Computer-Betriebssystem namens Linux genutzt wird.

Diese Artikel werden dann zwischen allen Usenet-Sites ausgetauscht, die willens sind, News aus dieser Gruppe weiterzuleiten. Sind zwei Sites übereingekommen, News miteinander auszutauschen, können sie jede gewünschte Newsgruppe transportieren. Es können sogar eigene lokale News-Hierarchien eingeführt werden. Beispielsweise könnte groucho.edu einen News-Link zu barnyard.edu besitzen, der einer der Haupt-Newsverteiler ist, sowie verschiedene Links zu kleineren Sites, die es mit News versorgt. Nun könnte das Barnyard College alle Usenet-Gruppen empfangen wollen, während die GMU nur einige der Haupthierarchien wie sci, comp, rec etc. nutzen möchte. Einige dahinterliegende Sites, z. B. eine UUCP-Site namens brewhq, könnten noch weniger Gruppen wollen, weil die Netzwerk- oder Hardware-Ressourcen nicht ausreichen. Andererseits könnte brewhq Newsgruppen aus der fj-Hierarchie empfangen wollen, die von der GMU nicht empfangen werden. brewhq besitzt daher einen weiteren Link zu gargleblaster.com, die alle fj-Gruppen empfängt und diese an brewhq weitergibt. Der Datenfluß der News ist in Abbildung 16--1 zu sehen.

Abbildung 16-1. Datenfluß von Usenet-News durch die Groucho-Marx-Universität

Die Bezeichnungen neben den von brewhq ausgehenden Pfeilen bedürfen möglicherweise der Erklärung. Standardmäßig sollen alle lokalen generierten News an groucho.edu geschickt werden. Weil groucho.edu aber die fj-Gruppen nicht transportiert, macht es keinen Sinn, ihm Nachrichten dieser Gruppe zu schicken. Daher wird der Feed von brewhq zur GMU mit dem Text all,!fj bezeichnet, was verdeutlichen soll, daß alle Gruppen außer denen unterhalb von fj dorthin gesendet werden.

Wie behandelt Usenet die News?

Heutzutage hat das Usenet enorme Proportionen angenommen. Sites, die die gesamten Netnews vorhalten, transportieren täglich weit über 60 Megabyte.(2) Natürlich geht es hier um weit mehr, als um das reine Umherschieben von Dateien. Sehen wir uns also an, wie die meisten UNIX-Systeme Usenet-News behandeln.

News werden im Netz über verschiedene Wege transportiert. Das historische Medium war UUCP, aber heutzutage wird der Hauptdatenverkehr über Internet-Sites abgewickelt. Das zum Routen verwendete Verfahren wird als Flooding-Algorithmus bezeichnet: Jede Site verwaltet eine Anzahl von Links (News-Feeds) zu anderen Sites. Jeder vom lokalen System generierte oder empfangene Artikel wird an diese Links weitergeleitet. Wurde er bereits ausgeliefert, wird er ausrangiert. Eine Site kann sich ansehen, welche Sites der Artikel bereits passiert hat, indem sie das Header-Feld Path: untersucht. Dieser Header enthält eine Liste aller Systeme, die den Artikel weitergeleitet haben, in Bang-Path-Notation.

Um Artikel unterscheiden und Duplikate erkennen zu können, enthalten Usenet-Artikel eine sog. Message-ID (spezifiziert im Header-Feld Message-Id:). Diese kombiniert den Namen der Site, auf welcher der Artikel gepostet wurde, und eine Seriennummer in einer Zeichenkette des Formats <seriennummer@site>. Bei jedem verarbeiteten Artikel speichert das News-System diesen ID in einer history-Datei, über die alle neu eingegangenen Artikel abgeprüft werden.

Der Fluß zwischen diesen beiden Sites kann über zwei Kriterien eingeschränkt werden. Zum einen kann einem Artikel eine bestimmte »Distribution« (im Header-Feld Distribution:) zugewiesen werden, die verwendet werden kann, um ihn auf eine bestimmte Gruppe von Sites zu beschränken. Auf der anderen Seite kann die Anzahl der ausgetauschten Newsgruppen durch das sendende, aber auch durch das empfangende System eingeschränkt werden. Der Satz von Newsgruppen und Distributionen, die an eine bestimmte Site übertragen werden dürfen, ist üblicherweise in der Datei sys definiert.

Alleine die Anzahl der Artikel macht es üblicherweise notwendig, das obige Schema zu verbessern. Bei UUCP-Netzwerken ist es durchaus natürlich, Artikel über eine gewisse Zeit zu sammeln und in einer einzelnen Datei zu speichern, die komprimiert und dann an die andere Site übertragen wird. Die Technik wird Stapelverarbeitung oder auch Batching genannt.

Eine alternative Technik ist das ihave/sendme-Protokoll, das verhindert, daß Artikel doppelt übertragen werden, und auf diese Weise Bandbreite spart. Anstatt alle Artikel in einer Batch-Datei zu speichern und zu versenden, werden nur die Message-IDs der Artikel zu einer großen »ihave«-Nachricht zusammengefasst und an die andere Site übertragen. Die andere Site liest diese Nachricht und vergleicht sie mit der eigenen History-Datei. Daraufhin wird in einer »sendme«-Nachricht eine Liste der gewünschten Artikel zurückgeliefert. Nur diese Artikel werden dann übertragen.

Diese Technik macht natürlich nur Sinn, wenn zwei große Sites Daten austauschen, die News jeweils über mehrere unabhängige Quellen beziehen und sich oft genug pollen, so daß ein effizienter Fluß von News möglich ist.

Auf Internet-Sites wird in der Regel TCP-IP-basierte Software eingesetzt, die das Network News Transfer Protocol (NNTP) verwendet. Diese überträgt News zwischen verschiedenen Quellen und bietet Usenet-Zugriff für einzelne Benutzer auf anderen Hosts.

NNTP kennt drei verschiedene Arten der News-Übertragung. Die erste ist eine Echtzeit-Version von ihave/sendme, die als »rüberschieben« (pushing) von News bezeichnet wird. Die zweite Technik ist das »rüberziehen« (pulling) von News. Dabei fordert der Client eine Liste von Artikeln einer bestimmten Newsgruppe oder -Hierarchie an, die bis zu einem bestimmten Zeitpunkt auf der Serverseite angekommen sind, und wählt dann die aus, die in der History-Datei nicht gefunden werden konnten. Bei der dritten Methode handelt es sich um interaktives Lesen von News. Dabei kann Ihr Newsreader Artikel aus angegebenen Newsgruppen empfangen und gleichzeitig Artikel mit unvollständigen Header-Informationen posten.

Bei jeder Site werden News in einer Verzeichnis-Hierarchie unter /var/spool/news gehalten. Jeder Artikel steht in einer separaten Datei und jede Newsgruppe in einem separaten Verzeichnis. Der Verzeichnisname besteht aus dem Namen der Newsgruppe. Deren Komponenten bilden dabei die Komponenten des Pfads. Die Artikel der Newsgruppe comp.os.linux.misc befinden sich also im Verzeichnis /var /spool/news/comp/os/linux/misc. Den Artikeln einer Newsgruppe werden Zahlen in der Reihenfolge ihres Eintreffens zugewiesen. Diese Zahlen dienen als Dateinamen. Der Wertebereich von Artikeln, die gerade online sind, wird in einer Datei namens active gespeichert. Die Datei enthält außerdem eine Liste der Ihrer Site bekannten Newsgruppen.

Weil Festplattenplatz nur eine endliche Ressource darstellt,(3) muß man nach einer gewissen Zeit anfangen, alte Artikel auszusortieren. Das wird als Expiring, also »Löschen«, bezeichnet. Normalerweise werden Artikel aus bestimmten Gruppen und Hierarchien nach einer festen Zeit (in Tagen) für ungültig erklärt (und gelöscht). Diese Zeit kann durch den Verfasser durch Angabe eines Ungültigkeitsdatums im Feld Expires: des Artikel-Headers überschrieben werden.


Fußnoten

(1)
Das Format von Usenet-News-Nachrichten ist in RFC 1036, »Standard for interchange of USENET messages« spezifiziert.
(2)
Moment mal: 60 MByte bei 9600 Bps sind 60 Millionen durch 1200 ..., sind … murmel, murmel… Hey! Das sind 34 Stunden!
(3)
Manche Leute behaupten, das Usenet sei eine Verschwörung von Modem- und Festplattenherstellern.

Inhaltsverzeichnis Kapitel 15 Kapitel 17