|
Um die Verteilung zu ermöglichen, stehen die Newsserver
untereinander in Verbindung. Da in der Regel viele Artikel
übertragen werden und aus Effizienzgründen keine doppelt
übertragen werden sollen, wird ein spezielles Verfahren
verwendet. Die Server pflegen Listen, in denen die zu
übertragenden Artikel stehen, wird eine Übertragung durchgeführt,
wird die Liste abgearbeitet, so dass mit einer Verbindung alle
Artikel übertragen werden können. Diese Listen nennt man
Feedlisten. Hat ein Newsserver einen neuen
Artikel empfangen, so trägt er die Nummer des Artikels in die
Feedlisten ein. Ein Artikel trägt in seinem Header
Steuerinformationen, wie z.B. eine Pfadliste, in der die
Newsserver stehen, die diesen Artikel übertragen haben (jeder
Server fügt seinen Namen am Anfang der Liste ein, das Verfahren ist
analog zur Pfadadresse einer eMail aus UUCP-Zeiten).
|
Artikel, die in der Feedliste stehen, sollen also später gefeeded
werden. Dies darf man nicht mit dem posten verwechseln. Clients
posten, Newsserver feeden. Feeden ist auf den ersten Blick zwar
sehr ähnlich, jedoch auf Protokollebene anders. Feeden ist für
große Mengen an Artikeln optimiert. Posten funktioniert
einfacher. Beim Posten geht der Newsserver davon aus, dass der
Artikel neu ist. Gepostete Artikel werden gegebenenfalls um eine
ID ergänzt. Gefeedete Artikel müssen immer bereits eine ID
besitzen.
|
Soll ein Artikel in die Feedliste für einen Zielserver
eingetragen werden, ist das natürlich nur nötig, wenn der Name
des Zielservers noch nicht in der Pfadliste steht (denn
anderenfalls hat er den Artikel ja bereits gesehen und
gespeichert). Der Artikel wird also nur in die Feedlisten der Server
eingetragen, die den Artikel noch nicht weitergeleitet haben. Nun
kann aber ein Zielserver diesen Artikel von einem anderen Server
erhalten haben. Um sinnlosen Datenverkehr zu unterbinden, hat
deshalb jeder Artikel eine weltweit eindeutige ID (genauer
gesagt, muß die ID eindeutig im gesammten Usenet sein,
also eindeutig in allen bekannten Universen). Connected ein
Server einen anderen, um ihm Artikel zu schicken, sendet er erst
einmal eine Liste von
IDs, die er hat. Diese Liste wird aus den Feedlisten
erstellt. Der andere Server vergleicht diese mit seinem
Datenbestand. Artikel mit unbekannten IDs werden nun übertragen.
Dieser Vorgang läuft ebenfalls oft über den NNTP Port ab
(deswegen kann es Schwierigkeiten geben, wenn vom Feeder aus
versucht wird, eine Client-Verbindung aufzubauen, da der Server
häufig hier nur einen Server erwartet, und sich entsprechend
[falsch] verhält).
|
In regelmäßigen Zeitabständen wird ein cron-job gestartet, der
die Feedlisten überträgt. Alternativ dazu kann man das auch über
ein Programm erledigen, was sich wie ein Client verhält und
diese Artikel postet (also nicht feeded!), dabei müssen die
Artikel allerdings etwas modifiziert werden, da ein Client einige
Headerfelder nicht setzen darf (z.B. NNTP-Posting-Host, Xref,
X-Trace, X-Complaints-To, NNTP-Posting-Date), da diese vom
Newsserver gesetzt werden (dazu kann man ein Filterscript
verwenden).
Um nicht in der Datenflut zu ersticken, akzeptiert ein Newsserver
nur einige Gruppen (das können auch einige hundert sein). Das
sollte bereits beim Erstellen der Feedlisten berücksichtigt
werden, man muß schließlich keine Artikel in die Listen
eintragen, die sowieso nicht akzeptiert werden. Auch möchte man
evtl. einige private Gruppen führen, die ebenfalls nicht
gefeeded werden sollen.
|
|
|