Transmission Control Protocol/Segment: Unterschied zwischen den Versionen
Erscheinungsbild
K Textersetzung - „ TCP“ durch „ TCP“ |
|||
| (40 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
'''Transmission Control Protocol/Segment''' | |||
== Beschreibung == | == Beschreibung == | ||
; Teile eine [[TCP]]-Segments | |||
{| class="wikitable options" | |||
{| class="wikitable | |||
|- | |- | ||
! | ! Teil !! Beschreibung | ||
|- | |- | ||
| Header || | | Header || Steuerung der Kommunikation | ||
* | * Typische Header-Größe: 20 Byte (Ohne Nutzung des Options-Felds) | ||
|- | |- | ||
| | | Payload || Nutzlast | ||
* | * Zu übertragenden Daten | ||
* Header und Payload der Anwendungsschicht (HTTP, FTP ...) | |||
|} | |} | ||
; [[TCP]]-Segment | |||
{| class="header | {| class="header" | ||
! style="text-align:center !important; font-weight: normal;" "width="3%"| 00 | ! style="text-align:center !important; font-weight: normal;" "width="3%"| 00 | ||
! style="text-align:center !important; font-weight: normal;" "width="3%"| 01 | ! style="text-align:center !important; font-weight: normal;" "width="3%"| 01 | ||
! style="text-align:center !important; font-weight: normal;" "width="3%"| 02 | ! style="text-align:center !important; font-weight: normal;" "width="3%"| 02 | ||
| Zeile 75: | Zeile 75: | ||
|} | |} | ||
Werte werden in der [[Byte-Reihenfolge]] [[Big-Endian]] angegeben | |||
== Felder des [[TCP]]-Header == | |||
{| class="wikitable options" | {| class="wikitable options" | ||
! Feld !! Funktion !! Größe | ! Feld !! Funktion !! Größe | ||
| Zeile 89: | Zeile 90: | ||
|----- | |----- | ||
| Sequence Number | | Sequence Number | ||
| Sequenznummer des ersten Daten-Oktett dieses TCP-Segments, dient zur Sortierung | | Sequenznummer des ersten Daten-Oktett dieses [[TCP]]-Segments, dient zur Sortierung Oder die Initialisierungs-Sequenznummer falls das SYN-Flag gesetzt ist | ||
| 4 Byte | | 4 Byte | ||
|----- | |----- | ||
| Acknowledgement Number | | Acknowledgement Number | ||
| Gibt die '' Sequenznummer '' an, die der Absender dieses TCP-Segments als Nächstes erwartet | | Gibt die '' Sequenznummer '' an, die der Absender dieses [[TCP]]-Segments als Nächstes erwartet Sie ist nur gültig, falls das ACK-Flag gesetzt ist. | ||
| 4 Byte | | 4 Byte | ||
|----- | |----- | ||
| Data Offset | | Data Offset | ||
| Gibt die ''Länge des TCP-Headers'' in 32-Bit-Blöcken an (ohne Nutzdaten). | | Gibt die ''Länge des [[TCP]]-Headers'' in 32-Bit-Blöcken an (ohne Nutzdaten). | ||
* Hiermit wird die Startadresse der Nutzdaten angezeigt. | * Hiermit wird die Startadresse der Nutzdaten angezeigt. | ||
| 4 Bit | | 4 Bit | ||
| Zeile 112: | Zeile 113: | ||
|----- | |----- | ||
| (Receive) Window | | (Receive) Window | ||
| Ist die Anzahl der Bytes die der Sender dieses TCP-Segments bereit ist zu empfangen. | | Ist die Anzahl der Bytes die der Sender dieses [[TCP]]-Segments bereit ist zu empfangen. | ||
* Beginnend bei dem durch das ''Acknowledgementfeld'' indizierten Daten-Oktett. | * Beginnend bei dem durch das ''Acknowledgementfeld'' indizierten Daten-Oktett. | ||
| 2 Byte | | 2 Byte | ||
| Zeile 118: | Zeile 119: | ||
| Checksum | | Checksum | ||
| Dient zur Erkennung von Übertragungsfehlern. | | Dient zur Erkennung von Übertragungsfehlern. | ||
* Wird über den TCP-Header, die Daten und einen Pseudo-Header berechnet. | * Wird über den [[TCP]]-Header, die Daten und einen Pseudo-Header berechnet. | ||
* Der Header besteht aus Ziel-IP, Quell-IP, TCP-Protokollkennung (0x0006) und der Länge des TCP-Headers inkl. Nutzdaten (in Bytes). | * Der Header besteht aus Ziel-IP, Quell-IP, [[TCP]]-Protokollkennung (0x0006) und der Länge des [[TCP]]-Headers inkl. Nutzdaten (in Bytes). | ||
| 2 Byte | | 2 Byte | ||
|----- | |----- | ||
| Zeile 131: | Zeile 132: | ||
| Unterschiedlich groß und enthält Zusatzinformationen. | | Unterschiedlich groß und enthält Zusatzinformationen. | ||
* Müssen ein Vielfaches von 32 Bit lang sein, ansonsten muss mit Nullbits aufefüllt werden (''Padding''). | * Müssen ein Vielfaches von 32 Bit lang sein, ansonsten muss mit Nullbits aufefüllt werden (''Padding''). | ||
* Ermöglicht Verbindungsdaten auszuhandeln, die nicht im TCP-Header enthalten sind, wie | * Ermöglicht Verbindungsdaten auszuhandeln, die nicht im [[TCP]]-Header enthalten sind, wie beispielsweise die Maximalgröße des Nutzdatenfeldes. | ||
| | | 0-40 Byte | ||
|} | |} | ||
== | == [[TCP]]-Flags == | ||
{| class="wikitable options" | {| class="wikitable options" | ||
! Feld !! Funktion !! Größe | ! Feld !! Funktion !! Größe | ||
|----- | |----- | ||
| ECE-Flag (ECN-Echo) | | ECE-Flag (ECN-Echo) | ||
| | | Teilt dem Sender mit, dass das Netzwerk überlastet ist und die Senderate reduziert werden muss. | ||
* | * Wird für Explicit Congestion Notification (ECN) benötigt | ||
| 1 Bit | | 1 Bit | ||
|----- | |----- | ||
| CRW-Flag (''Congestion Window Reduced'') | | CRW-Flag (''Congestion Window Reduced'') | ||
| | | Teilt dem Empfänger mit das die Senderate reduziert wurde. | ||
* | * Wird für Explicit Congestion Notification (ECN) benötigt | ||
| 1 Bit | | 1 Bit | ||
|----- | |----- | ||
| Zeile 152: | Zeile 153: | ||
| | | | ||
* Die Daten nach dem Header werden sofort von der Anwendung bearbeitet. | * Die Daten nach dem Header werden sofort von der Anwendung bearbeitet. | ||
* Anwendung unterbricht die Datenverarbeitung des aktuellen TCP-Segments und liest alle Bytes nach dem Header bis zu dem Byte, auf das das ''Urgent-Pointer ''-Feld zeigt, aus. | * Anwendung unterbricht die Datenverarbeitung des aktuellen [[TCP]]-Segments und liest alle Bytes nach dem Header bis zu dem Byte, auf das das ''Urgent-Pointer ''-Feld zeigt, aus. | ||
* Kann verwendet werden, um eine Anwendung auf dem Empfänger abzubrechen. | * Kann verwendet werden, um eine Anwendung auf dem Empfänger abzubrechen. | ||
* In der Regel wird dieses Flag nicht ausgewertet. | * In der Regel wird dieses Flag nicht ausgewertet. | ||
| Zeile 158: | Zeile 159: | ||
|----- | |----- | ||
| ACK-Flag (''Acknowledgment'') | | ACK-Flag (''Acknowledgment'') | ||
| | | Hat in Verbindung mit der ''Acknowledgment''-Nummer die Aufgabe, den Empfang von [[TCP]]-Segmenten bestätigen. | ||
* | * Die ''Acknowledgment''-Nummer ist nur gültig, wenn das Flag gesetzt ist. | ||
| 1 Bit | | 1 Bit | ||
|----- | |----- | ||
| PSH-Flag (''Push'') | | PSH-Flag (''Push'') | ||
| | | Sowohl der ausgehende, als auch der eingehende Puffer wird übergangen. | ||
* | * Hilft den Datenstrom von [[TCP]] effizienter zu verarbeiten, indem die empfangende Applikation gezielter aufgeweckt werden kann. | ||
* | * RFC 1122 & RFC 793 | ||
| 1 Bit | | 1 Bit | ||
|----- | |----- | ||
| RST-Flag (''Reset'') | | RST-Flag (''Reset'') | ||
| | | Wird verwendet, wenn eine Verbindung abgebrochen werden soll. | ||
* | * beispielsweise bei technischen Problemen oder zur Abweisung unerwünschter Verbindungen | ||
* | * Oder bei nicht geöffneten Ports, es wird kein ICMP-Paket mit "Port Unreachable" verschickt. | ||
| 1 Bit | | 1 Bit | ||
|----- | |----- | ||
| SYN-Flag (''Synchronize'') | | SYN-Flag (''Synchronize'') | ||
| | | Pakete mit diesem Flag initiieren eine Verbindung. | ||
* | * Dient der Synchronisation von ''Sequenznummern'' beim Verbindungsaufbau. | ||
* | * Server antwortet normalerweise mit SYN+ACK oder RST. | ||
| 1 Bit | | 1 Bit | ||
|----- | |----- | ||
| FIN-Flag (''Finish'') | | FIN-Flag (''Finish'') | ||
| | | Schlussflag, dient zur Freigabe der Verbindung, zeigt an, dass keine Daten vom Sender kommen. | ||
* | * FIN- und SYN-Flags haben Sequenznummern, damit diese in der richtigen Reihenfolge abgearbeitet werden. | ||
| 1 Bit | | 1 Bit | ||
|----- | |----- | ||
|} | |} | ||
[[Kategorie:TCP]] | |||
[[ | |||
Aktuelle Version vom 4. Juli 2026, 11:54 Uhr
Transmission Control Protocol/Segment
Beschreibung
- Teile eine TCP-Segments
| Teil | Beschreibung |
|---|---|
| Header | Steuerung der Kommunikation
|
| Payload | Nutzlast
|
- TCP-Segment
| 00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Source Port | Destinations Port | H e a d e r | ||||||||||||||||||||||||||||||
| Sequence Number | ||||||||||||||||||||||||||||||||
| Acknowledgement Number | ||||||||||||||||||||||||||||||||
| Data Offset | Reserved | Flags | Window | |||||||||||||||||||||||||||||
| Checksum | Urgent Pointer | |||||||||||||||||||||||||||||||
| Optionen | Padding | |||||||||||||||||||||||||||||||
|
Payload | ||||||||||||||||||||||||||||||||
Werte werden in der Byte-Reihenfolge Big-Endian angegeben
Felder des TCP-Header
| Feld | Funktion | Größe |
|---|---|---|
| Source Port (Quellport) | Gibt die Portnummer auf der Senderseite an | 2 Byte |
| Destinations Port (Zielport) | Gibt die Portnummer auf der Empfängerseite an. | 2 Byte |
| Sequence Number | Sequenznummer des ersten Daten-Oktett dieses TCP-Segments, dient zur Sortierung Oder die Initialisierungs-Sequenznummer falls das SYN-Flag gesetzt ist | 4 Byte |
| Acknowledgement Number | Gibt die Sequenznummer an, die der Absender dieses TCP-Segments als Nächstes erwartet Sie ist nur gültig, falls das ACK-Flag gesetzt ist. | 4 Byte |
| Data Offset | Gibt die Länge des TCP-Headers in 32-Bit-Blöcken an (ohne Nutzdaten).
|
4 Bit |
| Reserved | Ist für zukünftige Verwendungen reserviert.
|
4 Bit |
| Control-Flags | Zweiwertige Variablen mit den Zuständen gesetzt und nicht gesetzt.
|
8 Bit |
| (Receive) Window | Ist die Anzahl der Bytes die der Sender dieses TCP-Segments bereit ist zu empfangen.
|
2 Byte |
| Checksum | Dient zur Erkennung von Übertragungsfehlern. | 2 Byte |
| Urgent Pointer | Nur gültig, wenn das URG-Flag gesetzt ist.
|
2 Byte |
| Options | Unterschiedlich groß und enthält Zusatzinformationen.
|
0-40 Byte |
TCP-Flags
| Feld | Funktion | Größe |
|---|---|---|
| ECE-Flag (ECN-Echo) | Teilt dem Sender mit, dass das Netzwerk überlastet ist und die Senderate reduziert werden muss.
|
1 Bit |
| CRW-Flag (Congestion Window Reduced) | Teilt dem Empfänger mit das die Senderate reduziert wurde.
|
1 Bit |
| URG-Flag (Urgent) |
|
1 Bit |
| ACK-Flag (Acknowledgment) | Hat in Verbindung mit der Acknowledgment-Nummer die Aufgabe, den Empfang von TCP-Segmenten bestätigen.
|
1 Bit |
| PSH-Flag (Push) | Sowohl der ausgehende, als auch der eingehende Puffer wird übergangen.
|
1 Bit |
| RST-Flag (Reset) | Wird verwendet, wenn eine Verbindung abgebrochen werden soll.
|
1 Bit |
| SYN-Flag (Synchronize) | Pakete mit diesem Flag initiieren eine Verbindung.
|
1 Bit |
| FIN-Flag (Finish) | Schlussflag, dient zur Freigabe der Verbindung, zeigt an, dass keine Daten vom Sender kommen.
|
1 Bit |