SelfLinux Linux im Netzwerk TCP/IP Abschnitt 4 | SelfLinux-0.13.0

| TCP/IP | Autor Formatierung GPL

#### 5 Protokolle im Network Layer

Diese Schicht ist fast ausschließlich dem Internet Protocol vorbehalten, zur Kontrolle des Datenflusses gibt es dann noch ein Internet Control Message Protocol.

#### 5.1 IP - Das Internet Protocol

IP benötigt irgendein Link Layer Protokoll, zum Beispiel Ethernet. Das IP erweitert die Paketvermittlung. Ein IP-Paket wird in gegebenenfalls mehrere Teile aufgeteilt, von denen jedes klein genug ist, um über das Link Layer Protokoll übertragen werden zu können. Diese Teile nennt man Fragmente.

IP selbst fügt den Daten wiederum einen Header hinzu, diesmal einen IP-Header. Dieser enthält unter anderem Absender- und Empfängeradresse; jetzt sind dies jedoch IP Adressen. Er enthält auch etliche weitere Informationen.

IP fügt noch eine weitere wichtige Eigenschaft hinzu: es kann über verschiedene "Zwischenstationen" Pakete ausliefern. Als Beispiel denke man sich einen Host A, der mit einem Host B verbunden ist, und einen Host C, der mit Host B verbunden ist. Über Ethernet können A und C nicht kommunizieren. Über IP funktioniert das, da IP in diesem Fall ein an C adressiertes IP Paket in ein oder mehrere an B adressierte Ethernetframes einpackt.

Die Daten sind hier also doppelt verpackt: Um die Daten herrum sind die Zusätze des IP-Frames (also beispielsweise der IP-Header mit den IP-Adressen), und um das IP-Frame herum sind die Zusätze des Ethernet-Pakets (also beispielsweise die Ethernet-MAC-Adressen).

Diese Frames werden dann von B empfangen. Die IP Implementation von B wirft die Zusätze des Ethernetframes weg, nach dem diese verarbeitet wurden. Übrig bleibt das IP-Frame (und natürlich die Daten). Nun erkennt B an der IP Adresse, daß das Paket an C gesendet werden soll, und packt es daher wieder in ein Ethernetframe, dass diesmal jedoch an C adressiert ist (B kann ja C erreichen) und sendet es. Diesen Vorgang bezeichnet man als Routing.

Durch das Zusammenspiel von Fragmentierung und Routing kann ein IP Paket in Form von mehreren Fragmenten beim Empfänger eventuell in falscher Reihenfolge ankommen. Das IP setzt diese Fragmente wieder ordentlich zusammen, und es entsteht wieder das IP Paket.

Dabei arbeitet das Protokoll verbindungslos und ungesichert, d.h. vor dem Versenden der Pakete wird keine explizite Verbindung zum Empfänger hergestellt, sondern diese werden einfach abgeschickt. Es existieren auf IP-Ebene keine Sicherungsmechanismen, die sicher stellen, dass die Daten auch korrekt beim Empfänger ankommen, lediglich der Header ist prüfsummengeschützt, um Übertragungsfehler zu erkennen. Die Daten selbst sind jedoch nicht prüfsummengeschützt. Dies wird gegebenfalls von höheren Schichten erledigt.

Die weiter vorn beschriebene Adressierung in TCP/IP-Netzen wird ebenfalls durch das IP gehandhabt.

#### 5.2 ICMP - Internet Control Message Protocol

Das ICMP dient zur Übermittlung von Fehler- und Statusinformationen. ICMP wird auch von IP selbst verwendet, um beispielsweise Fehler zu melden. ICMP ist daher zwingend in IP vorhanden; funktional gesehen ist es Teil von IP, technisch setzt es jedoch auf IP auf. ICMP kann aber auch direkt von Applikationen verwendet werden.

ICMP Pakete werden verwendet, wenn beispielsweise der Zielrechner oder das Zielnetzwerk nicht erreichbar ist. In diesem Fall gibt ein TCP/IP Router beispielsweise ein 'host unreachable' bzw. 'network unreachable' Paket zurück. ICMP ist im Network Layer angesiedelt, ist aber eigentlich kein wirklich eigenständiges Protokoll, da die Übermittlung von ICMP-Nachrichten durch IP-Pakete erfolgt und dazu dient, die Übertragung von den eigentlichen Daten zu steuert. ICMP ist damit kein Datenfluß sondern ein Kontrollfluß, welches den Datenfluß steuert.

Eine recht bekannte Anwendung von ICMP ist das Programm ping, mit dem man die Erreichbarkeit eines anderen Rechners prüfen kann. Dazu wird ein ICMP echo request an den Zielrechner geschickt, dieser sendet ein ICMP echo reply zurück, wenn er denn verfügbar ist.

Hier wollen wir auch mal eine Theorie-Pause machen und ein bißchen pingen. Ping wird aufgerufen an der Shell mit dem Befehl ping und danach der anzupingenden Adresse. Abgebrochen wird die Pingerei mit `STRG+``C`.

user@linux $ ping 192.168.102.1
PING 192.168.102.1 (192.168.102.1) from 192.168.102.1 : 56(84) bytes of data.
64 bytes from 192.168.102.1: icmp_seq=0 ttl=255 time=0.4 ms
64 bytes from 192.168.102.1: icmp_seq=1 ttl=255 time=0.2 ms
64 bytes from 192.168.102.1: icmp_seq=2 ttl=255 time=0.2 ms
--- 192.168.102.1 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 0.2/0.2/0.4 ms

Ist ein Rechner nicht erreichbar erscheinen keine Antwortmeldungen.

ICMP wird meistens von IP für den Benutzer unsichtbar verwendet, zum Beispiel um herauszubekommen, wie groß ein Paket sein kann, welches von Link Protokoll übertragen werden kann, oder um Fehler zu melden.