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:

Ein TCP-Segment

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.