TCP Protocol-Segmente
Damit sich verschiedene TCP-Protokoll-Elemente unterhalten können,
werden TCP-Protocol-Data-Units (PDUs) verwendet, die man auch einfach
Segmente nennt. Ein Segment sieht etwas wie folgt aus:
Dabei bedeuten die Felder:
- Source port: Ein 16-Bit-Feld das den Quell-Port der
Verbindung angibt:
- Destination port: Ein 16-Bit-Feld das den Ziel-Port der
Verbindung angibt.
- Sequence number:Die Folgenummer des aktuellen Segments.
- Acknowledgment number: Die Nummer des nächsten erwarteten
Pakets, also Sequence-Number +1
.
- Data offset: Die Laenge des TCP-Headers in 32-Bit-Worten und
damit natürlich der Offset des Datenteils.
- Reserved: Ein fürzukünftige Nutzung reserviertes Feld, das
auf 0 gesetzt werden muß.
.
- Urg flag: Wenn hier 1 steht, dann ist der
Urgent-Zeiger wichtig.
.
- Ack flag:Zeigt an, das das Acknowledgement-Feld wichtig ist.
- Psh flag:Zeigt an das die Push-Funktion ausgeführt wird.
Wird dieses Flag gesetzt, dann soll der Protokollstack die Daten in
dem Segment sofort übetragen, anstatt zu warten bis der Sendepuffer
voll ist.
- Rst flag:Ist eine Anforderung die Verbindung zurückzusetzen.
- Syn flag:Zeigt an, das eine Synchronisation der
Verbindungsnummer gewünscht wird. Das wird beim Aufbau einer
Verbindung gemacht.
- Fin flag: Markiert das Ende der Übertragung, oder für
Italiener: Ich habe fertig.
- Window:Die Groeße des Empfangsfensters
- Checksum: Eine Prüfsumme über Header und Daten.
- Urgent pointer: Wenn das URG flag gesetzt ist, dann
gibt dieser Wert den Offset der dringenden Daten von der Sequenznummer
im Segment an. Der TCP-Protokoll-Stack tut zwar nichts bestimmtes mit
«dringenden Daten», aber die meisten auf TCP aufsetzenden
Anwendungen hqaben dafür Sonderbehandlung.
- Options: Optionen ähnlich wie im IP-Header. Jede Option
besteht aus einem Byte Optionsnummer, der Anzahl der Bytes in der
Option und dem Optionswert. Insgesamt sind nur 3 Optionen
definiert:
- 0: Ende der Optionsliste
- 1;Keine Operation
- 2: Maximum segment size - maximale Länge eines
TCP-Segments
Das Optionsfeld hat also nur eine sinnvolle Funktion, nämlich
sicherzustellen, das ein sendender TCP-Stack keine Segmente erzeugt,
die größer sind als der Empfänger hanhaben kann.
- Padding: Füllbytes um auf eine 32-Byte-Grenze zu kommen.
.
Auf diesen Header folgen dann die eigentlichen Daten. Das Checksum-Feld
wird über das gesamte Segment plus einem 96-Bit-Pseudo-Header berechnet,
der hinterher noch vor den TCP-Header gesetzt wird. Dieser Pseudo-Header
enthält Quelladresse, Zieladresse, Protokollbezeichner und segment-Laenge.
Diese Daten werden an den IP-Stack übergeben.
|