Linux Netzwerke
Die TCP/IP Protokollfamilie
1 Eine kurze Geschichte des TCP/IP Netzwerksystems
Seit 1969 machte die DARPA (United Staates Defense Advanced Research Projects Agency) Versuche, weit auseinanderliegende Computersysteme verlässlich zu vernetzen. Grundgedanke dieses Netzes war die Funktionstüchtigkeit der Netze auch nach einem teilweisen Ausfall durch Atomexplosionen.Im Jahr 1975 wurde der Schritt vom Versuchsstadium in die Praxis gemacht. Die DARPA war inzwischen nicht mehr nur für das Verteidigungsministerium tätig und wurde daher in ARPA umbenannt. Das ARPA-NET verband die Computer der Regierungsstellen und aller amerikanischer Universitäten. Dadurch wurde es schnell auch für zivile Zwecke benutzt.
1983 wurden neue Protokolle eingeführt, um mit den wachsenden Rechnerzahlen umgehen zu können. Diese Protokollfamilie hieß TCP/IP.
Durch den Erfolg von TCP/IP im ARPANET wurden die Protokolle auch für die Verwendung in lokalen Netzen implementiert. TCP/IP wurde zum Standardelement der Unix-Kernel.
Bis 1990 wurde ein fließender Übergang vom ARPANET ins INTERNET abgewickelt. Seitdem hat sich die ARPA ganz aus dem Netz zurückgezogen, es gibt keinen eigentlichen Eigentümer mehr.
2 Das TCP/IP System im Vergleich zum OSI Modell
TCP/IP hält sich nicht an das OSI-Schichtenmodell, es hat ein eigenes Modell, das sich nicht eins zu eins übertragen lässt.Jede der vier Schichten des TCP/IP Schichtenmodells verfügt über ein bzw. mehrere Protokolle, die den Umgang mit den jeweiligen Daten regeln. Unter Protokollen werden hier Regelsammlungen bezeichnet, die in sogenannten RFCs (Request for comment) veröffentlicht werden.
Das Entscheidende an der Konstruktion von TCP/IP sind die beiden mittleren Schichten, die Transport- und die Vermittlungsschicht. Hier arbeiten immer die gleichen Protokolle. In der Transportschicht stehen zwei zur Verfügung, eins für verbindungsorientierten Datenverkehr (TCP) und eins für verbindungslosen Datentransfer (UDP). In der Vermittlungsschicht arbeitet nur ein Protokoll in der Datenübertragung (IP), so steht also eine einheitliche und verbindliche Übertragungsform zur Verfügung.
In der obersten und untersten Schicht können so die verschiedensten Protokolle arbeiten, von denen die beiden mittleren Schichten nichts wissen müssen. In der Anwendungsschicht können so Standardprotokolle wie etwa FTP (Dateiübertragung), TELNET (Terminal EmuLation über NET), HTTP (WWW-Seiten), SMTP (E-Mail) oder NNTP (News) arbeiten, aber auch eigen entwickelte Protokolle etwa für ein Schachspiel übers Netz.
Die unterste Schicht übernimmt die Steuerung der Netzhardware, also die der Netzwerkkarten o.ä. Diese Schicht kann mit beinahe jedem beliebigen Protokoll arbeiten, wie etwa die IEEE 802.3 802.4 802.5 oder FDDI, ATP aber auch mit PPP oder SLIP auf seriellen oder mit PLIP auf paralelle Schnittstellen
3 Die Schichten und Protokolle des TCP/IP Modells
Um die Funktion des Netzsystems genau zu verstehen ist ein Wissen über die einzelnen Schichten und Protokolle unabdingbar. Anhand einiger Beispiele sollen hier die einzelnen Aufgaben der Schichten erklärt werden.3.1 Die Netzzugriffsschicht mit ihren Protokollen
Hier kommen zwei verschiedene Protokollfamilien zum Einsatz. Die Aufgabe dieser Schicht ist die Übermittlung von Datenpaketen an andere Rechner. Dazu muß sie zum einen in der Lage sein, physikalisch auf die Netzhardware zugreifen zu können und zum anderen muß eine IP-Adresse in eine Adresse für das jeweils vorhandene Netz umgewandelt werden.3.1.1 Die Protokolle für die Netzhardware
In dieser Schicht arbeiten, wie oben schon erwähnt, beinahe alle Protokolle von Netzhardware, von einfachen seriellen Verbindungen bis zu Hochleistungssysteme mit Glasfaserkabeln. Um ein paar Beispiele für unterschiedliche Protokolle zu haben ohne dabei zu verwirrend zu werden, sollen hier die Protokolle der Standard-LAN Technologien IEEE 802.x dargestellt werden. Dabei handelt es sich um drei einzelne Protokolle, 802.3 ist das Protokoll von Ethernet, 802.4 von Token Bus und 803.5 wird von Token Ring benützt.Gemeinsam ist ihnen, dass sie einen beliebigen Datenstrom in Pakete packen, und diese Pakete dann über die Netzhardware schicken. Der Inhalt des Datenstroms spielt dabei keinerlei Rolle, nur die Art und Weise, wie die Pakete gepackt werden ist unterschiedlich.
Auf der anderen Seite erhält das jeweilige Protokoll mehrere Pakete über das Netz und packt sie nach den entsprechenden Regeln wieder aus und bildet aus ihnen wieder den Datenstrom, der vorher beim Senden in Pakete zerhackt wurde. Auch hier spielt der Inhalt des Datenstroms nicht die geringste Rolle.
Um das Ganze einmal im Detail zu sehen sind hier die Paketstrukturen der drei IEEE 802 Normen im einzelnen dargestellt:
3.1.2 Die Adressauflösung mit ARP
Das Problem, zu dessen Lösung dieses Protokoll eingesetzt wird ist leicht erklärt. Jeder Rechner an einem TCP/IP-Netz hat eine 4 Byte IP-Adresse (wie etwa 192.168.200.55 - Die Bedeutung wird weiter unten erklärt...) -- jede Netzwerkkarte hat aber ihrerseits eine eigene Netzwerkadresse, in unserem Fall eine 6 Byte Ethernet-Adresse. Diese Adressen haben keinerlei logischen Zusammenhang.Die Netzzugriffsschicht muß also in die Lage versetzt werden, einem Paketempfänger, von dem nur die IP-Adresse bekannt ist, ein Paket mit der Ethernetadresse zu schicken. Dazu braucht sie eben diese Adresse.
Das Address-Resolution-Protokoll (ARP) löst dieses Problem einfach und elegant. Es führt einen Broadcast-Ruf durch, also einen Ruf, den alle Rechner im Netz empfangen. In diesem Ruf frägt ARP sozusagen:
Wer hat die IP Adresse 192.168.200.55?
Alle Rechner im Netz überprüfen, ob sie diese IP-Adresse haben und der Rechner, der tatsächlich diese Adresse besitzt, schickt eine Antwort wie etwa:
Ich, und ich habe die Ethernetadresse af.23.98.00.2e.a3
Damit kann das ARP jetzt die IP-Adresse 192.168.200.55 mit der Ethernet-Adresse af.23.98.00.2e.a3 in Verbindung bringen. Damit diese Nachfrage nicht bei jedem Paket wiederholt wird, speichert ARP diese Information zwischen, verwirft sie aber automatisch nach einer bestimmten Zeit (ca. 20 Min) um auf eventuelle Wechsel von Hardware vorbereitet zu sein.
3.1.3 Und umgekehrt - RARP
In manchen Fällen kann es auch möglich sein, dass ein Rechner seine IP-Adresse nicht weiß. Das ist z.B. bei plattenlosen Workstations der Fall, die über ein Boot-Prom booten und das Betriebssystem über das Netz laden wollen. Hier ist es notwendig, dass eine IP-Adresse von einem anderen Rechner erfragt werden muß. Das dazu notwendige Protokoll heißt Reversed Address Resolution Protokoll (RARP) und funktioniert in etwa folgendermaßen:Die plattenlose Workstation will beim Booten aufs Netz zugreifen und merkt, dass sie keine IP-Adresse von sich weiß. Sie startet einen Broadcast-Ruf, mit dem Inhalt:
Ich (Ethernetadresse 12.23.34.45.56.78) brauche meine IP-Adresse
Daraufhin schickt ein anderer Rechner, der die Adresse statisch gespeichert hat, der Workstation die Antwort:
Deine Adresse lautet 192.168.200.77
Damit kann die Workstation ihr TCP/IP-System vollständig laden und das weitere Laden des Systems übers Netz starten.
3.2 Die Vermittlungsschicht und das InternetProtokoll (IP)
Die Vermittlungs- oder auch Internetschicht hat ein allumfassendes Protokoll, das zum Transport der Daten zuständig ist, das Internet Protokoll (IP). Daneben arbeitet noch ein weiteres wichtiges Protokoll auf dieser Schicht, das für technische Informationen statt für Daten zuständig ist, das Internet Control Message Protokoll (ICMP).
3.2.1 Das Internet Protokoll (IP)
Das Internet-Protokoll ist für die Vermittlung zwischen zwei Rechnern zuständig. Hier wird mit den IP-Adressen gearbeitet, statt mit den physikalischen Adressen im Netzwerk. Die zentrale Aufgabe des IP ist das Versenden und Empfangen von Daten, die für diesen Zweck wieder mal in Pakete aufgeteilt werden müssen. Die Pakete des IP werden Datagramme genannt und beinhalten neben den eigentlichen Daten wieder verschiedenste Steuerinformationen.
Wenn Pakete (Datagramme) im Internet verschickt werden oder zumindest eine etwas komplexere Topologie in einem lokalen Netz existiert, so müssen Datagramme oft über Gateways geroutet werden. Das heißt, sie müssen durch verschiedene Rechner hindurch zum Empfänger geleitet werden. Auch diese Aufgabe erfüllt das IP-Protokoll, so dass solche Pakete im Gateway nie über die IP-Schicht hinweg kommen:
Zusammenfassend kann man sagen, das IP hat folgende Aufgaben:
- Es definiert die Datagramm-Struktur, die die Grundlage für allen Datenverkehr im TCP/IP-Netz darstellt.
- Es definiert die IP-Adress-Schematik, von der später noch die Rede sein wird.
- Es bewegt Daten zwischen der Transportschicht und der Netzzugriffsschicht.
- Es routet Datagramme zu externen Rechnern.
- Es teilt Datenströme in Datagramme um sie zu versenden und baut aus empfangenen Datagrammen wieder Datenströme zusammen.
3.2.2 Das Internet Controll Message Protocol
Das Internet Control Message Protocol (ICMP) ist ein integraler Bestandteil von IP und dient zur Übermittlung technischer Meldungen, die übers Netz gehen, aber nicht über die IP-Schicht hinauskommen müssen. D.h., dass dieses Protokoll in der Lage ist, Pakete zu schicken, die nicht an ein Transportprotokoll der Transportschicht gebunden sind, sondern eben nur von Vermittlungsschicht zu Vermittlungsschicht gehen.Die Aufgaben, die dieses Protokoll zu erfüllen hat sind hier kurz aufgelistet:
- Flußkontrolle
- Wenn ein Rechner Datagramme so schnell schickt, dass der Empfänger sie nicht rechtzeitig verarbeiten kann, so schickt der Empfänger über ICMP eine Meldung an den Sender, dass die Sendungen vorübergehend stoppen sollen. Nachdem der Empfänger alle anstehenden Datagramme verarbeitet hat, schickt er wieder eine Meldung, dass er wieder empfangsbereit ist.
- Erkennen von unerreichbaren Zielrechnern
- Wenn ein Gateway erkennt, dass ein bestimmter Rechner nicht erreichbar ist, so schickt er an den Absender des Paketes eine Destination unreachable Meldung über ICMP
- Routenoptimierung
- Wenn ein Gateway erkennt, dass er einen Umweg darstellt, so schickt er an den Absender eine Meldung, in der die schnellere Route steht. Der Absender (bzw. seine IP-Schicht) kann dann das nächste Paket schon über den besseren Weg übermitteln.
- Überprüfen von erreichbaren Hosts
- Mit Hilfe des ICMP Echo Message kann ein Rechner überprüfen ob ein Empfänger ansprechbar ist. Das ping-Kommando nutzt diese Echo-Meldung.
3.3 Die Transportschicht (TCP und UDP)
In der Transportschicht arbeiten zwei unterschiedliche Protokolle, TCP und UDP. Der wesentliche Unterschied zwischen beiden Protokollen ist, dass TCP verbindungsorientiert arbeitet und UDP verbindungslos.Beiden Protokollen gemeinsam ist die Verwendung sogenannter Portnummern. Dieses System beruht auf der Tatsache, dass es mehrere Verbindungen über ein Transportprotokoll gleichzeitig geben kann. So kann ein Rechner beispielsweise gleichzeitig über FTP Daten von einem anderen Rechner kopieren und via TELNET auf dem gleichen Rechner eingeloggt sein. Das erfordert es, dass das Transportprotokoll in der Lage ist, zu unterscheiden, welche Pakete an FTP und welche an TELNET adressiert sind. Diese Adressierung übernehmen die Portnummern. Die Standard-Internet-Protokolle haben festgelegte Portnummern (definiert in /etc/services).
3.3.1 User Datagram Protocol (UDP)
UDP ist ein sehr einfaches Protokoll, das Anwendungen die Möglichkeit bietet, direkten Zugriff auf die Datagramm-Services von IP zu nutzen. Das ermöglicht die Übermittlung von Daten mit einem Minimum an Protokollinformationen.UDP wird überall dort verwendet, wo entweder die Datenmenge so klein ist, dass es sich nicht lohnen würde, einen großen Header zu benutzen, weil der größer als die eigentlichen Daten wäre oder wo die Anwendungen selbst noch Überprüfungen des Paketinhaltes vornehmen.
Lohnenswert ist der Einsatz auch dort, wo reine Frage-Antwort Mechanismen auftreten. Dort ist kein verbindungsorientiertes Protokoll nötig, weil ja nach dem Senden einer Frage klar ist, wenn nach einer bestimmten Zeit keine Antwort eingeht, so wird das Paket verlorengegangen sein und die Frage muß nochmal gestellt werden.
Wichtig ist die Feststellung, dass das UDP-Protokoll keinen Datenstrom verarbeitet, sondern Datagramme direkt. Es stellt also keinerlei Mechanismen zur Verfügung um einen Datenstrom in Pakete aufzuteilen und wieder zusammenzubauen.
3.3.2 Transmission Control Protocol (TCP)
TCP ist im Gegensatz zu UDP ein verbindungsorientiertes Protokoll, das Datenströme verarbeitet, die von der Anwendungsschicht kommen. TCP garantiert die Versendung von Daten durch eingebaute Handshake-Mechanismen.TCP bietet einen verlässlichen Datentransfer durch die Verwendung eines Mechanismus, der Datenpakete (sogenannte Segmente) solange an einen Empfänger schickt, bis der eine Bestätigung des Empfangs rückmeldet. Dabei überprüft der Empfänger auch wieder eine Prüfsumme, erst wenn die richtig ist, schickt er das Signal des Empfangs.
TCP ist verbindungsorientiert, d.h., dass dieses Protokoll nicht einfach Daten losschickt wie UDP sondern zuerst einen Handshake durchführt, um sich mit dem Empfänger über dessen Bereitschaft zu synchronisieren. Das Prinzip ist einfach, eine TCP Übertragung beginnt immer erst mit der Nachfrage ob der Empfänger bereit ist (SYN). Der Empfänger sendet ein entsprechendes Signal (SYN.ACK) und erst nachdem dieses Signal erhalten wurde startet TCP die Übertragung der Segmente.
TCP ist streamorientiert, d.h., dass es seine Daten als kontinuierlichen Datenstrom ansieht. Durch die Verwendung von Sequenznummern kann das empfangende TCP die Segmente wieder in richtiger Reihenfolge zusammenbauen und sie wieder zu einem Datenstrom formieren.
3.4 Die Anwendungsschicht
Auf dieser Schicht laufen die Anwendungen, die übers Netz miteinander kommunizieren. In der Regel handelt es sich hier um Client/Server Paare, also um zwei verschiedene Programme, eins, das einen Dienst anbietet (server), ein anderes, das diesen Dienst in Anspruch nimmt (client).Damit diese Anwendungen sich nicht gegenseitig stören, hat jede Anwendung eine eigene Portnummer. Sie dient als Adresse, an die die Transportschicht einen Datenstrom oder eine UDP-Meldung weiterleitet.
Die einzelnen Anwendungen werden später noch einer genaueren Untersuchung unterzogen.
© 1999, 2000, 2001 by F. Kalhammer