LINUX Kernelarchitektur

von: Wolfgang Mauerer

Carl Hanser Fachbuchverlag, 2003

ISBN: 9783446227798 , 784 Seiten

Format: PDF, OL

Kopierschutz: Wasserzeichen

Windows PC,Mac OSX für alle DRM-fähigen eReader Apple iPad, Android Tablet PC's Online-Lesen für: Windows PC,Mac OSX,Linux

Preis: 44,00 EUR

  • Küss mich, Playboy!
    Märchenprinz sucht Aschenputtel
    Bleib bei mir, Gabriella
    Tiffany Exklusiv Band 6 - Heisser Draht / Von dir will ich alles / Ein verführerisches Angebot /
    Sehnsüchtige Träume am Mittelmeer
    Picknick mit einem Cowboy
  • Entführt in den Palazzo des Prinzen
    Im Inselreich der Liebe
    Herzklopfen in der Karibik
    Bleibt dein Herz in Australien?
    Süsse Umarmung in Nizza

     

     

     

     

 

Mehr zum Inhalt

LINUX Kernelarchitektur


 

9 Netzwerke (S. 905-906)

Linux ist ein Kind des Internets, darüber besteht kein Zweifel: Seine Entwicklung hat viele verbreitete Ansichten über Projektmanagement bei weltweiten Programmierergruppen ad absurdum geführt, was vor allem der Kommunikation über das Internet zu verdanken war. Seit die ersten Kernelquellen vor mehr als einem Jahrzehnt auf einem ftp-Server im Internet verfügbar gemacht wurden, waren Netzwerke immer das zentrale Rückgrat, wenn es um Datenaustausch, Entwicklung von Konzepten und Code oder die Beseitigung von Fehlern im Kern ging. Die Kernelmailingliste ist ein lebendiges Beispiel dafür, dass sich an dieser Technik bis heute nichts geändert hat: Jeder kann die Beiträge lesen, sich selbst mit seiner Meinung beteiligen und dadurch zur Entwicklung von Linux beitragen – vorausgesetzt, man hat etwas Vernünftiges zu sagen.

Die Beziehung von Linux zu Netzwerken aller Art ist sehr innig, schließlich ist das Internet der Brutkasten, in dem es groß geworden ist. Linux-Rechner machen einen bedeutenden Anteil aller Server aus, die das Internet bilden, weshalb die Netzwerkimplementierung einer der wichtigsten Bestandteile des Kerns ist, dem bei der Entwicklung immer große Beachtung geschenkt wird. Es gibt kaum eine Netzwerkmöglichkeit, die von Linux nicht unterstützt wird. Die Implementierung der Netzwerkfunktionalitäten ist einer der komplexesten und umfangreichsten Teile des Kerns: Neben den klassischen Internet-Protokollen wie TCP, UDP und dem assoziierten Transportmechanismus IP unterstützt Linux viele weitere Möglichkeiten, die die Verbindung von Computern ermöglichen, um die größtmögliche Fähigkeit zur Zusammenarbeit mit allen denkbaren Rechner- und Betriebssystemtypen zu ermöglichen. Auch die Unterstützung einer riesigen Zahl von Hardwaremöglichkeiten zur Datenübertragung – angefangen bei Ethernet- Karten über Token-Ring-Adapter bis hin zu ISDN-Karten und Modems – macht die Aufgabe des Kerns nicht gerade einfacher.

Dennoch konnten die Linux-Entwickler ein erstaunlich gut strukturiertes Modell schaffen, mit dem sich die teilweise recht unterschiedlichen Ansätze vereinigen lassen. Auch wenn dieses Kapitel zu den umfangreichsten im Buch gehört, ist es nicht möglich, jedes Detail der Netzwerkimplementierung zu berücksichtigen. Es ist bereits unmöglich, auf alle Treiber und Protokolle grob einzugehen, da so viele Informationen vorhanden sind, die nicht nur eines, sondern gleich mehrere Bücher füllen würden. Die C-Implementierung des Netzwerklayers belegt – ohne Gerätetreiber für Netzwerkkarten! – bereits 7 MiB in den Kernelquellen, was gedruckt wesentlich mehr als 2500 Seiten ausmacht und ein beeindruckendes Codemassiv ist. Dennoch finden sich viele Konzepte, die hinter diesem Code stehen und das logische R¨uckgrat des Netzwerksubsystems bilden:

Genau diese Punkte werden uns in diesem Kapitel interessieren. Außerdem werden wir uns an der TCP/IP-Implementierung orientieren, da dies die mit Abstand am weitesten verbreiteten Netzwerkprotokolle sind. Natürlich musste die Entwicklung des Netzwerklayers nicht ganz bei Null beginnen: Standards und Konventionen, die den Datenaustausch zwischen Computern ermöglichen, sind bereits seit Jahrzehnten vorhanden und entsprechend gut bekannt und eingeführt. Linux implementiert diese Standards, um die Verbindung mit anderen Computern aufnehmen zu können.

9.1 Verkettete Computer

Die Kommunikation von Computern untereinander ist ein komplexes Thema, das viele Bereiche umfasst, in denen verschiedenste Fragen gelöst werden müssen. Um nur einige zu nennen:

- Wie wird die Verbindung physikalisch hergestellt? Welche Kabel werden verwendet, welche Beschränkungen und speziellen Anforderungen besitzen die Medien?

- Wie werden Übertragungsfehler behandelt?

- Wie werden individuelle Computer in einem Netzwerk identifiziert?

- Wie können Daten zwischen Computern ausgetauscht werden, die nur indirekt verbunden sind, d.h. über einen oder mehrere andere Computer als Zwischenstationen? Wie kann der günstigsteWeg herausgefunden werden?

- Wie werden die Nutzdaten verpackt, um nicht von speziellen Merkmalen einzelner Rechner abhängig zu sein?

- Wie lassen sich mehrere Netzwerkdienste auf einem Rechner identifizieren?


Dieser Katalog lässt sich fast beliebig fortsetzen. Leider ist nicht nur die Anzahl der Fragen, sondern auch die Anzahl der Lösungsmöglichkeiten unbeschränkt, weshalb im Laufe der Zeit sehr viele Vorschläge gemacht wurden, umdie Probleme in den Griff zu bekommen. Als " vernünftig" haben sich dabei vor allem jene Systeme herauskristallisiert, die die Probleme in mehrere Kategorien einteilen und auf diese Weise verschiedene Schichten schaffen, die sich mit der Lösung einer klar definierten Fragestellung beschäftigen und mit den über/untergeordneten Schichten nur über genau festgelegte Mechanismen kommunizieren. Dieser Ansatz erleichtert Implementierung, Wartung und vor allem Fehlersuche drastisch.