orm@doc-tcpip.org

Erstellt: April 1999 - Letzte Modifikation: Februar 2005

[ Main | Local ]


Steckbrief TCP - TCP Optionen


TCP Grundlagen

Auf der IP Ebene sind zwei Zugangsprotokolle implementiert. Einen direkten Zugang zu den IP-Services stellt das User Datagram Protocol (UDP) zur Verfügung. Für einen zuverlässigen Daten-Transfer von einem Ende der Verbindung zum anderen (Ende-Ende) ist das Transmission Control Protocol (TCP) implementiert.

Dabei handelt es sich um einen simplen IP Datagramm Service, auf den TCP als übergeordneter Kontroll-Struktur aufsetzt. Das TCP sorgt für:

TCP Eigenschaften

TCP baut über das Netz einen Kanal zwischen zwei lokalen Prozessen auf. Der Kanal ist zuverlässig, Full Duplex und betreibt Streaming der Daten.

Unicast-Protokoll: Der Datenaustausch erfolgt zwischen genau 2 Parteien.

Connection State: TCP ist ein Client-Server orientiertes Protokoll. Beide Parteien handeln die Bedingungen und den Status der Verbindung beim Start aus und halten den Status der Verbindung über die gesamte Lebensdauer syncron (Austausch aller Status-Änderungen).

Full Duplex: Beide Partner können über den Kanal gleichzeitig Senden und Empfangen.

TCP Header

 
0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|       Source Port             |      Destination Port         |
+---------------+---------------+---------------+---------------+
|                   Sequence Number                             |
+-------------------------------+-------------------------------+
|                 Acknowledgement Number                        |
+-------------------------------+-------------------------------+
|Offs.  | Res.  |   Flags       |         Window                |
+-------------------------------+-------------------------------+
|                 Optionen                                      |
+---------------------------------------------------------------+

Die Felder umfassen im einzelnen:

Options

Ein Feld variabler Länge, das die möglichen TCP Options zeigt. Dieses Feld gehört nicht mehr zum klassischen TCP Header. Seine Existenz wird durch das Feld Data-Offset angezeigt. Alle Daten (Oktetts) zwischen dem Urgent Pointer und dem Beginn der Nutzlast werden als Optionen ausgelesen.

Eine Auswahl Performance relevanter Optionen:

Maximum Receive Segment Size Option: Wird während des TCP Handshakes (also in SYN Paketen) dem anderen Ende mitgeteilt. Zeigt die maximale Größe der Segmente im Oktetts, die der Host empfangen möchte. Diese Option ist also wichtig einmal für die Größe der Segmente, die gesendet werden sowie für die Berechnung des angesagten TCP-Fensters (Advertized TCP Windows). Diese Größe sollte durch Path MTU Discovery ermittelt werden, den nur so kann sichergestellt werden, daß die ausgehandelte Segment-Größe auch den Gegebenheiten auf dem Netzwerk-Pfad entsprechen. Es könnte Strecken geben, die technisch nicht in der Lage sind, eine bestimme Segment-Größe zu befördern. Fragmentierung wäre die Folge, was die Übertragung verlangsamt.

Window Scale Option: Im klassischen TCP ist die maximale Größe der Window Size (also das Fenster oder Empfangs-Fenster) auf 16 Bit beschränkt (65535 byte). Diese Option stellt einen Faktor zur Verfügung, um den Wert der Window Size binär rechts zu verschieben. Das entspricht einer Multiplikation mit 2 pro Bit. Auch diese Option wird in SYN Paketen während des TCP Handshakes ausgehandelt. Wichtig ist das für Netze mit hohen Geschwindigkeiten und langen Verzögerungen. Da das Netz von TCP wie ein Puffer behandelt wird, reduziert eine kleine Window Size die Menge an Daten (Segmenten), die im Fluß gehalten werden können. Trotz hoher Bandbreite ist das Netz so künstlich gedrosselt, da maximal 65535 Byte pro Round Trip Time übertragen werden können. Die Option erweitert diese Menge auf 2^30 Byte.
Leider gibt es keinen Prozess, der analog der PMTU Discovery, das Produkt von Bandbreite und Verzögerung bestimmen könnte. Die Größe des Fensters kann also nur durch Messen angenähert werden.

Kind 3 (1 Byte) Length 3 (1 Byte) Shift Count (1 Byte)
Diese Option gehört zum RFC 1323 und kann in der Regel über das Betriebssystem eingestellt werden; unter AIX z.B. über den no-Parameter rfc1323.

SACK Selective Acknowledgement: Mit dieser Option wird im TCP Handshake (SYN Pakete) die Benutzung des SACK Mechanismus ausgehandelt.
TCP SACK-Permitted: Kind 4 (1 Byte) Length 2 (1 Byte). Diese Option darf nur in SYN geflaggten Packeten auftauchen.
TCP SACK: Kind 5 (1 Byte) Length x (1 Byte). Danach folgen die empfangenen Segmente von 1 bis n:
|Left Edge 1st Block|Right Edge 1st Block| ... |
| ... |Left Edge nst Block|Right Edge nst Block|


[ Main | Local ]

[ Allgemein | UNIX | AIX | TCP-IP | TCP | ROUTING | DNS | NTP | NFS | FreeBSD | Linux | RPi | SMTP | Tracing | GPS | LW ]

Copyright 2001-2021 by Orm Hager - Es gilt die GPL
Feedback bitte an: Orm Hager (orm@doc-tcpip.org )