This commit is contained in:
David Schirrmeister 2025-06-11 12:24:24 +02:00
parent aa406fa684
commit 404da27a5b
12 changed files with 90 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 158 KiB

View File

@ -21,3 +21,93 @@
- Bytestromnummer des nächsten erwarteten Bytes - Bytestromnummer des nächsten erwarteten Bytes
- Als Quittungsnummer wird gesetzt: - Als Quittungsnummer wird gesetzt:
- ACK-Nummer (von Host B) = fehlerfrei empfangene Squenznummer + Größe der Nutzdaten in Byte - ACK-Nummer (von Host B) = fehlerfrei empfangene Squenznummer + Größe der Nutzdaten in Byte
- i.d.R poitiv
- stellen Summenquittungen dar
- d.h. alle Bytes bis zur ACK-Nummer wurden fehlerfrei empfangen
- werden zusammen mit den restlichen Daten die von B nach A gesendet werden, in einem TCP-Segment übertragen
- "Huckepack"
### TCP Telnet Fallstudie
![image_867.png](image_867.png)
#### Neuübertragung aufgrund einer verlorenen ACK
![image_868.png](image_868.png)
#### keine Neuübertragung, weil Bestätigung vor Timeout ankommt
![image_869.png](image_869.png)
#### Keine Neuübertragung, weil kumulative Bestätigung ankommt (Summenquittung)
![image_870.png](image_870.png)
## TCP Verbindungsaufbau
> TCP-Verbindung ist Full-Duplex
>
> Beide Verbindungen (Hin und Rück) müssen separat aufgebaut werden
>
> SYN-Flag = 1 dient zum Aufbau (Synchronisation)
>
> ACK-Flag = 1 dient zur Bestätigung (Quittung)
>
> Sequenz- und Quittungsnummern beziehen sich auf Bytes
- TCP-Verbindung wird mit einem 3-Wege-Handshake aufgebaut
- **Verbindungsanfrage (SYN) von A an B**
- SYN = 1
- SEQ = x (Startsequenznummer)
- **Verbindungsbestätigung (SYN, ACK) von B an A**
- SYN = 1
- ACK = x + 1 (Bestätigungsnummer)
- SEQ = y (Startsequenznummer von B)
- **Bestätigung (ACK) von A an B**
- SYN = 0
- ACK = y + 1 (Bestätigungsnummer)
- SEQ = x + 1 (Fortsetzung der Sequenznummer von A)
- ![image_871.png](image_871.png)
### Verbindungsaufbau Übung
![image_872.png](image_872.png)
## TCP Verbindungsabbau
> TCP-Verbindung ist Full-Duplex → Jede Richtung muss separat abgebaut werden
>
> Falls nur eine Verbindung abgebaut wird (und die andere noch aktiv ist), dann wird die Verbindung in den Zustand "Half-Close" versetzt.
> bspw. Wenn der Client nur noch empfangen möchte, aber nicht mehr senden.
- Schematisch
- Schließung TCP-Verbindung mit anschließender Wartezeit von 30 Sekunden
- ![image_873.png](image_873.png)
### Verbindungsabbau Übung
![image_874.png](image_874.png)
## TCP Verbindungsmanagement
![image_875.png](image_875.png)
- TCP-Verbindungen werden in einem Verbindungsmanagement verwaltet
- Zustände:
- CLOSED: Verbindung ist geschlossen
- LISTEN: Verbindung wartet auf Verbindungsanfrage
- SYN-SENT: Verbindungsanfrage wurde gesendet, aber noch keine Antwort erhalten
- SYN-RECEIVED: Verbindungsanfrage wurde empfangen, aber noch keine Bestätigung gesendet
- **ESTABLISHED**: Verbindung ist aufgebaut und kann Daten übertragen
- FIN-WAIT-1: Die Anwendung möchte Übertragung beenden
- FIN-WAIT-2: Andere Seite ist einverstanden die Verbindung zu beenden
- TIME-WAIT: Verbindung ist geschlossen, aber wartet auf mögliche ausstehende Pakete
- CLOSING: Beide Seiten haben gleichzeitig versucht, die Verbindung zu schließen
- CLOSE-WAIT: Gegenseite hat Verbindungsfreigabe eingeleitet
- LAST-ACK: Warten, bis keine TCP-Segmente mehr kommen
### TCP Client Lifecycle
![image_876.png](image_876.png)
### TCP Server Lifecycle
![image_877.png](image_877.png)
## TCP Zuverlässigkeit sicherstellen (Flusskontrolle)
- Quittungen
- positive ACKs
- kumulative Summenquittungen
- Zeitüberwachung
- Retransmission Timer
- Timeout (RTO)
- Sequenznummern