Die VermittlungsschichtAllgemeinesAufgabe der Vermittlungsschicht ist es, Pakete von der Quelle zum Ziel zu befördern. Im Gegensatz zu den darunter liegenden Schichten tut sie das aber nicht nur in einem physikalischen Strang, sondern auch auch über mehrere Zwischenstationen, sogenannte Router, hinweg. Die Adressierung erfolgt in dieser Schicht über logische Adressen, wie z.B. IP-Adressen. Protokolle dieser Schicht sind zum Beispiel IPX (Internet Packet Exchange Protocol ) und das IP (Internet Protocol), das wir im folgenden näher behandeln werden. Das Internet ProtocolDas Internet Protocol ist das weltweit meistgenutzte Protokoll der Vermittlungsschicht. Es bildet die Grundlage des Internet und es ist das Standardprotokoll der meisten Netzwerkbetriebssysteme. Dabei ist IP an sich ein unzuverlässiges Protokoll. Es garantiert weder die Reihenfolge in der Daten ankommen, noch das sie alle auf dem selben Weg zu ihrem Ziel finden. Es hat keine Prüfsumme für den Textteil und es gibt keine eingebauten Möglichkeiten für die Flusskontrolle. Das Alles wird anderen Protokollschichten, zum Beispiel dem TCP, dass wir in nächsten Abschnitt behandeln überlassen. Es bietet jedoch auch einige nicht zu unterschätzende Vorteile wie:
Außerdem handelt es sich um eine offene Protokollfamilie die unabhängig von einem Hersteller entwickelt wurde. Der IP-HeaderEin IP-Datagramm besteht aus einem Header- und einem Textteil. Der Header besteht aus einem festen Teil von 20 Byte Größe, und einem optionalen Teil mit variabler Länge. Im Vergleich zu den eher langweiligen Ethernet-Headern, die wir im letzten Teil betrachtet haben, hat er wesentlich mehr Felder aufzuweisen, anhand derer wir einige Eigenschaften des IP erläutern können. ![]() IP-VersionDie ersten 4 Bit enthalten die Versionsnummer des Protokolls. Im Moment ist sie fast überall 4, aber in den nächsten Paar Jahren ist mit einer Umstellung auf IP-Version 6 zu rechnen, das eine etwas andere Behandlung als IPv4 erfordert. Anhand dieses Feldes sind die Router dann in der Lage festzustellen, mit welcher Sorte IP sie es gerade zu tun haben. Die Protokolldefinition schlägt vor die Versionsnummer vor der Analyse des restlichen Headers zu prüfen und, falls es sich um eine Version handelt, die das System nicht kennt, das Paket zu verwerfen. HeaderlaengeDie nächsten 4 Bit geben die Gesamtlänge (Length) des Headers in 32-Bit-Worten an. Der Minimalwert ist 5, was einem 20-Byte-Header ohne Optionen entspricht. Da man in 4 Bit maximal die Zahl 15 (7+4+2+1) unterbringen kann, liegt damit die Maximallänge eines IPv4-Headers bei 60-Byte. DienstartDas folgende Byte nennt sich Type of Service oder Service Type. An und für sich dient es dazu, dem Teilnetz und den Routern die Art und Qualität des Dienstes zu übermitteln. Dazu können verschiedene Kombinationen aus Zuverlässigkeit und Geschwindigkeit definiert werden. So wäre z.B. für Internet-Telephonie die Geschwindigkeit ziemlich wichtig, während die Zuverlässigkeit keinen so hohen Stellenwert hätte. Das Feld enthält von links nach rechts das Feld Precedence, mit eine Wert von 0 (normal) bis 7 (Netzsteuerungspaket), drei Flags mit je einem Bit nämlich
Theoretisch ließe sich mit dem Feld Precedence einem Router auch sagen, er solle alles mit niedrigerer Priorität liegen lassen, und zuerst die Pakete hoher Priorität weiterleiten. Mit den Flagbits könnte ein Router z.B. zwischen einer Satellitenverbindung mit hohem Durchsatz und geringer Zuverlässigkeit oder einer Telefonleitung mit niedrigem Durchsatz und hoher Zuverlässigkeit wählen. In der Praxis wird das Feld derzeit allerdings von fast allen IP-Routern völlig ignoriert. Die IP-Implementierungen verschiedener freier UNIX-Derivte wie Free BSD und Linux verfügen schon seit einiger Zeit über die Möglichkeit dieses Feld auszuwerten, und bei MS Windows 2000 wird diese Möglichkeit gerade als bahnbrechende Neuheit verkauft, so dass in Zukunft damit zu rechnen ist, dass dieses Feld an Bedeutung gewinnt. PaketlängeDie nächsten 16 Bit belegt das Feld Paket Length, das die Gesamtlänge des Datagramms angibt. Als vorzeichenlose 16-Bit-Ganzzahl hat es einen Höchstwert von 65535 (216-1) und schränkt damit die Maximalgröße von IPv4-Pakten auf 64-Kb ein. Die übliche Größe von IP-Paketen liegt bei 1500 Byte. FragmentierungNun folgt das Feld Identification, das ein Datagramm eindeutig identifiziert. IP hat hat die eingebaute Fähigkeit größere Pakete wenn nötig in kleinere Teile aufzubrechen und diese einzeln zu verschicken. Das kann notwendig werden, wenn eine Übermittlungsmedium einer tieferliegenden Schicht nur kleine Pakete befördern kann. Alle Fragmente eines Datagramms haben in diesem Feld den gleichen Wert, und auf diese Art kann der Empfänger feststellen, zu welchem Datagramm das Paket gehört. Wenn das erste Datagramm einer größeren Nachricht an einem Zielsystem ankommt, wird ein Timer gestartet. Sind nicht alle Teilpakete innerhalb einer vorgegebenen Zeit da, wird die gesamte Nachricht verworfen, weshalb unfragmentierte Nachrichten i.d.R. auch eine größere Chance haben anzukommen, als fragmentierte. Danach kommt ein unbenutztes Feld auf das zwei weitere Flag-Felder folgen:
Das nächste Feld heißt Fragment Offset. Wenn das MF-Bit gesetzt ist, gibt dieses Feld den Offset des aktuellen Datagramms im Gesamtdatagramm an. Da es sich um ein 13-Bit-Feld handelt, wird dieser Offset in 8-Byte-Einheiten angegeben. Damit sind maximal 8192 Fragmente pro Datagramm möglich. LebensdauerDas Feld TTL steht hier für Time to Live und gibt an wie viele Sekunden das Paket leben soll. Maximal sind 255 Sekunden zulässig, und der Zähler muss bei jeder Teilstrecke erniedrigt werden. Bei längerer Zwischenspeicherung muss er mehrmals erniedrigt werden. Erreicht der Zähler 0 gilt das Paket als unzustellbar und wird verworfen. Anschließend wird der Quellhost über diesen Umstand unterrichtet. Durch dieses Feld werden IP-Packete daran gehindert bis in alle Ewigkeit im Netz herumzuwandern. Obwohl der Feldinhalt in Sekunden angegeben wird, werden in der Praxis nur Teilsrecken gezählt. TransportprotokollWenn die Vermittlungsschicht ein komplettes Datagramm zusammen hat entscheidet sie was sie damit anfangen soll. Das Feld Transport Protocol sagt ihr, an welches Transport-Protokoll sie es weiterleiten soll, also z.B. ICMP, UDP, TCP etc. Die möglichen Werte für dieses Feld sind in der RFC1700 definiert. PrüfsummeAls nächstes kommt eine 16-Bit-Prüfsumme über alle Header-Felder. Sie addiert einfach alle 16 Bit-Wörter des Headers und bildet daraus das Komplement. Diese Prüfsumme muss auf jeder Teilstrecke neu berechnet werden, weil sich ein Feld, nmlich TTL aufjeder Wegstrecke ändert. AdressenDie folgenden beiden Felder Sending Adress und Destination Adress geben IP-Adresse von Sender und Empfänger an. Adressen von IPv4 sind immer 4 Byte lang. OptionenDas Feld Options enthält Optionen und ist außerdem noch optional. Die verschiedenen Optionen folgen nacheinander im Optionsfeld. Jede Option wird durch ein Byte kontrolliert, das wie folgt aufgeteilt ist:
Gültige Optionen sind:
|