Segmentierung und Reassemblierung
In dieser interaktiven Lerneinheit verstehst du, wie TCP große Datenmengen in handhabbare Segmente aufteilt und diese am Ziel wieder zusammensetzt. Du lernst die technischen Grundlagen der Segmentierung kennen, einschließlich der Maximum Segment Size (MSS) und der Sequenznummern zur korrekten Reassemblierung. Diese Kenntnisse helfen dir bei der Analyse von Netzwerkproblemen und der Optimierung von Datenübertragungen in der Praxis.
Einführung
Stell dir vor, du überträgst eine große Datei über das Internet. Eine 4K-Videodatei mit mehreren Gigabyte Größe soll von deinem Computer zu einem Server am anderen Ende der Welt geschickt werden. Wie schafft es TCP, diese riesige Datenmenge zuverlässig durch das komplexe Netzwerk zu transportieren?

Die Antwort liegt in einem cleveren Konzept: Segmentierung. Statt die gesamte Datei als einen großen Block zu verschicken, wird sie in handliche Segmente aufgeteilt – ähnlich wie ein Puzzle, das zerlegt und später wieder zusammengesetzt wird.
Diese Segmentierung ist entscheidend für die Zuverlässigkeit von TCP-Verbindungen.
In dieser Lerneinheit erfährst du, wie TCP Datenströme in Segmente zerlegt, diese mit wichtigen Kontrollinformationen versieht und beim Empfänger wieder korrekt zusammensetzt – eine Schlüsseltechnologie, die moderne Netzwerkkommunikation erst möglich macht.
Lernziele
Nach dieser Lerneinheit kannst du:
-
erklären, wie TCP einen kontinuierlichen Datenstrom in übertragbare Segmente aufteilt und warum diese Segmentierung notwendig ist
-
die Struktur eines TCP-Segments beschreiben und die Bedeutung wichtiger Header-Felder wie Sequenznummern und Flags erläutern
-
nachvollziehen, wie der Empfänger die einzelnen Segmente korrekt zusammensetzt, auch wenn sie in unterschiedlicher Reihenfolge ankommen
-
die Maximum Segment Size (MSS) definieren und ihre Bedeutung für die effiziente Datenübertragung begründen
-
verstehen, wie TCP durch Segmentierung und Reassemblierung eine zuverlässige Ende-zu-Ende-Kommunikation gewährleistet
Überleitung
Um zu verstehen, wie TCP große Datenmengen zuverlässig überträgt, müssen wir zunächst einen genaueren Blick darauf werfen, wie die Segmentierung funktioniert.
Wie teilt TCP die Daten auf? Welche Informationen fügt es jedem Segment hinzu? Und wie stellt es sicher, dass am Ende alle Teile wieder richtig zusammenpassen?
Lass uns Schritt für Schritt erkunden, wie TCP aus einem kontinuierlichen Datenstrom übertragbare Segmente macht – und dabei eine der wichtigsten Grundlagen für die moderne Internetkommunikation schafft.
Grundlagen der TCP-Segmentierung
TCP (Transmission Control Protocol) ist ein verbindungsorientiertes Protokoll, das für die zuverlässige Übertragung von Daten zwischen zwei Endpunkten sorgt. Eine seiner wichtigsten Aufgaben ist die Segmentierung des Datenstroms.
Wenn eine Anwendung Daten über TCP sendet, übergibt sie diese als kontinuierlichen Datenstrom. TCP teilt diesen Strom in kleinere, handhabbare Einheiten auf – die sogenannten TCP-Segmente. Jedes Segment besteht aus zwei Hauptteilen:
- Einem Header mit Steuerinformationen
- Einem Datenbereich (Payload) mit den eigentlichen Nutzdaten
Der TCP-Header im Detail
Der TCP-Header ist ein zentraler Bestandteil jedes TCP-Segments und enthält wichtige Steuerinformationen. Er ist mindestens 20 Bytes groß und kann durch das Optionsfeld auf bis zu 60 Bytes erweitert werden.

Schauen wir und die einzelnen Felder genauer an.
Der TCP-Header im Detail
Source/Destination Port (je 2 Byte): Identifizieren Sender- und Empfängeranwendung.

Der TCP-Header im Detail
Sequence Number (4 Byte): Gibt die Position des ersten Bytes im Datenstrom an.

Der TCP-Header im Detail
Acknowledgement Number (4 Byte): Gibt das nächste erwartete Byte an, wenn das ACK-Flag gesetzt ist.

Der TCP-Header im Detail
Data Offset (4 Bit): Gibt die Länge des Headers in 32-Bit-Blöcken (also 4-Byte-Einheiten) an.
Reserved (4 Bit): Muss auf 0 gesetzt sein und ist für zukünftige Erweiterungen reserviert.
Flags (6 Bit): Enthält die Steuerbits URG, ACK, PSH, RST, SYN und FIN. Zwei weitere Bits sind reserviert.
Window (2 Byte): Gibt die Größe des Empfangsfensters an und steuert den Datenfluss (Flow Control).

Der TCP-Header im Detail
Checksum (2 Byte): Prüft die Integrität des gesamten TCP-Headers und der Daten.
Urgent Pointer (2 Byte): Gibt, bei gesetztem URG-Flag, die Position nach dem letzten dringenden Byte im Segment an.

Der TCP-Header im Detail
Options: Optionales Feld zur Erweiterung des Headers, z. B. für MSS (Maximum Segment Size) oder Window Scaling.

Die Nutzlast (Payload)
Die Nutzlast eines TCP-Segments enthält die eigentlichen Daten, die übertragen werden sollen. Die Größe der Nutzlast hängt von verschiedenen Faktoren ab, einschließlich der Maximum Segment Size (MSS), die beim Verbindungsaufbau ausgehandelt wird, und der Größe des TCP-Headers.

Die Länge der Nutzlast wird nicht direkt im TCP-Header spezifiziert, kann aber berechnet werden, indem die Größe des TCP-Headers (angegeben durch das Data Offset-Feld) von der Gesamtgröße des IP-Pakets (erhalten aus dem IP-Header) abgezogen wird.
Grundprinzip der Segmentierung
Die Segmentierung ist aus mehreren Gründen notwendig:
- Ressourceneffizienz: Netzwerkgeräte haben begrenzte Pufferkapazitäten. Durch das Aufteilen großer Datenmengen in kleinere Segmente können diese effizient zwischengespeichert und verarbeitet werden. Zudem wird eine gezielte Neuübertragung einzelner Segmente möglich, ohne den gesamten Datenstrom erneut senden zu müssen.
- Übertragungsleistung: Kleinere Segmente erreichen Empfänger schneller und erlauben dem Sender, Übertragungsfehler zeitnah zu erkennen und nur betroffene Teile erneut zu senden.
- Fairness (im Zusammenspiel mit Staukontrolle): In Verbindung mit TCP-Staukontrollmechanismen trägt Segmentierung zu einer gerechteren Nutzung der Bandbreite bei.
Wie funktioniert die Segmentierung?
Wir wissen: Jedes TCP-Segment besteht aus:
- Header: Enthält Steuerinformationen wie Sequenznummer (
Sequence Number), Acknowledgement Number (ACK), Flags, Fenstergröße (Window Size) und Optionen. - Datenbereich (Payload): Enthält den Nutzdatenteil.
Die Segmentgröße (Maximum Segment Size, MSS) richtet sich nach der Maximum Transmission Unit (MTU) des Übertragungswegs, um IP-Fragmentierung zu vermeiden.
Sequenznummern
Jedes Segment erhält eine Sequenznummer, die seine Position im Datenstrom angibt. So kann der Empfänger die Segmente auch bei Empfang in unterschiedlicher Reihenfolge korrekt zusammensetzen.
Bestätigungsverfahren
Der Empfänger sendet eine Acknowledgement Number (ACK) zurück, die angibt, bis zu welchem Byte alle Daten fehlerfrei empfangen wurden. Verlorene oder beschädigte Segmente werden so gezielt erkannt und erneut angefordert.
Beispiele für Anwendungen
- Webseitenaufruf: Der Server liefert HTML-, CSS- und JavaScript-Dateien in TCP-Segmenten; Segmentierung und ACKs sorgen für einen schnellen und zuverlässigen Aufruf.
- Dateiübertragung: Große Dateien (z. B. Software-Downloads) werden in Segmente aufgeteilt, einzeln übertragen und durch den Empfänger in der ursprünglichen Reihenfolge wieder zusammengesetzt.
Reassemblierung beim Empfänger
Die Zusammensetzung der TCP-Segmente beim Empfänger ist ein komplexer Prozess, der mehrere wichtige Mechanismen umfasst. Der Empfänger muss nicht nur die Segmente in der richtigen Reihenfolge zusammensetzen, sondern auch mit verschiedenen Herausforderungen umgehen:
Empfangspuffer
- Speichert eingehende Segmente temporär
- Ermöglicht Umordnung außer der Reihe empfangener Segmente
- Größe wird beim Verbindungsaufbau ausgehandelt
Sequenznummernverwaltung
- Verfolgt die erwartete nächste Sequenznummer
- Erkennt Lücken in der Sequenz
- Identifiziert doppelt empfangene Segmente
Der Reassemblierungsprozess im Detail
1. Empfang und Überprüfung
- TCP prüft die Prüfsumme jedes eingehenden Segments
- Beschädigte Segmente werden verworfen
- Bestätigungen (ACKs) werden nur für korrekt empfangene Segmente gesendet
2. Sequenzüberprüfung
- Vergleich der Sequenznummer mit der erwarteten Nummer
- Segmente mit zu hoher Sequenznummer werden gepuffert
- Segmente mit zu niedriger Nummer sind Duplikate und werden verworfen
3. Lückenerkennung
- TCP erkennt fehlende Segmente anhand der Sequenznummern
- Bei Lücken werden spezielle ACKs (Duplicate ACKs) gesendet
- Nach drei Duplicate ACKs wird Fast Retransmit ausgelöst
Umgang mit Netzwerkproblemen
Out-of-Order-Delivery
Wenn Segmente in falscher Reihenfolge ankommen:
- Segmente werden im Empfangspuffer zwischengespeichert
- TCP wartet auf fehlende Segmente
- Erst wenn die Lücke geschlossen ist, werden Daten an die Anwendung übergeben
Segmentverlust
Bei verlorenen Segmenten:
- Empfänger bemerkt Lücke in Sequenznummern
- Sendet Duplicate ACKs für das letzte korrekt empfangene Segment
- Sender erkennt Problem und sendet fehlendes Segment erneut
Überlastungskontrolle
- TCP passt Senderate dynamisch an
- Verhindert Überlastung des Netzwerks
- Reduziert Wahrscheinlichkeit von Segmentverlusten
Praktisches Beispiel
Angenommen, ein Datenstrom wird in fünf Segmente aufgeteilt: 1, 2, 3, 4 und 5. Segment 3 geht verloren. Der Empfänger erhält die Segmente in der Reihenfolge 1, 2, 4 und 5. Er sendet ACKs für Segment 2, da dies das letzte korrekt empfangene Segment in der richtigen Reihenfolge ist. Nach erneutem Empfang von Segment 3 sendet er ein ACK für Segment 5, um zu signalisieren, dass nun der gesamte Datenblock korrekt empfangen wurde.
Das Reassemblieren der Segmente beim Empfänger ist ein zentraler Bestandteil, der die Zuverlässigkeit und die geordnete Übertragung von Daten über TCP sicherstellt. Es ermöglicht, dass der Datenstrom trotz variabler Netzbedingungen korrekt und vollständig beim Empfänger ankommt.
Maximum Segment Size (MSS)
Die Maximum Segment Size (MSS) ist ein entscheidender Parameter in der TCP-Kommunikation. Sie definiert die maximale Menge an Nutzdaten, die ein einzelnes TCP-Segment tragen kann, ohne die Größe des TCP-Headers zu berücksichtigen. Die MSS hängt von der Maximum Transmission Unit (MTU) des Netzwerks ab und ist entscheidend, um Fragmentierung auf der IP-Ebene zu vermeiden.
Definition und Bedeutung
Die MSS bestimmt die maximale Größe der Nutzdaten in einem TCP-Segment:
- Wird beim Verbindungsaufbau ausgehandelt
- Typischerweise 1460 Bytes bei Ethernet
- Berücksichtigt die MTU des Netzwerks
Berechnung der MSS
Die Berechnung der MSS hängt von der MTU (Maximum Transmission Unit) des Netzwerks ab, durch das das TCP-Segment letztendlich transportiert wird.
Formel: MSS = MTU - TCP Header Size - IP Header Size
Für ein Standard-Ethernet-Netzwerk:
- Standard-MTU: 1500 Bytes
- Standard-IP-Header: 20 Bytes (ohne Optionen)
- Standard-TCP-Header: 20 Bytes (ohne Optionen)
Also: MSS = 1500 - 20 - 20 = 1460 Bytes
Zusammenfassung und Ausblick
Zusammenfassung
In dieser Lerneinheit hast du die grundlegenden Mechanismen der TCP-Segmentierung und Reassemblierung kennengelernt:
- TCP teilt große Datenströme in handliche Segmente auf
- Jedes Segment erhält einen Header mit wichtigen Steuerinformationen
- Sequenznummern ermöglichen die korrekte Zusammensetzung
- Der Empfänger nutzt verschiedene Mechanismen zur zuverlässigen Reassemblierung
- Die Maximum Segment Size (MSS) optimiert die Übertragungseffizienz
Praktische Bedeutung
Dieses Wissen ist fundamental für das Verständnis moderner Netzwerkkommunikation. In der Praxis begegnen dir diese Konzepte bei:
- der Netzwerk-Fehlersuche
- der Optimierung von Serveranwendungen
- der Konfiguration von Netzwerkgeräten
- der Entwicklung von Netzwerkanwendungen
Ausblick
In den nächsten Lerneinheiten werden wir tiefer in die TCP-Funktionsweise eintauchen:
- Wie TCP Überlastungen erkennt und verhindert
- Wie das Sliding Window Protocol die Übertragung optimiert
- Wie TCP mit Verbindungsaufbau und -abbau umgeht
- Welche Rolle TCP bei modernen Protokollen wie QUIC spielt
Diese Konzepte bauen auf dem Verständnis der Segmentierung auf und zeigen, wie TCP seine Zuverlässigkeit und Effizienz erreicht.