IPv4: TCP
Das Transmission Control Protocol ist im RFC-793 definiert. Es wurde für die Datenübertragung mit Fehlersicherung konzipiert. Das TCP-Segment:

Die einzelnen Felder:
Source Port (16 Bits) - Nummer des Senderports.
Destination Port (16 Bits) - Nummer des Empfängerports.
Sequence Number (32 Bits) - Laufnummer bzw. ID des Segments. Sie wird für das Zusammensetzen der Segmente und zur Fehlerkontrolle benötigt. Bei einer neuer Verbindung wird die Laufnummer "frei" gewählt und für jedes weitere Segment um eins erhöht.
Acknowledgement Number (32 Bits) - Dient zum Bestätigen des fehlerfreien Empfangs von Segementen.
Offset (4 Bits) - Der Offset gibt die die Größe des TCP Headers in 32-Bit-Worten an und zeigt damit auf den Anfang der Daten.
Reserved (6 Bits) - Reserviert für zukünftige Verwendung
Control Bits (6 Bits) - von links nach rechts:
- URG: Urgent Pointer beachten
- ACK: Acknowledgment beachten
- PSH: Push-Flagge (Daten senden, auch wenn ineffektiv)
- RST: Verbindung zurücksetzen
- SYN: Laufnummer synchronisieren
- FIN: Keine weieteren Daten mehr vom Sender
Window Size (16 Bits) - Fenstergröße dee Senders in Bytes. Für eine effektive Fehlersicherung können mehrere Segmente mit einem Acknowledge bestätigt werden. Die Fenstergröße ist dabei die Größe des Segementpuffers, welcher gefüllt werden darf, bevor die Segmente bestätigt werden.
Checksum (16 Bits) - Prüfsumme über Header und Daten. Teile des IP-Headers (vor dem TCP-Segment) werden ebenfalls einbezogen. Bei der Berechnung fließt das Checksum-Feld mit "0" ein.
Urgent Pointer (16 Bits) - Sofern das URG-Bit gesetzt ist, gibt der Urgent Pointer die Laufnummer des Segments an, welches eilige Daten transportiert.
Options & Padding (variabel) - Verfügbare Optionen:
- End of option list
- No-Operation
- Maximum Segment Size
Der unbenutze Platz wird bis zur nächsten 32-Bit-Wortgrenze mit Nullen aufgefüllt.
Data (variabel) - Die transportierten Daten bzw. ein höheres Protokoll, wie z.B. FTP oder HTTP.

