Systemverwaltungshandbuch: IP Services

Datenkapselung und der TCP/IP-Protokollstapel

Das Paket ist die grundlegende Informationseinheit, die über ein Netzwerk übertragen wird. Ein allgemeines Paket besteht aus einem Header mit den Adressen des sendenden und empfangenden Systems sowie einem Body oder Nutzlast mit den zu übertragenden Daten. Während das Paket den TCP/IP-Protokollstapel durchläuft, werden durch die Protokolle auf den einzelnen Schichten entweder Felder zum Basis-Header hinzugefügt oder entfernt. Wenn ein Protokoll auf dem sendenden System Daten zum Paket-Header hinzufügt, wird dies als Datenkapselung bezeichnet. Jede Schicht vergibt einen anderen Begriff für das geänderte Paket. Dies wird in der folgenden Abbildung gezeigt.

Abbildung 1–1 So durchläuft ein Paket durch den TCP/IP-Stapel

Das Diagramm zeigt, wie ein Paket vom sendenden Host zum empfangenden Host den TCP/IP-Stapel durchläuft.

In diesem Abschnitt wird der Lebenszyklus eines Pakets beschrieben. Der Lebenszyklus beginnt, wenn Sie einen Befehl eingeben oder eine Nachricht senden. Der Lebenszyklus endet, wenn die entsprechende Anwendung auf dem empfangenden System das Paket empfängt.

Anwendungsschicht: Beginn der Datenkommunikation

Der Lebenszyklus eines Datenpakets beginnt, wenn ein Benutzer auf einem System eine Nachricht sendet oder einen Befehl eingibt, der auf ein Remote-System zugreifen muss. Das Anwendungsprotokoll formatiert das Paket so, dass das entsprechende Transportschichtprotokoll (TCP oder UDP) das Paket verarbeiten kann.

Angenommen, der Benutzer gibt einen rlogin-Befehl ein, um sich bei einem Remote-System anzumelden. Dies wird in Abbildung 1–1 gezeigt. Der rlogin-Befehl verwendet das TCP-Transportschichtprotokoll. TCP erwartet, Daten in Form eines Bytestroms zu empfangen, der die Informationen des Befehls enthält. Aus diesem Grund sendet rlogin diese Daten als einen TCP-Datenstrom.

Transportschicht: Beginn der Datenkapselung

Wenn die Daten an der Transportschicht eintreffen, beginnen die Protokolle auf dieser Schicht die Datenkapselung. Die Transportschicht kapselt die Anwendungsdaten in Transportprotokoll-Dateneinheiten.

Dann erzeugt das Transportschichtprotokoll einen virtuellen Datenfluss zwischen der sendenden und der empfangenden Anwendung, die durch die Transport-Portnummer unterschieden werden. Die Portnummer gibt einen Port an, einen dedizierten Speicherort für den Empfang oder das Senden von Daten. Darüber hinaus bietet die Transportprotokollschicht weitere Services, z. B. zuverlässige Datenzustellung in vorgegebener Reihenfolge. Das Endergebnis hängt davon ab, ob die Informationen von TCP, SCTP oder UDP verarbeitet werden.

TCP-Segmentierung

TCP wird häufig als „verbindungsorientiertes“ Protokoll bezeichnet, da es die erfolgreiche Datenzustellung beim empfangenden Host sicherstellt. Abbildung 1–1 zeigt, wie das TCP-Protokoll den Datenstrom vom rlogin-Befehl empfängt. Dann teilt TCP die von der Anwendungsschicht empfangenen Daten in Segmente auf und fügt jedem Segment einen Header hinzu.

Die Segment-Header enthalten die Sende- und Empfangs-Ports, Informationen zur Reihenfolge der Segmente sowie ein Datenfeld, das als checksum (Prüfsumme) bezeichnet wird. Die TCP-Protokolle auf beiden Host stellen anhand der Prüfsumme fest, ob die Datenübertragung ohne Fehler erfolgt ist.

Herstellen einer TCP-Verbindung

TCP prüft anhand von Segmenten, ob das empfangende System zum Empfang von Daten bereit ist. Wenn der sendende Host eine Verbindung herstellen will, sendet das TCP-Protokoll ein Segment mit der Bezeichnung SYN an das TCP-Protokoll auf dem empfangenden Host. Dieser sendet über das TCP-Protokoll ein Segment mit der Bezeichnung ACK zurück, um den erfolgreichen Empfang des Segments zu bestätigen. Das sendende TCP sendet ein weiteres ACK-Segment und beginnt dann mit dem Senden der Daten. Dieser Austausch von Steuerungsinformationen wird als Dreifach-Handshake bezeichnet.

UDP-Pakete

UDP ist ein „verbindungsloses“ Protokoll. Im Gegensatz zu TCP prüft UDP die am empfangenden Host eintreffenden Daten nicht. Stattdessen formatiert UDP die von der Anwendungsschicht empfangene Nachricht in UDP-Pakete. UDP fügt einen Header an jedes Paket an. Der Header enthält die sendenden und empfangenden Ports, ein Feld mit der Paketlänge sowie eine Prüfsumme.

Der sendende UDP-Prozessor versucht, das Paket an den UDP-Peer-Prozess auf dem empfangenden Host zu senden. Die Anwendungsschicht stellt fest, ob der empfangende UDP-Prozess den Empfang des Pakets bestätigt. UDP benötigt keine Benachrichtigung über den Empfang, und verwendet keinen Dreifach-Handshake.

Internetschicht: Vorbereitung der Pakete für die Zustellung

Die Transportprotokolle TCP, UDP und SCTP übergeben ihre Segmente und Pakete an die Internetschicht, auf der das IP-Protokoll die Segmente und Pakete weiter verarbeitet. Das IP-Protokoll bereitet die Segmente und Pakete für die Zustellung vor, indem es sie zu Einheiten zusammenfasst, die als IP-Datagramme bezeichnet werden. Dann legt das IP-Protokoll die IP-Adressen für die Datagramme fest, so dass sie korrekt an den empfangenden Host zugestellt werden können.

IP-Datagramme

Das IP-Protokoll hängt neben den Informationen, die vom TCP- oder UDP-Protokoll hinzugefügt wurden, einen IP-Header an das Segment bzw. den Header des Pakets an. Die Informationen im IP-Header umfassen die IP-Adressen des sendenden und des empfangenden Hosts, die Datagrammlänge sowie die Reihenfolge im Datagramm. Diese Informationen sind erforderlich, wenn das Datagramm die zulässige Bytegröße für Netzwerkpakete überschreitet und fragmentiert werden muss.

Sicherungsschicht: Durchführen des Framing

Die Protokolle der Sicherungsschicht, z. B. PPP, formatieren das IP-Datagramm als einen Frame. Diese Protokolle hängen einen dritten Header und einen Footer an den „Frame“ des Datagramms an. Der Frame-Header enthält ein Feld cyclic redundancy check (CRC) für die zyklische Blockprüfung, mit der auf Fehler geprüft wird, die während der Übertragung des Frames über die Netzwerkmedien aufgetreten sind. Dann übergibt die Sicherungsschicht den Frame an die Bitübertragungsschicht.

Bitübertragungsschicht: Senden und Empfangen von Frames

Die Bitübertragungsschicht auf dem sendenden Host empfängt die Frames und wandelt die IP-Adressen in für die Netzwerkmedien geeignete Hardware-Adressen um. Dann sendet die Bitübertragungsschicht den Frame über das Netzwerkmedium.

So verarbeitet der empfangende Host das Paket

Wenn das Paket auf dem empfangenden Host eintrifft, durchläuft es den TCP/IP-Protokollstapel in umgekehrter Sende-Reihenfolge. Dies wird in Abbildung 1–1 gezeigt. Darüber hinaus streift jedes Protokoll auf dem empfangenden Host die Header-Informationen ab, die von dessen Peer auf dem sendenden Host hinzugefügt wurden. Dabei läuft der folgende Prozess ab:

  1. Die Bitübertragungsschicht empfängt das Paket im Frame-Format. Sie berechnet das CRC des Pakets und sendet den Frame dann an die Sicherungsschicht.

  2. Die Sicherungsschicht prüft, ob das CRC für den Frame korrekt ist und streift dann den Frame-Header und das CRC ab. Schließlich sendet das Protokoll der Sicherungsschicht den Frame an die Sitzungsschicht.

  3. Die Sitzungsschicht liest die Informationen im Header, um die Übertragung zu identifizieren. Anschließend stellt die Sitzungsschicht fest, ob es sich bei dem Paket um ein Fragment handelt. Wenn die Übertragung fragmentiert wurde, setzt das IP-Protokoll die Fragmente zum ursprünglichen Datagramm zusammen. Dann streift das IP-Protokoll den IP-Header ab und übergibt das Datagramm an die Protokolle der Transportschicht.

  4. Die Protokolle der Transportschicht (TCP, SCTP und UDP) lesen den Header ein, um festzustellen, welches Protokoll der Anwendungsschicht die Daten empfangen muss. Dann streift TCP, SCTP oder UDP den entsprechenden Header ab. TCP, SCTP oder UDP sendete die Nachricht oder den Datenstrom an die empfangende Anwendung.

  5. Die Anwendungsschicht empfängt die Nachricht. Abschließend führt die Anwendungsschicht den Vorgang aus, den der sendende Host angefordert hat.