It would be nice if the Food and Drug Administration stopped issuing warnings about toxic substances and just gave me the names of one or two things still safe to eat. -- Robert Fuoss
10 Netzwerk-Grundlagen
Nachdem Sie nun bereits einiges über das System wissen, werden wir uns ein weiteres wichtiges Thema, die Netzwerke sowie die Netzwerkkonfiguration, vornehmen. Typischerweise handelt es sich dabei um ein Kapitel, das man schon fertig im Kopf hat, bevor man beginnt, es zu schreiben, und bei dem einem trotzdem keine »vernünftige« Einleitung einfällt. Da wir eine solche Einleitung übersprungen haben, legen wir gleich los.
An dieser Stelle soll nicht ausführlich auf Netztheorien oder Ähnliches eingegangen werden. Wir möchten Ihnen in diesem Kapitel die wichtigsten Kenntnisse bezüglich TCP/IP vermitteln, was für all jene, die von dieser Thematik zum ersten Mal hören, recht kompliziert scheinen mag. Zudem wollen wir uns der grundlegenden und teilweise bereits fortgeschrittenen Administration widmen.
Als weiterführende Lektüren können wir Ihnen »Aufbau und Betrieb eines TCP/IP Netzes« von Washburn und Evans sowie »TCP/IP Illustrated, Volume 1: The Protocols« von W. R. Stevens empfehlen. Das Werk von Stevens setzt sich leider nicht mit IPv6 auseinander, <Was darauf zurückzuführen ist, dass das Buch bereits 1994 erschien und der Autor verstarb, bevor er eine neuere Auflage schreiben konnte.> geht dafür aber intensiver auf TCP ein, als es Washburn und Evans tun.
10.1 Grundlegendes zu TCP/IP
Computer kommunizieren über Netzwerksysteme miteinander. Diese Systeme benutzen verschiedenste Medien zur Übertragung so genannter Protokolle. Diese Protokolle, die z. B. für die Steuerung des Datenflusses und die Zustellung der Daten über verschiedene Knotenpunkte (Router) zuständig sind, beinhalten wiederum die eigentlichen Nutzdaten.
TCP/IP stellt eine Sammlung solcher Protokolle dar und besteht aus zahlreichen Standards. Die Buchstaben TCP stehen dabei für das Transportprotokoll »Transmission Control Protocol«, die Buchstaben IP für »Internet Protocol«. Doch mehr dazu später.
Schichtenmodell
Die Kommunikationsarchitektur ist dabei so aufgebaut, dass sie aus verschiedenen Schichten besteht. Schauen wir uns diese Schichten zunächst einmal an.
Unser Modell verwendet, wie auch wir im gesamten Buch, die englischen Begriffe der einzelnen Protokoll-Schichten (Layer). Das hat ganz einfach den Grund, dass so auch weitere Bücher zum Thema TCP/IP einfacher zu verstehen sind, weil diese oft in englischer Sprache verfasst sind. <Im oben genannten Buch von Washburn und Evans werden leider die deutschen Begriffe für diese Schichten verwendet, was erfahrungsgemäß bei Neueinsteigern für Verwirrung sorgt. Es existiert jedoch auch eine englische Originalausgabe.>
Abbildung 10.1 Das TCP/IP-Schichtenmodell
Jeder Layer kommuniziert dabei mit seinem Gegenüber auf dem Zielsystem. Der Internet-Layer eines Rechners A kommuniziert folglich nur mit dem Internet-Layer des Kommunikationspartners B. Die Layer nutzen dabei jeweils die Dienste der darunter liegenden Schichten, sodass das Abstraktionsniveau, aber auch das Leistungsvermögen mit jeder Schicht ansteigt.
Der Vorteil dabei ist natürlich, dass verschiedene Layer auch verschiedene Aufgaben übernehmen und eine einzelne Schicht nicht die Verantwortung für die gesamte Kommunikation übernehmen muss. <Die erste TCP-Implementierung hatte genau diese problematische Eigenschaft. Mittlerweile ist die Arbeitsfunktion von TCP jedoch auf den Transport-Layer beschränkt worden.>
Für den Anwender sind diese Layer völlig transparent, er benötigt lediglich eine Endapplikation (beispielsweise einen Browser oder ein Mailprogramm), um auf die Dienste des Netzwerks zuzugreifen.
Abbildung 10.2 Kommunikation mit der Gegenschicht
10.1.1 Network-Access-Layer
Dieser Layer hat die Aufgabe, die einzelnen Bits über ein physikalisches Medium zum Zielsystem zu übertragen. Dies könnte zum Beispiel ein Crossover-Kabel sein, das an einer handelsüblichen Ethernet-Netzwerkkarte angeschlossen ist. Auf diesem Layer kommunizieren die Systeme mittels sogenannter Frames.
10.1.2 Internet-Layer
IP-Layer
Der Internet-Layer hat die Aufgabe, Daten mithilfe des Internet-Protokolls (IP), das wir später noch genauer betrachten werden, zu versenden und zu empfangen. Dazu besitzt jeder Rechner eine eindeutige Adresse – die sogenannte IP-Adresse --, die ihn eindeutig in einem Netzwerk identifiziert. Im Gegensatz zum Network-Access-Layer erfolgt auf diesem Layer sogenanntes Routing.
Routing stellt sicher, dass Daten über verschiedene Netzwerke versendet werden können. Dazu werden Informationen benötigt, die angeben, über welche Router oder anderen Rechner man diese Netzwerke erreichen kann.
Die Informationen über die Wegfindung, also die Routing-Informationen, werden dabei in den Routing-Tabellen der einzelnen Rechner abgelegt. Diese können entweder statisch vom Administrator konfiguriert oder über Routing-Protokolle dynamisch verwaltet werden.
10.1.3 Transport-Layer
Die übergeordnete Schicht, der Transport-Layer, hat die Aufgabe, die durch die Layer 1 und 2 zum Ziel beförderten Daten an die richtigen Ports zu senden. Dieser Layer stellt neben wichtigen Routing-Protokollen wie OSPF im Prinzip nur zwei herausragende Protokolle, nämlich TCP (Transmission Control Protocol) und UDP (User Datagram Protocol), bereit.
TCP verursacht eine etwas größere Datenlast als UDP und arbeitet dadurch zwar langsamer, verfügt aber über einen Fehlerkorrekturalgorithmus, der die Auslieferung der Segmente gewährleisten soll. UDP hingegen kümmert sich nicht darum, ob die über dieses Protokoll transferierten Pakete überhaupt ankommen. UDP wird daher für Systeme eingesetzt, die hohes Datenaufkommen bei ständig wechselnden, aber prinzipiell gleichen Daten verursachen. <Dies kann beispielsweise bei Statusdaten, die einmal pro Sekunde komplett übertragen werden, der Fall sein.> Diese beiden Protokolle werden selbstverständlich noch detaillierter besprochen.
Ein weiterer Unterschied zwischen TCP und UDP ist der, dass TCP verbindungsorientiert arbeitet. Das bedeutet, dass eine Verbindung vor der Kommunikation zunächst aufgebaut und zum Ende dieser Kommunikation wieder geschlossen werden muss.
10.1.4 Application-Layer
Der sogenannte Application-Layer, zu Deutsch Anwendungsschicht, wird von den einzelnen Netzwerkprogrammen und -diensten verwendet. Sie stellen einen Dienst auf einem Port zur Verfügung (beziehungsweise greifen auf diesen clientseitig zu) und können über ihn senden und empfangen. Diese Applikationen benötigen natürlich jeweils ihre eigenen, in der Regel glücklicherweise standardkonformen Protokolle. Die wichtigsten davon sind: HTTP (Webserver <--> Browser), FTP (FTP-Server <--> FTP-Client), SMTP (Mailtransfer-Agent (MTA) <--> E-Mail-Client) und POP3 (POP3-Server <--> E-Mail-Client).
In diesem Layer spricht man nicht mehr von Paketen bzw. Segmenten, sondern von Messages <Zu Deutsch: Nachrichten.> (UDP) und Streams (TCP).
Zusammenfassung
Fassen wir also noch einmal zusammen: Ein Programm, das mit einem anderen Programm auf einem entfernten Rechner kommuniziert, benötigt also ein Protokoll. Das Protokoll wird benötigt, damit die Kommunikation fehlerfrei funktionieren kann – und eigentlich ist ohne ein wie auch immer geartetes Protokoll auch keine Art von Kommunikation möglich. Schließlich können sich auch nicht zwei Menschen unterhalten, die keine gemeinsame Sprache sprechen.
Möchte man beispielsweise mit dem Browser auf einen anderen Rechner zugreifen, wird zunächst dessen IP-Adresse benötigt. Der eigene Computer baut nun über den Network-Access-Layer eine physikalische Verbindung zum Zielrechner auf. Dieser wird über eine Schnittstelle mit der besagten IP-Adresse angesprochen. Zu dieser Adresse senden die nächst-»höheren« Protokolle im TCP/IP-Protokollstack (die sich nun keineswegs mehr über physikalische Details kümmern müssen) ihre Daten. Dabei handelt es sich beispielsweise um TCP oder UDP, also Protokolle des Transport-Layers. Über diese kann der jeweilige Port des Servers bzw. Clients angesprochen werden. Bei einer Browser-Verbindung wird dafür das TCP-Protokoll und der Server-Port 80 verwendet. Letztlich ist im TCP-Paket zudem noch ein Paket des Application-Layers, in diesem Fall das HTTP-Protokoll, enthalten. Dieses Protokoll beinhaltet dann unter anderem auch die eigentlichen Nutzdaten.