Die einzelnen Komponenten bzw. Felder der Kopfzeile des TCP-Protokolls haben dabei folgende Bedeutung:
Quell-Port (16 Bit): Gibt die Portnummer des Senders an.
Ziel-Port (16 Bit): Gibt die Portnummer des Empfängers an.
Sequenznummer (32 Bit): Die Sequenznummer gibt wahlweise das erste Byte der angehängten Nutzdaten an oder wird im Rahmen des Verbindungsaufbaus bzw. -abbaus mitgeschickt. Sie dient gleichermaßen der Validierung und Sortierung (im Anschluss an die Übertragung) der Segmente.
Bestätigungsnummer (32 Bit): In diesem Feld wird die Bestätigungsnummer angegeben, die der Absender als nächstes erwartet. Voraussetzung für die Gültigkeit ist ein gesetztes ACK-Flag (im Feld „Flags“).
Offset (4 Bit): Das Feld „Offset“ weist die Länge des TCP-Headers in 32-Bit-Blöcken aus, um den Startpunkt der Nutzdaten hervorzuheben. Dieser ist aufgrund des variablen Optionsfelds von Segment zu Segment verschieden.
Reserviert (6 Bit): RFC 793 entsprechend für künftige Nutzung reserviert, bis dato nicht verwendet. Dieses Feld muss immer den Wert „0“ haben.
Flags (6 Bit): Über die sechs möglichen Einzel-Bits im Flags-Feld lassen sich verschiedene TCP-Aktionen aktivieren, um die Kommunikation und Datenverarbeitung zu organisieren. Bei den Flags, die hierfür entweder gesetzt oder nicht gesetzt werden, handelt es sich um folgende:
- URG: Das „Urgent“-Flag (dt. „dringend“) signalisiert der TCP-Anwendung, dass die Nutzdaten bis zum gesetzten Urgent-Pointer (s. u.) sofort zu verarbeiten sind.
- ACK: In Kombination mit der Bestätigungsnummer hat das ACK-Flag die Funktion, den Empfang von TCP-Paketen zu quittieren. Ist das Flag nicht gesetzt, ist automatisch auch die Bestätigungsnummer ungültig.
- PSH: Das „Push“-Flag sorgt dafür, dass ein TCP-Segment sofort bereitgestellt wird, ohne zunächst im Puffer von Sender und Empfänger zu landen.
- RST: Ist bei der Übertragung ein Fehler aufgetreten, lässt sich die Verwendung durch ein TCP-Paket mit gesetztem RST-Flag („Reset“) zurücksetzen.
- SYN: Nachrichten mit gesetztem SYN-Flag stellen den ersten Schritt des Drei-Wege-Handshakes dar – initiieren also den Verbindungsaufbau.
- FIN: Das „Finish“-Flag signalisiert dem Gegenüber, dass ein Kommunikationspartner die Übertragung beendet.
Fenstergröße (16 Bit): In diesem Feld wird dem Kommunikationspartner die Anzahl an Bytes übermittelt, die der Sender bereit ist zu empfangen.
Prüfsumme (16 Bit): Das Transmission Control Protocol kann Übertragungsfehler zuverlässig erkennen. Hierfür wird die Prüfsumme herangezogen, die aus dem Header, den Nutzdaten und dem sogenannten Pseudo-Header berechnet wird.
Urgent-Pointer (16 Bit): Der Urgent-Pointer („Dringend“-Anzeiger) gibt die Position des ersten Bytes nach den dringlich zu behandelnden Nutzdaten an. Folglich ist dieses Feld nur gültig und relevant, wenn das URG-Flag gesetzt ist.
Optionen (0–320 Bit): Sollen TCP-Funktionen bereitgestellt werden, die nicht in den generellen Header gehören, geschieht dies über das Optionsfeld – ein mögliches Beispiel ist die Definition der maximalen Segmentgröße. Die Optionen müssen immer eine Länge des Vielfachen von 32 Bit haben, andernfalls ist die Auffüllung mit Null-Bits (Padding) erforderlich.