Eine völlig neue Implementation des TCP/IP Protokolles im Kernel zu entwickeln, die mindestens so schnell ist wie bereits vorhandene war keine leichte Aufgabe. Die Entscheidung, keinen der bereits vorhandenen Treiber zu übertragen fiel zu einem Zeitpunkt an dem es einige Unsicherheiten darüber gab, ob ebendiese Implementationen mit einem restriktiven Copyright belegt werden würden. Außerdem war zu diesem Zeitpunkt der Enthusiasmus recht groß, diese Aufgabe auf eine andere Weise und womöglich sogar besser als in den vorhandenen Treibern zu lösen.
Der erste, der die Entwicklung des Linux Netzwerk-Codes leitete, war
Ross Biro (biro@yggdrasil.com
). Er schrieb einen zwar nicht ganz
vollständigen aber dennoch gut brauchbaren Code, die durch einen Treiber
für die WD-8003 Netzwerk-Karte vervollständigt wurde. Dies reichte aus,
um viele andere dazu zu bringen, diesen Code zu testen und mit ihm zu
experimentieren. Manchen ist es sogar bereits mit dieser Konfiguration
gelungen, ihren Rechner an das Internet anzuschließen. Dadurch stieg im
Linux-Umfeld der Druck, die Entwicklung des Netzwerk-Codes
voranzutreiben. Dieser unfaire Druck, wohl zusammen mit seinen privaten
Verpflichtungen, veranlaßten Ross, diese Rolle als Hauptentwickler
aufzugeben. Seine Bemühungen, das ursprünglich Projekt ins Rollen zu
bringen und die Verantwortung dafür zu übernehmen, daß dabei auch unter
schwierigen Bedingungen etwas brauchbares herauskam wirkten als
Katalysator für alle folgenden Arbeiten und sind aus diesem Grund ein
wesentlicher Baustein des Erfolges des heutigen Produktes.
Die Programmierung des originalen BSD Socket Interface im Linux Kernel
wurde von Orest Zborowski
(obz@Kodak.COM
)
durchgeführt. Dies war ein gewaltiger Schritt nach vorne da es dadurch
möglich wurde, eine große Zahl von Netzwerkanwendungen ohne großen
Aufwand für Linux zu portieren.
Ungefähr zu diesem Zeitpunkt schrieb Laurence Culhane
(loz@holmes.demon.co.uk
)
den ersten SLIP-Treiber für Linux. Dadurch konnten endlich auch solche
Leute mit dem Netzwerk experimentieren, die nicht über Zugang zu einem
Ethernet verfügten. Auch dieser Treiber wurde weiterentwickelt, um eine
Internetanbindung über SLIP zu ermöglichen. Erneut stieg die Zahl
derjeniger, die aktiv an der Erprobung und Weiterentwicklung der
Netzwerk-Software mitarbeiten konnten, auch wurde vielen jetzt vor Augen
geführt, was mit Linux alles möglich ist, wenn man erst einmal eine
vollständige Netzwerkunterstützung hat.
Einer dieser Personen die aktiv an der Netzwerkunterstützung für
Linux arbeiteten war Fred van Kempen
(waltje@uwalt.nl.mugnet.org
). Nach einer Phase der
Ungewißheit, die auf den Rückzug von Ross folgte, bot Fred seine
Zeit und Arbeitskraft für diesen Posten an.
Fred hatte einige sehr ambitionierte Pläne bezüglich der Richtung, in
die die Entwicklung des Linux Netzwerk-Codes gehen sollte, und er begann
damit, die notwendigen Schritte zu tun. Fred schrieb eine Version
dieser Software, die als `NET-2' Kernel Code bezeichnet wurde (`NET'
Code war die Version von Ross). Diese Version konnte von vielen Leuten
erfolgreich eingesetzt werden. Fred schrieb auch einige Neuerungen in
die Planbücher der Entwickler, so z.B.\ die dynamische
Geräteschnittstelle, Unterstützung für das Amateurfunk Protokoll AX.25
sowie eine stärker modularisierte Version der Software. Freds Programme
wurden zunächst von einigen Enthusiasten benutzt, deren Zahl aber
ständig zunahm, je mehr sich herumsprach daß die Software gut
funktionierte. Zu diesem Zeitpunkt bestand die Netzwerksoftware immer
noch aus einer großen Anzahl von Patches gegenüber dem Standard-Kernel,
sie gehörte nicht zur normalen Distribution. Das NET_FAQ
und die
folgenden NET-2-HOWTOs
beschrieben die recht komplizierte Prozedur,
all dies zum Laufen zu bekommen. Freds Hauptaugenmerk lag darauf,
Neuerungen zu entwickeln, und das beanspruchte Zeit. Die
Nutzergemeinschaft hingegen wartete immer ungeduldiger auf eine stabile
Version, die für 80% auch funktionierte. Wie bereits bei Ross stieg der
Druck auf Fred als Hauptentwickler.
Alan Cox (iialan@www.linux.uk.org
) schlug daraufhin eine Lösung
des Problems vor. Er wollte Freds NET-2 Code nehmen und die Fehler
darin beseitigen, um so eine stabile und zuverlässige Version
zusammenzustellen, die die ungeduldigen Nutzer zufriedenstellte und den
Druck von Freds Schultern nahm, sodaß dieser seine eigentliche Arbeit
verfolgen konnte. Alan tat dies mit Erfolg, und seine erste Version
wurde als `NET-2D(ebugged)' bezeichnet. Sie arbeitete zuverlässig in
vielen typischen Konfigurationen, und die Benutzer waren glücklich.
Alan hatte natürlich auch eigene Ideen und auch die Fähigkeiten, die er
zum Projekt beitragen wollte, und in der Folgezeit gab es viele
Diskussionen darüber, in welche Richtung die Entwicklung des
Netzwerk-Codes gehen solle. Es bildeten sich zwei Lager in der
Linux-Gemeinde. Die eine vertrat die Ansicht, der Code müsse zunächst
funktionieren, dann könne man ihn verbessern, die andere Gruppe wollte
ihn zunächst verbessern. Linus fällte letztendlich die Entscheidung,
indem er Alan seien Unterstützung anbot und seine Version in die
offiziellen Kernel Distribution aufnahm. Dadurch geriet Fred in eine
schwierige Lage. Jede Weiterentwicklung seines Codes hätte nun nicht
mehr die Verbreitung und breite Nutzerbasis, die für ein gutes Testen
nötig wäre. Dadurch würde der Fortschritt langsam und schwierig werden.
Fred arbeitete noch eine zeitlang weiter, zog sich dann aber zurück und
Alan wurde der neue Kopf der Netzwerk Entwicklung.
Donald Becker (becker@cesdis.gsfc.nasa.gov
) zeigte bald sein
Talent auf dem Bereich des Low-Level Netzwerk-Codes und schuf eine große
Zahl von Ethernet-treibern; fast alle in der Standard
Kerneldistribution enthaltenen wurden von ihm entwickelt. Auch einige
andere Personen haben wichtige Beiträge geliefert, doch Donalds Arbeit
war äußerst fruchtbar und rechtfertigt so die besondere Erwähnung.
Alan setzte seine Arbeit an der Verbesserung des NET-2D Codes fort, und
beschäftigte sich mit einigen Bereichen der `TODO' Liste, die bislang
unberücksichtigt geblieben waren. Mit der Stabilisierung der
Kernelversionen der 1.3
Serie hatte auch der Netzwerk-Code den
Schritt zur Version NET-3 vollzogen, auf dem auch die aktuellen
Versionen basieren. Alan arbeitete an unterschiedlichen Aspekten des
Netzwerk-Codes und mit der Hilfe einer Zahl anderer talentierter
Programmierer aus der Linux Gemeinschaft wuchs der Code in alle
möglichen Richtungen. Alan schrieb die dynamischen Netzwerk Devices und
die ersten standardkonformen AX.25 und IPX Implementationen. Seine
Feinarbeit am Code hat Alan fortgesetzt und in auf den heutigen Stand
verbessert.
Unterstützung für PPP wurde von Michael Callahan
(callahan@maths.ox.ac.uk
) und Al Longyear
(longyear@netcom.com
) implementiert. Auch dies
war ein wichtiger Schritt der die Anzahl derjenigen Nutzer erhöhte, die
Linux für Netzwerkaufgaben einsetzten.
Durch Jonathon Naylor (jsn@cs.nott.ac.uk
) wurde der AX.25 Code
von Alan deutlich verbessert und Unterstützung für das NetRom Protokoll
hinzugefügt. Damit war Linux das einzige System das sich rühmen konnte,
von Haus aus AX.25/NetRom zu unterstützen.
Selbstverständlich haben darüberhinaus hunderte weiterer Personen wichtige Beiträge zur Weiterentwicklung der Netzwerk-Software für Linux geliefert. Einige dieser Namen werden weiter unten in den entsprechenden Abschnitten erwähnt, andere haben Module oder Treiber geschrieben, Fehler beseitigt, Vorschläge gemacht, Tests durchgeführt oder einfach moralische Unterstützung geliefert. Jeder von ihnen kann von sich sagen, seinen Teil zum Ganzen hinzugefügt zu haben. Der Linux Netzwerk-Code ist ein hervorragendes Beispiel dafür, welch beeindruckende Ergebnisse der Linux-typische anarchische Stil der Entwicklung liefern kann. Und diese Entwicklung geht natürlich noch immer weiter.
Alan Cox, der derzeit die Entwicklung des Netzwerk Codes leitet, unterhält eine Seite im World Wide Web, die die Highlights der derzeitigen Entwicklung auflistet:
http://www.uk.linux.org/NetNews.html
Eine andere gute Quelle ist das Buch von Olaf Kirch: The Network
Administrators Guide. Dieser ist ein Teil des
Linux Documentatation Project und kann entweder via ftp
in diversen Formaten besorgt werden
sunsite.unc.edu:/pub/Linux/docs/LDP/network-guide/
oder inzwischen auch direkt über das Netz gelesen werden:
http://sunsite.unc.edu/LDP/LDP/nag/nag.html
Olafs Buch ist sehr verständlich und gibt einen sehr tiefgehenden
Einblick in die Netzwerk Konfiguration unter Linux.
Unter den Linux Newsgroups gibt es auch eine, die sich speziell mit
allen Belangen des Netzwerkens befaßt:
de.comp.os.linux.networking.
Weiterhin besteht eine Mailing Liste zum Thema Netzwerke. Um sie zu abonnieren genügt eine kurze Mail:
To: majordomo@vger.rutgers.edu
Subject: anything at all
Message:
subscribe linux-net
Auf vielen der diversen IRC Netzwerke gibt es auch oft #linux
Kanäle. Dort ist meist auch jemand bereit und in der Lage,
Hilfestellungen zum Thema Netzwerke zu geben.
Eines sollte man aber immer beherzigen, wenn man mit seinen Problemen an die Öffentlichkeit will: Es sollte immer soviel wie möglich an relevanter Information angegeben werden. Insbesondere sind das die Versionsnummern des Kernels und der Software wie z.B. pppd oder dip, sowie eine genaue Beschreibung der auftretenden Probleme. Dies umfaßt auch den genauen Wortlaut etwaiger Fehlermeldungen sowie die genaue Syntax, mit der man ein Programm startet.
Wer nach einer grundlegenden Einführung in TCP/IP Netzwerke sucht, dem seien folgende Dokumente empfohlen:
entweder als Textversion
(athos.rutgers.edu:/runet/tcp-ip-intro.doc
)
oder in PostScript Form
(athos.rutgers.edu:/runet/tcp-ip-intro.ps
)
entweder als Textversion
(athos.rutgers.edu:/runet/tcp-ip-admin.doc
)
oder in PostScript Form
(athos.rutgers.edu:/runet/tcp-ip-admin.ps
)
Noch detailliertere Informationen zum TCP/IP Netzwerk findet man in folgendem Buch:
"Internetworking with TCP/IP"
von Douglas E. Comer
ISBN 0-13-474321-0
Prentice Hall publications.
Das folgende Buch befaßt sich mit dem Schreiben von Netzwerk-Anwendungen in einer Unix Umgebung:
"Unix Network Programming"
von W. Richard Stevens
ISBN 0-13-949876-1
Prentice Hall publications.
Ein guter Tip ist eventuell auch die Newsgroup
comp.protocols.tcp-ip
.
Eine ungemein wichtige Quelle für spezielle technische Informationen zu
Internet und TCP/IP Netzwerken sind die RFC's. RFC ist ein Akronym für
`Request For Comment', also `Bitte um Kommentar'. Es handelt sich dabei
um den Standard, in dem Internet Protokolle dokumentiert werden. Es
gibt viele Stellen, an denen RFC's gesammelt und archiviert werden.
Viele davon sind über ftp
erreichbar, manche bieten Zugang über das
WWW, dann oft gekoppelt mit Suchmaschinen, mit denen eine gezielte
Stichwortsuche möglich ist.
Eine mögliche Anlaufstelle ist die Nexor RFC database:
http://pubweb.nexor.co.uk/public/rfc/index/rfc.html