Transmission Control Protocol/Verbindungsaufbau: Unterschied zwischen den Versionen
Erscheinungsbild
	
	
 Die Seite wurde neu angelegt: „=== Verbindungsaufbau === * Verbindungswunsch ==== Bestätigung durch beide Seiten ==== * TCP-Verbindungsaufbau Beispiel  ; Verbindungsaufbau 300px| TCP-Handshake  # 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 gesetz…“  | 
				K Textersetzung - „““ durch „"“  | 
				||
| (2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| 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   | #*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   | * 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  | ||
| Zeile 68: | Zeile 68: | ||
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  | 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  | * Daher hat eine Unterscheidung dieser beiden Rollen in der weiteren Betrachtung keine Bedeutung mehr  | ||
[[Kategorie:TCP]]  | |||
Aktuelle Version vom 31. März 2025, 21: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