update
BIN
Writerside/images/image_867.png
Normal file
After Width: | Height: | Size: 47 KiB |
BIN
Writerside/images/image_868.png
Normal file
After Width: | Height: | Size: 25 KiB |
BIN
Writerside/images/image_869.png
Normal file
After Width: | Height: | Size: 28 KiB |
BIN
Writerside/images/image_870.png
Normal file
After Width: | Height: | Size: 20 KiB |
BIN
Writerside/images/image_871.png
Normal file
After Width: | Height: | Size: 53 KiB |
BIN
Writerside/images/image_872.png
Normal file
After Width: | Height: | Size: 55 KiB |
BIN
Writerside/images/image_873.png
Normal file
After Width: | Height: | Size: 23 KiB |
BIN
Writerside/images/image_874.png
Normal file
After Width: | Height: | Size: 38 KiB |
BIN
Writerside/images/image_875.png
Normal file
After Width: | Height: | Size: 124 KiB |
BIN
Writerside/images/image_876.png
Normal file
After Width: | Height: | Size: 184 KiB |
BIN
Writerside/images/image_877.png
Normal file
After Width: | Height: | Size: 158 KiB |
@ -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
|
||||||
|

|
||||||
|
|
||||||
|
#### Neuübertragung aufgrund einer verlorenen ACK
|
||||||
|

|
||||||
|
|
||||||
|
#### keine Neuübertragung, weil Bestätigung vor Timeout ankommt
|
||||||
|

|
||||||
|
|
||||||
|
#### Keine Neuübertragung, weil kumulative Bestätigung ankommt (Summenquittung)
|
||||||
|

|
||||||
|
|
||||||
|
## 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)
|
||||||
|
- 
|
||||||
|
|
||||||
|
### Verbindungsaufbau Übung
|
||||||
|

|
||||||
|
|
||||||
|
## 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
|
||||||
|
- 
|
||||||
|
|
||||||
|
### Verbindungsabbau Übung
|
||||||
|

|
||||||
|
|
||||||
|
## TCP Verbindungsmanagement
|
||||||
|

|
||||||
|
- 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
|
||||||
|

|
||||||
|
|
||||||
|
### TCP Server Lifecycle
|
||||||
|

|
||||||
|
|
||||||
|
## TCP Zuverlässigkeit sicherstellen (Flusskontrolle)
|
||||||
|
- Quittungen
|
||||||
|
- positive ACKs
|
||||||
|
- kumulative Summenquittungen
|
||||||
|
- Zeitüberwachung
|
||||||
|
- Retransmission Timer
|
||||||
|
- Timeout (RTO)
|
||||||
|
- Sequenznummern
|
||||||
|
|
||||||
|