1. Ein Paket auf Reisen

Paket_1.jpg

Wie kommt ein IP-Paket nach Boston?

Im folgenden soll erläutert werden, wie ein von einer Applikation verschicktes Paket bis nach Amerika kommt. Als Beispiel möchte ich das ping Kommando nehmen, das ein spezielles ICMP Paket sendet, das der Empfänger einfach zurückschickt. Im einzelnen spielt sich nach dem Aufruf von ping 'prep.ai.mit.edu' etwa folgendes ab:

Schritt 1 - Namen auflösen

Das ping Programm erkennt, daß ein Hostname und keine IP-Adresse angegeben wurde. Also muß der Hostname zu einer IP-Adresse aufgelöst werden. Hierzu wird der lokale Nameserver angerufen. Der Nameserver kennt aber nur die lokale Domain (alle Rechner, deren Name auf .tu-bs.de enden), sodaß die Suche nach der IP-Adresse von prep.ai.mit.edu an den nächsthöheren Nameserver in der Hierarchie gerichtet wird. Der Server deins.informatik.uni-dortmund.de, zuständig für die .de Domain, verweist nun auf einen Nameserver, der für die .edu Domain zuständig ist. Dieser Nameserver ruft wiederum speziellere Nameserver an bis letztlich die IP-Adresse 18.71.0.38 feststeht.

Da die Nameserver natürlich selbst IP Pakete austauschen, muß der ganze hier beschriebene Mechanismus für die einzelnen Nachrichten jeweils wiederholt werden. Glücklicherweise können sich die Nameserver aber gefundene Einträge in einem Cache halten, so daß dieser Vorgang nicht jedesmal erforderlich ist.

Schritt 2 - Erzeugung eines IP Pakets

Nun bastelt das ping Programm ein ICMP Paket, d.h. ein IP Paket vom Typ ICMP zusammen, das an 18.71.0.38 verschickt werden soll. Dieses Paket übergibt das Programm nun an das IP Modul im Unix Kern.

Schritt 3 - Routing

Da sich jede IP-Adresse in eine Netzwerkadresse und eine Hostadresse in diesem Netzwerk zerlegen läßt, kann das IP-Modul feststellen, daß prep.ai.mit.edu nicht auf dem lokalen IP-Netzwerk vorhanden sein kann. Deshalb wird jetzt die Routing-Tabelle betrachtet und nach einem Gateway gesucht, das 'näher' an prep.ai.mit.edu ist. Vor Ort findet das IP-Modul heraus, daß alle Pakete, die nicht für das lokale Netz bestimmt sind, zum Rechner mit der IP-Adresse 134.169.34.12 (ra.ibr.cs.tu-bs.de) geschickt werden sollen.

Schritt 4 - IP-Adresse in Subnetzwerk-Adresse umwandeln

Um das IP-Paket über das Ethernet an den ra zu senden, muß nun zur IP-Adresse die zugehörige Ethernet-Adresse gefunden werden. Dazu benutzt der Kern das ARP-Protokoll. Dabei broadcastet er ein ARP Paket an alle Rechner am Ethernet und fragt nach der Ethernet-Adresse des Rechners mit der IP-Adresse 134.169.34.12. Da zumindest der ra seine Ethernet-Adresse kennt, wird wenigstens ein Host die Frage mit 8:0:20:f:29:7f beantworten.

Schritt 5 - Zustellung des IP-Pakets über das Subnetzwerk

Nun wird das IP-Paket in einen Ethernet-Frame verpackt und an die Ethernetadresse 8:0:20:f:29:7f (ra) geschickt. Dort entfernt man wieder den Ethernet-Frame und das IP-Modul vom ra kann loslegen. Es stellt als erstes fest, daß er nicht der Empfänger ist und wiederholt die Schritte 3, 4 und 5.

Die Schritte 3, 4 und 5 wiederholen sich solange, bis das Paket in prep.ai.mit.edu angekommen ist. (Ich nehme mal an, daß alle beteiligten Hosts funktionieren und alle Routen stimmen.) In prep.ai.mit.edu angekommen wird der Kopf des IP-Pakets analysiert und der Inhalt als ICMP Paket identifiziert. Nun werden die Adressen von Sender und Empfänger vertauscht und das ganze geht zurück zu uns.