Die interne Struktur des TCP-Segments
Im Gegensatz zu UDP braucht TCP als streamorientiertes Protokoll immer
Informationen, an welcher Stelle des Datenstroms das Segment eingefügt
werden soll. Außerdem ist Information über die Größe des Empfängerbuffers
nötig, um zu verhindern, daß es zu Überläufen kommt. Es ist also ein
entsprechend komplexer Header nötig:
- Absender Portnummer
- bezeichnet die Portnummer (/etc/services) des
Anwenderschichtprotokolls, von dem der Datenstrom abgeschickt wurde.
- Empfänger Portnummer
- bezeichnet die Portnummer des Empfängerprotokolls auf der
Anwendungsschicht.
- Sequenznummer
- Gibt die Position im Datenstrom an, an der dieses Segment eingefügt
werden soll.
- Bestätigungsnummer
- Dient zur Bestätigung des Empfangs eines Segments. Dieses Feld enthält
immer die Nummer, die im nächsten Segment als Sequenznummer stehen soll.
- Daten-Offset
- Gibt die Größe des Headers in 32 Bit Worten an. Ohne Optionen sind es 5.
Damit kann genau bestimmt weden, wo der Datenbereich des Segments beginnt.
- Flags
- Verschiedene Flags zur Kommunikationssteuerung
- Fenster
- Mit diesem Wert wird die Größe des Buffers angezeigt, der von einem
Endknoten für diese Verbindung reserviert wurde. Der sendende Knoten darf
keinesfalls mehr Daten als die angegebene Puffergröße senden, ohne auf den
Eingang einer Bestätigung zu warten.
- Prüfsumme
- Eine Prüfsumme über das gesamte Segment (Daten und Header)
- Dringlichkeitszeiger
- Wird bei besonders dringend zu verarbeitenden Paketen gesetzt. Wenn
gesetzt enthält dieses Feld als Wert die Endadresse des Datenfeldes, das als
dringlich gilt.
- Optionen
- Verschiedene Optionen zur Kommunikation wie etwa die maximale
Segmentgröße
- Füllzeichen
- Zum Auffüllen der Optionszeile auf 32 Bit