Transmission Control Protocol/Verbindungsaufbau: Unterschied zwischen den Versionen
Erscheinungsbild
K Textersetzung - „„“ durch „"“ |
K Textersetzung - „““ durch „"“ |
||
Zeile 17: | Zeile 17: | ||
#**Der Server sendet im Gegenzug seine Start-Sequenznummer ''y'', diese ist unabhängig von der Start-Sequenznummer des Clients | #**Der Server sendet im Gegenzug seine Start-Sequenznummer ''y'', diese ist unabhängig von der Start-Sequenznummer des Clients | ||
# Der Client bestätigt den Erhalt des SYN/ACK-Pakets durch ein eigenes ACK-Pakets mit der Sequenznummer ''x+1'' | # Der Client bestätigt den Erhalt des SYN/ACK-Pakets durch ein eigenes ACK-Pakets mit der Sequenznummer ''x+1'' | ||
#*Wird auch als "Forward | #*Wird auch als "Forward Acknowledgement" bezeichnet | ||
#*Aus Sicherheitsgründen sendet der Client die Sequenznummer des Servers + 1 im ACK-Segment zurück | #*Aus Sicherheitsgründen sendet der Client die Sequenznummer des Servers + 1 im ACK-Segment zurück | ||
# Die Verbindung ist damit aufgebaut | # Die Verbindung ist damit aufgebaut | ||
Zeile 52: | Zeile 52: | ||
Der Client bestätigt zuletzt den Erhalt des SYN/ACK-Pakets durch das Senden eines eigenen ACK-Pakets mit der Sequenznummer ''x+1'' | Der Client bestätigt zuletzt den Erhalt des SYN/ACK-Pakets durch das Senden eines eigenen ACK-Pakets mit der Sequenznummer ''x+1'' | ||
* Dieser Vorgang wird auch als "Forward | * Dieser Vorgang wird auch als "Forward Acknowledgement" bezeichnet | ||
* Aus Sicherheitsgründen sendet der Client den Wert ''y+1'' (die Sequenznummer des Servers + 1) im ACK-Segment zurück | * Aus Sicherheitsgründen sendet der Client den Wert ''y+1'' (die Sequenznummer des Servers + 1) im ACK-Segment zurück | ||
* Die Verbindung ist damit aufgebaut | * Die Verbindung ist damit aufgebaut |
Aktuelle Version vom 31. März 2025, 22:03 Uhr
Verbindungsaufbau
- Verbindungswunsch
Bestätigung durch beide Seiten
- TCP-Verbindungsaufbau Beispiel
- Verbindungsaufbau
- Der Client sendet dem Server ein SYN-Paket mit einer Sequenznummer x
- Die Sequenznummern sind für die Sicherstellung einer vollständigen Übertragung in der richtigen Reihenfolge und ohne Duplikate wichtig
- Ein Paket, dessen SYN-Bit im Header gesetzt ist
- Die Start-Sequenznummer ist eine beliebige zufällige Zahl, abhängig von der TCP-Implementierung
- Der Server empfängt das Paket und antwortet
- Port geschlossen, antwortet er mit einem TCP-RST, ein Signal, dass keine Verbindung aufgebaut werden kann
- Port geöffnet, bestätigt er den Erhalt des ersten SYN-Pakets und stimmt dem Verbindungsaufbau zu, indem er ein SYN/ACK-Paket zurückschickt
- Ein Paket, mit ACK-Flag im TCP-Header, welche die Sequenznummer x+1 des SYN-Pakets im Header enthält
- Der Server sendet im Gegenzug seine Start-Sequenznummer y, diese ist unabhängig von der Start-Sequenznummer des Clients
- Der Client bestätigt den Erhalt des SYN/ACK-Pakets durch ein eigenes ACK-Pakets mit der Sequenznummer x+1
- Wird auch als "Forward Acknowledgement" bezeichnet
- Aus Sicherheitsgründen sendet der Client die Sequenznummer des Servers + 1 im ACK-Segment zurück
- Die Verbindung ist damit aufgebaut
Verbindungsaufbau Beispiel
1. | SYN-SENT | → | <SEQ=100><CTL=SYN> | → | SYN-RECEIVED |
2. | SYN/ACK-RECEIVED | ← | <SEQ=300><ACK=101><CTL=SYN,ACK> | ← | SYN/ACK-SENT |
3. | ACK-SENT | → | <SEQ=101><ACK=301><CTL=ACK> | → | ESTABLISHED |
- Nach Aufbau ist die Verbindung für beide Kommunikationspartner gleichberechtigt
- Man kann einer bestehenden Verbindung auf TCP-Ebene nicht ansehen, wer der Server und wer der Client ist
- Eine Unterscheidung dieser beiden Rollen in der weiteren Betrachtung keine Bedeutung mehr
- Verbindungsaufbau

Der Client, der eine Verbindung aufbauen will, sendet dem Server ein SYN-Paket (von ) mit einer Sequenznummer x
- Die Sequenznummern sind dabei für die Sicherstellung einer vollständigen Übertragung in der richtigen Reihenfolge und ohne Duplikate wichtig
- Es handelt sich also um ein Paket, dessen SYN-Bit im Paketkopf gesetzt ist (siehe TCP-Header)
- Die Start-Sequenznummer (auch Initial Sequence Number (ISN) genannt) ist eine beliebige Zahl, deren Generierung von der jeweiligen TCP-Implementierung abhängig ist
- Sie sollte jedoch möglichst zufällig sein, um Sicherheitsrisiken zu vermeiden
Der Server (siehe Skizze) empfängt das Paket
- Ist der Port geschlossen, antwortet er mit einem TCP-RST, um zu signalisieren, dass keine Verbindung aufgebaut werden kann
- Ist der Port geöffnet, bestätigt er den Erhalt des ersten SYN-Pakets und stimmt dem Verbindungsaufbau zu, indem er ein SYN/ACK-Paket zurückschickt (ACK von engl. acknowledgement ‚Bestätigung‘)
- Das gesetzte ACK-Flag im TCP-Header kennzeichnet diese Pakete, welche die Sequenznummer x+1 des SYN-Pakets im Header enthalten
- Zusätzlich sendet er im Gegenzug seine Start-Sequenznummer y, die ebenfalls beliebig und unabhängig von der Start-Sequenznummer des Clients ist
Der Client bestätigt zuletzt den Erhalt des SYN/ACK-Pakets durch das Senden eines eigenen ACK-Pakets mit der Sequenznummer x+1
- Dieser Vorgang wird auch als "Forward Acknowledgement" bezeichnet
- Aus Sicherheitsgründen sendet der Client den Wert y+1 (die Sequenznummer des Servers + 1) im ACK-Segment zurück
- Die Verbindung ist damit aufgebaut
- Im folgenden Beispiel wird der Vorgang abstrakt dargestellt:
1. | SYN-SENT | → | <SEQ=100><CTL=SYN> | → | SYN-RECEIVED |
2. | SYN/ACK-RECEIVED | ← | <SEQ=300><ACK=101><CTL=SYN,ACK> | ← | SYN/ACK-SENT |
3. | ACK-SENT | → | <SEQ=101><ACK=301><CTL=ACK> | → | ESTABLISHED |
Einmal aufgebaut, ist die Verbindung für beide Kommunikationspartner gleichberechtigt, man kann einer bestehenden Verbindung auf TCP-Ebene nicht ansehen, wer der Server und wer der Client ist
- Daher hat eine Unterscheidung dieser beiden Rollen in der weiteren Betrachtung keine Bedeutung mehr