Roland Wism ¨uller Universit ¨at Siegen
Rechnernetze I
SoSe 2021
Rechnernetze I
SoSe 2021
7 Ende-zu-Ende Protokolle
7 Ende-zu-Ende Protokolle ...
OSI: 4Inhalt
➥ Ports: Adressierung von Prozessen
➥ UDP
➥ TCP
➥ Bytestrom, Paketformat
➥ Verbindungsaufbau und –zust ¨ande
➥ Sicherung der ¨Ubertragung
➥ Ubertragungssicherung in TCP¨
7 Ende-zu-Ende Protokolle ...
Einordnung
➥ Protokolle der Vermittlungsschicht:
➥ Kommunikation zwischen Rechnern
➥ Adressierung der Rechner
➥ IP: Best Effort, d.h. keine Garantien
➥ Protokolle der Transportschicht:
➥ Kommunikation zwischen Prozessen
➥ Adressierung von Prozessen auf einem Rechner
➥ ggf. Garantien: Zustellung, Reihenfolge, ...
➥ Sicherung der ¨Ubertragung notwendig
7.1 Ports: Adressierung von Prozessen
➥ Wie identifiziert man Prozesse?
➥ Nicht durch die Prozeß-ID des Betriebssystems:
➥ systemabh ¨angig,
”zuf ¨allig“
➥ Sondern: indirekte Adresierung ¨uber Ports
➥ 16-Bit Nummer
➥ Woher weiß ein Prozeß die Port-Nummer des Partners?
➥ ”well known ports“ (i.d.R. 0...1023) f ¨ur Systemdienste
➥ z.B.: 80 = Web-Server, 25 = Mail-Server
➥ Analogie: Tel. 112 = Feuerwehr
7.1 Ports: Adressierung von Prozessen ...
Port-Demultiplexing
➥ Ports sind typischer- weise durch Warte- schlangen realisiert
➥ Bei voller Warte-
schlange: UDP bzw.
TCP verwirft das Pa- ket
Prozeß Anwend.
Prozeß Anwend.
Prozeß Anwend.
UDP bzw. TCP demultiplexte
Datagramme (UDP) bzw. Daten (TCP) (Ports)
schlangen Warte−
Port 22
Port 80 Port 2333
7.2 UDP
UDP: User Datagram Protocol
➥ Dienstemodell von UDP:
➥ Ubertragung von Datagrammen zwischen Prozessen¨
➥ unzuverl ¨assiger Dienst
➥ ”Mehrwert“ im Vergleich zu IP:
➥ Kommunikation zwischen Prozessen
➥ ein Prozess wird identifiziert durch das Paar (Host-IP-Adresse, Port-Nummer)
➥ UDP ¨ubernimmt das Demultiplexen (☞ 7.1)
7.2 UDP ...
Aufbau eines UDP-Pakets
0 16 31
Quell−Port Ziel−Port
Daten
Länge Prüfsumme
➥ (Das UDP-Paket ist im Nutzdatenteil eines IP-Pakets!)
7.3 TCP
TCP: Transmission Control Protocol
➥ Dienstemodell von TCP:
➥ zuverl ¨assige ¨Ubertragung von Datenstr ¨omen zw. Prozessen
➥ verbindungsorientiert
➥ Meist verwendetes Internet-Protokoll
➥ befreit Anwendungen von Sicherung der ¨Ubertragung
➥ TCP realisiert:
➥ Port-Demultiplexing (☞ 7.1)
➥ Vollduplex-Verbindungen
7.3.1 Bytestrom- ¨ Ubertragung
TCP ¨ubertr ¨agt Daten (Bytestr ¨ome) segmentweise
...
... ...
Segment Segment Segment Anwend. Prozeß
Bytes
schreiben Bytes
lesen Anwend. Prozeß
Sendepuffer
TCP TCP
Empfangspuffer
7.3.1 Bytestrom- ¨ Ubertragung ...
Wann wird ein Segment gesendet?
➥ Wenn die maximale Segmentgr ¨oße erreicht ist
➥ Maximum Segment Size (MSS)
➥ i.d.R. an maximale Frame-Gr ¨oße (MTU, Maximum Trans- mission Unit) des lokalen Netzes angepaßt:
➥ MSS = MTU – Gr ¨oße(TCP-Header) – Gr ¨oße(IP-Header)
➥ verhindert, daß das Segment von IP sofort wieder frag- mentiert werden muß (☞ 5.4)
➥ Wenn der Sender es ausdr ¨ucklich fordert
7.3.2 TCP Header
Aufbau eines TCP Segments
0 4 16 31
Daten
Optionen (variabel) 10
SrcPort DstPort
SequenceNum Acknowledgement
0 Flags AdvertisedWindow UrgPtr
Checksum HdrLen
7.3.2 TCP Header ...
➥ SequenceNum, Acknowledgement, AdvertisedWindow:
➥ f ¨ur Sliding-Window-Algorithmus (siehe sp ¨ater, 7.5)
➥ Flags:
➥ SYN Verbindungsaufbau
➥ FIN Verbindungsabbau
➥ ACK Acknowledgement-Feld ist g ¨ultig
➥ URG Dringende Daten (out of band data)
UrgPtr zeigt L ¨ange der dringenden Daten an
➥ PSH Anwendung hat Push-Operation ausgef ¨uhrt
7.3.3 Verbindungsauf- und -abbau
Verbindungsaufbau
➥ Asymmetrisch:
➥ Client (rufender Teilnehmer): aktives ¨Offnen
➥ sende Verbindungswunsch zum Server
➥ Server (gerufener Teilnehmer): passives ¨Offnen
➥ warte auf eingehende Verbindungsw ¨unsche
➥ akzeptiere ggf. einen Verbindungswunsch
Verbindungsabbau
➥ Symmetrisch:
➥ beide Seiten m ¨ussen die Verbindung schließen
7.3.3 Verbindungsauf- und -abbau ...
Zum Begriff der TCP-Verbindung
➥ Das Tupel (Quell-IP-Adresse, Quell-Port, Ziel-IP-Adresse, Ziel-Port) kennzeichnet eine TCP-Verbindung eindeutig
➥ Nutzung als Demultiplex-Schl ¨ussel
➥ Nach Abbau einer Verbindung und Wiederaufbau mit denselben IP-Adressen und Port-Nummern:
➥ neue Inkarnation derselben Verbindung
7.3.3 Verbindungsauf- und -abbau ...
Verbindungsaufbau: Three-Way Handshake
Aktiver
Teilnehmer (Client)
Passiver Teilnehmer (Server)
SYN+ACK, SequenceNum = y SYN, SequenceNum = x
Acknowledgement = x+1 ACK, Acknowledgement = y+1
➥ Austausch von
Sequenznummern
➥ ”Zuf ¨alliger“ Startwert
➥ jede Inkarnation nimmt andere Nummern
➥ Acknowledgement:
n ¨achste erwartete Sequenznummer
7.3.3 Verbindungsauf- und -abbau ...
Zust ¨ande einer TCP-Verbindung
Ereignis
Abbau Aufbau Aktion SYN
SYN
Send Passive open
Close Close
/ SYN / SYN+ACK
SYN
SYN+ACK / FIN
/ FIN
Close
/ SYN Active open
Close
ACK / SYN+ACK SYN
/ ACK
FIN / ACK
LISTEN
FIN_WAIT_1 SYN_RCVD
CLOSE_WAIT SYN_SENT
ESTABLISHED CLOSED
7.3.3 Verbindungsauf- und -abbau ...
Zust ¨ande einer TCP-Verbindung ...
Client Server
Send Passive open
FIN
ACK ACK
Close Close
Close
ACK
Timeout (2 * Segment−
/ SYN / SYN+ACK
SYN
SYN+ACK / FIN
/ FIN
/ FIN / ACK
ACK+FIN
/ ACK
Close
/ SYN Active open
Close
ACK / SYN+ACK SYN
/ ACK
FIN / ACK
CLOSING LISTEN
FIN_WAIT_2 FIN_WAIT_1 SYN_RCVD
LAST_ACK CLOSE_WAIT
SYN_SENT
ESTABLISHED CLOSED
7.3.3 Verbindungsauf- und -abbau ...
Zust ¨ande einer TCP-Verbindung ...
Client Server
Send Passive open
Close Close
/ SYN / SYN+ACK
SYN
SYN+ACK / FIN
/ FIN
Close
/ SYN Active open
Close
ACK / SYN+ACK SYN
/ ACK
FIN / ACK
LISTEN
FIN_WAIT_1 SYN_RCVD
CLOSE_WAIT SYN_SENT
ESTABLISHED CLOSED
7.3.3 Verbindungsauf- und -abbau ...
Zust ¨ande einer TCP-Verbindung ...
Client Server
Send Passive open
FIN
ACK ACK
Close Close
Close
ACK
Timeout (2 * Segment−
/ SYN / SYN+ACK
SYN
SYN+ACK / FIN
/ FIN
/ FIN / ACK
ACK+FIN
/ ACK
Close
/ SYN Active open
Close
ACK / SYN+ACK SYN
/ ACK
FIN / ACK
CLOSING LISTEN
FIN_WAIT_2 FIN_WAIT_1 SYN_RCVD
LAST_ACK CLOSE_WAIT
SYN_SENT
ESTABLISHED CLOSED
7.3.3 Verbindungsauf- und -abbau ...
Zust ¨ande einer TCP-Verbindung ...
Client Server
Send Passive open
Close Close
/ SYN / SYN+ACK
SYN
SYN+ACK / FIN
/ FIN
Close
/ SYN Active open
Close
ACK / SYN+ACK SYN
/ ACK
FIN / ACK
LISTEN
FIN_WAIT_1 SYN_RCVD
CLOSE_WAIT SYN_SENT
ESTABLISHED CLOSED
7.3.3 Verbindungsauf- und -abbau ...
Zust ¨ande einer TCP-Verbindung ...
Client Server
Send Passive open
FIN
ACK ACK
Close Close
Close
ACK
Timeout (2 * Segment−
/ SYN / SYN+ACK
SYN
SYN+ACK / FIN
/ FIN
/ FIN / ACK
ACK+FIN
/ ACK
Close
/ SYN Active open
Close
ACK / SYN+ACK SYN
/ ACK
FIN / ACK
CLOSING LISTEN
FIN_WAIT_2 FIN_WAIT_1 SYN_RCVD
LAST_ACK CLOSE_WAIT
SYN_SENT
ESTABLISHED CLOSED
7.3.3 Verbindungsauf- und -abbau ...
Zust ¨ande einer TCP-Verbindung ...
Client Server
Send Passive open
Close Close
/ SYN / SYN+ACK
SYN
SYN+ACK / FIN
/ FIN
Close
/ SYN Active open
Close
ACK / SYN+ACK SYN
/ ACK
FIN / ACK
LISTEN
FIN_WAIT_1 SYN_RCVD
CLOSE_WAIT SYN_SENT
ESTABLISHED CLOSED
7.3.3 Verbindungsauf- und -abbau ...
Zust ¨ande einer TCP-Verbindung ...
Client Server
Send Passive open
FIN
ACK ACK
Close Close
Close
ACK
Timeout (2 * Segment−
/ SYN / SYN+ACK
SYN
SYN+ACK / FIN
/ FIN
/ FIN / ACK
ACK+FIN
/ ACK
Close
/ SYN Active open
Close
ACK / SYN+ACK SYN
/ ACK
FIN / ACK
CLOSING LISTEN
FIN_WAIT_2 FIN_WAIT_1 SYN_RCVD
LAST_ACK CLOSE_WAIT
SYN_SENT
ESTABLISHED CLOSED
7.3.3 Verbindungsauf- und -abbau ...
Zust ¨ande einer TCP-Verbindung ...
Client Server
Send Passive open
Close Close
/ SYN / SYN+ACK
SYN
SYN+ACK / FIN
/ FIN
Close
/ SYN Active open
Close
ACK / SYN+ACK SYN
/ ACK
FIN / ACK
LISTEN
FIN_WAIT_1 SYN_RCVD
CLOSE_WAIT SYN_SENT
ESTABLISHED CLOSED
7.3.3 Verbindungsauf- und -abbau ...
Zust ¨ande einer TCP-Verbindung ...
Client Server
Send Passive open
FIN
ACK ACK
Close Close
Close
ACK
Timeout (2 * Segment−
/ SYN / SYN+ACK
SYN
SYN+ACK / FIN
/ FIN
/ FIN / ACK
ACK+FIN
/ ACK
Close
/ SYN Active open
Close
ACK / SYN+ACK SYN
/ ACK
FIN / ACK
CLOSING LISTEN
FIN_WAIT_2 FIN_WAIT_1 SYN_RCVD
LAST_ACK CLOSE_WAIT
SYN_SENT
ESTABLISHED CLOSED
7.3.3 Verbindungsauf- und -abbau ...
Zust ¨ande einer TCP-Verbindung ...
Client Server
Send Passive open
Close Close
/ SYN / SYN+ACK
SYN
SYN+ACK / FIN
/ FIN
Close
/ SYN Active open
Close
ACK / SYN+ACK SYN
/ ACK
FIN / ACK
LISTEN
FIN_WAIT_1 SYN_RCVD
CLOSE_WAIT SYN_SENT
ESTABLISHED CLOSED
7.3.3 Verbindungsauf- und -abbau ...
Zust ¨ande einer TCP-Verbindung ...
Client Server
Send Passive open
FIN
ACK ACK
Close Close
Close
ACK
Timeout (2 * Segment−
/ SYN / SYN+ACK
SYN
SYN+ACK / FIN
/ FIN
/ FIN / ACK
ACK+FIN
/ ACK
Close
/ SYN Active open
Close
ACK / SYN+ACK SYN
/ ACK
FIN / ACK
CLOSING LISTEN
FIN_WAIT_2 FIN_WAIT_1 SYN_RCVD
LAST_ACK CLOSE_WAIT
SYN_SENT
ESTABLISHED CLOSED
7.3.3 Verbindungsauf- und -abbau ...
Zust ¨ande einer TCP-Verbindung ...
Client Server
Send Passive open
Close Close
/ SYN / SYN+ACK
SYN
SYN+ACK / FIN
/ FIN
Close
/ SYN Active open
Close
ACK / SYN+ACK SYN
/ ACK
FIN / ACK
LISTEN
FIN_WAIT_1 SYN_RCVD
CLOSE_WAIT SYN_SENT
ESTABLISHED CLOSED
7.3.3 Verbindungsauf- und -abbau ...
Zust ¨ande einer TCP-Verbindung ...
Client Server
Send Passive open
FIN
ACK ACK
Close Close
Close
ACK
Timeout (2 * Segment−
/ SYN / SYN+ACK
SYN
SYN+ACK / FIN
/ FIN
/ FIN / ACK
ACK+FIN
/ ACK
Close
/ SYN Active open
Close
ACK / SYN+ACK SYN
/ ACK
FIN / ACK
CLOSING LISTEN
FIN_WAIT_2 FIN_WAIT_1 SYN_RCVD
LAST_ACK CLOSE_WAIT
SYN_SENT
ESTABLISHED CLOSED
7.4 Sicherung der ¨ Ubertragung
OSI: 4 und 2 Problem:➥ Bei der ¨Ubertragung eines Segments bzw. Frames k ¨onnen Fehler auftreten
➥ Empf ¨anger kann Fehler erkennen, aber i.a. nicht korrigieren
➥ Segmente bzw. Frames k ¨onnen auch ganz verloren gehen
➥ z.B. durch ¨uberlasteten Router bzw. Switch
➥ oder bei Verlust der Frame-Synchronisation (☞ 3.4)
➥ Segmente bzw. Frames∗ m ¨ussen deshalb ggf. neu ¨ubertragen werden
7.4 Sicherung der ¨ Ubertragung ...
Basismechanismen zur L ¨osung:
➥ Best ¨atigungen (Acknowledgements, ACK)
➥ spezielle Kontrollinformationen, die an Sender zur ¨uckgesandt werden
➥ bei Duplex-Verbindung (wie z.B. bei TCP) auch Huckepack- verfahren (Piggyback):
➥ Best ¨atigung wird im Header eines normalen Frames ¨ubert- ragen
➥ Senderseitige Zwischenspeicherung unbest ¨atigter Frames
➥ Timeouts
➥ wenn nach einer bestimmten Zeit kein ACK eintrifft, ¨ubertr ¨agt der Sender den Frame erneut
7.4.1 Stop-and-Wait -Algorithmus
Ablauf bei fehlerfreier ¨Ubertragung
➥ Sender wartet nach der
Ubertragung eines Frames, bis¨ ACK eintrifft
➥ Erst danach wird der n ¨achste Frame gesendet
Sender
Timeout
ACK Frame
Frame
Frame ACK
Zeit
Empfänger
7.4.1 Stop-and-Wait -Algorithmus ...
Ablauf bei ¨Ubertragungsfehler
➥ Falls ACK nicht innerhalb der Timout-Zeit eintrifft:
➥ Wiederholung des gesendeten Frames
Zeit TimeoutTimeout
Sender Empfänger
Frame ACK Frame
7.4.1 Stop-and-Wait -Algorithmus ...
Ablauf bei ¨Ubertragungsfehler
➥ Falls ACK nicht innerhalb der Timout-Zeit eintrifft:
➥ Wiederholung des gesendeten Frames
Timeout
Sender Empfänger
Frame
Frame ACK
Zeit Timeout
Sender Empfänger
Frame Frame
7.4.1 Stop-and-Wait -Algorithmus ...
Was passiert, wenn ACK verloren geht oder zu sp ¨at eintrifft?
➥ Der Empf ¨anger erh ¨alt den Frame mehrfach
➥ Er muß dies erkennen k ¨onnen!
➥ Daher: Frames und ACKs erhalten eine Sequenznummer
➥ Bei Stop-and-Wait
reicht eine 1 Bit lange Sequenznummer
➥ d.h. abwechselnd 0 und 1
TimeoutTimeout
Sender
Frame 0
Frame 0 ACK 0 ACK 0
DuplikatOK
Empfänger
7.4.2 Sliding-Window -Algorithmus
Motivation
➥ Problem bei Stop-and-Wait:
➥ Leitung wird nicht ausgelastet, da nur ein Frame pro RTT
¨ubertragen werden kann
➥ Um Leitung auszulasten:
➥ Sender sollte die Daten- menge senden, die dem Verz ¨ogerungs(RTT)-
Bandbreiten-Produkt ent- spricht, bevor er auf das
... ...
Sender Empfänger
7.4.2 Sliding-Window -Algorithmus
Motivation
➥ Problem bei Stop-and-Wait:
➥ Leitung wird nicht ausgelastet, da nur ein Frame pro RTT
¨ubertragen werden kann
➥ Um Leitung auszulasten:
➥ Sender sollte die Daten- menge senden, die dem Verz ¨ogerungs(RTT)-
Bandbreiten-Produkt ent- spricht, bevor er auf das erste ACK wartet
➥ dann mit jedem ACK einen
... ... ...
Zeit
Sender Empfänger
7.4.2 Sliding-Window -Algorithmus
Motivation
➥ Problem bei Stop-and-Wait:
➥ Leitung wird nicht ausgelastet, da nur ein Frame pro RTT
¨ubertragen werden kann
➥ Um Leitung auszulasten:
➥ Sender sollte die Daten- menge senden, die dem Verz ¨ogerungs(RTT)-
Bandbreiten-Produkt ent- spricht, bevor er auf das
... ...
Sender Empfänger
7.4.2 Sliding-Window -Algorithmus
Motivation
➥ Problem bei Stop-and-Wait:
➥ Leitung wird nicht ausgelastet, da nur ein Frame pro RTT
¨ubertragen werden kann
➥ Um Leitung auszulasten:
➥ Sender sollte die Daten- menge senden, die dem Verz ¨ogerungs(RTT)-
Bandbreiten-Produkt ent- spricht, bevor er auf das erste ACK wartet
➥ dann mit jedem ACK einen
... ... ...
Zeit
Sender Empfänger
7.4.2 Sliding-Window -Algorithmus
Motivation
➥ Problem bei Stop-and-Wait:
➥ Leitung wird nicht ausgelastet, da nur ein Frame pro RTT
¨ubertragen werden kann
➥ Um Leitung auszulasten:
➥ Sender sollte die Daten- menge senden, die dem Verz ¨ogerungs(RTT)-
Bandbreiten-Produkt ent- spricht, bevor er auf das
RTT
... ...
Sender Empfänger
7.4.2 Sliding-Window -Algorithmus
Motivation
➥ Problem bei Stop-and-Wait:
➥ Leitung wird nicht ausgelastet, da nur ein Frame pro RTT
¨ubertragen werden kann
➥ Um Leitung auszulasten:
➥ Sender sollte die Daten- menge senden, die dem Verz ¨ogerungs(RTT)-
Bandbreiten-Produkt ent- spricht, bevor er auf das erste ACK wartet
➥ dann mit jedem ACK einen
RTT
... ... ...
Zeit
Sender Empfänger
7.4.2 Sliding-Window -Algorithmus
Motivation
➥ Problem bei Stop-and-Wait:
➥ Leitung wird nicht ausgelastet, da nur ein Frame pro RTT
¨ubertragen werden kann
➥ Um Leitung auszulasten:
➥ Sender sollte die Daten- menge senden, die dem Verz ¨ogerungs(RTT)-
Bandbreiten-Produkt ent- spricht, bevor er auf das
RTT
... ...
Sender Empfänger
7.4.2 Sliding-Window -Algorithmus
Motivation
➥ Problem bei Stop-and-Wait:
➥ Leitung wird nicht ausgelastet, da nur ein Frame pro RTT
¨ubertragen werden kann
➥ Um Leitung auszulasten:
➥ Sender sollte die Daten- menge senden, die dem Verz ¨ogerungs(RTT)-
Bandbreiten-Produkt ent- spricht, bevor er auf das erste ACK wartet
➥ dann mit jedem ACK einen
RTT
... ... ...
Zeit
Sender Empfänger
7.4.2 Sliding-Window -Algorithmus
Motivation
➥ Problem bei Stop-and-Wait:
➥ Leitung wird nicht ausgelastet, da nur ein Frame pro RTT
¨ubertragen werden kann
➥ Um Leitung auszulasten:
➥ Sender sollte die Daten- menge senden, die dem Verz ¨ogerungs(RTT)-
Bandbreiten-Produkt ent- spricht, bevor er auf das
RTT
... ...
Sender Empfänger
7.4.2 Sliding-Window -Algorithmus ...
Funktionsweise
➥ Jeder Frame erh ¨alt eine Sequenznummer
➥ Der Sender besitzt ein
”Schiebefenster“ (Sliding Window):
< SWS
LAR
LFS − LAR < SWS
3 4 5 7 8
...
...
6 10 11 12LFS 9
➥ Jeder Eintrag steht f ¨ur einen gesendeten Frame
➥ LAR: Last Acknowledgement Received
➥ bis zu diesem Frame (incl.) wurden alle quittiert
➥ LFS: Last Frame Sent
SWS: Sender Window Size
7.4.2 Sliding-Window -Algorithmus ...
Funktionsweise
➥ Jeder Frame erh ¨alt eine Sequenznummer
➥ Der Sender besitzt ein
”Schiebefenster“ (Sliding Window):
< SWS
LAR
LFS − LAR < SWS
3 4 5 7 8
...
...
6 10 11 12LFS 9
➥ Jeder Eintrag steht f ¨ur einen gesendeten Frame
➥ LAR: Last Acknowledgement Received
7.4.2 Sliding-Window -Algorithmus ...
Funktionsweise ...
➥ Der Empf ¨anger hat ebenfalls ein Sliding Window:
LFR
< RWS
LAF
LAF − LFR < RWS
4 5 8
...
...
7 11➥ Jeder Eintrag steht f ¨ur einen empfangenen Frame
➥ LFR: Last Frame Received
➥ alle Frames n mit n ≤ LFR wurden korrekt empfangen und quittiert
➥ LAF: Largest Acceptable Frame
➥ Frame n wird nur akzeptiert, wenn LFR < n ≤ LAF RWS: Receiver Window Size
7.4.2 Sliding-Window -Algorithmus ...
Funktionsweise ...
➥ Der Empf ¨anger hat ebenfalls ein Sliding Window:
LFR
< RWS
LAF 6
LAF − LFR < RWS
4 5 8
...
...
7 11➥ Jeder Eintrag steht f ¨ur einen empfangenen Frame
➥ LFR: Last Frame Received
➥ alle Frames n mit n ≤ LFR wurden korrekt empfangen und quittiert
7.4.2 Sliding-Window -Algorithmus ...
Quittierung von Frames
➥ Akkumulatives Acknowledgement:
➥ ACK f ¨ur Frame n gilt auch f ¨ur alle Frames ≤ n
➥ Zus ¨atzlich negative Acknowledgements m ¨oglich:
➥ Wenn Frame n empfangen wird,
aber Frame m mit m < n noch aussteht, wird f ¨ur Frame m ein NACK geschickt
➥ Alternative: selektives Acknowledgement:
➥ ACK f ¨ur Frame n gilt nur f ¨ur diesen Frame
7.4.2 Sliding-Window -Algorithmus ...
Problem in der Praxis
➥ Begrenzte Anzahl von Bits f ¨ur die Sequenznummer im Frame-Header
➥ z.B. bei 3 Bits nur Nummern 0 ... 7 m ¨oglich
➥ Reicht ein endlicher Bereich an Sequenznummern aus?
➥ ja, abh ¨angig von SWS und RWS:
➥ falls RWS = 1: NSeqNum ≥ SWS + 1
➥ falls RWS = SWS: NSeqNum ≥ 2 · SWS (NSeqNum = Anzahl von Sequenznummern)
7.5 Ubertragungssicherung in TCP ¨
➥ TCP nutzt den Sliding-Window-Algorithmus
➥ Prinzipiell wie in 7.4.2 vorgestellt, aber Unterschiede:
➥ Sequenznummer z ¨ahlt Bytes, nicht Segmente
➥ TCP ben ¨otigt Verbindungsaufbau und -abbau
➥ Austausch der Sliding-Window Parameter
➥ Netzwerk (IP) kann Pakete umordnen
➥ TCP toleriert bis zu 120 Sekunden alte Pakete
➥ Keine feste Fenstergr ¨oße
➥ Sendefenstergr ¨oße angepasst an Puffer des Empf ¨angers bzw. Lastsituation im Netz
➥ RTT ist nicht konstant, sondern ¨andert sich laufend
7.5 Ubertragungssicherung in TCP ... ¨
Aufgaben des Sliding-Window-Algorithmus in TCP
➥ Zuverl ¨assige ¨Ubertragung
➥ Sicherstellung der richtigen Reihenfolge der Segmente
➥ TCP gibt Segmente nur dann an obere Schicht weiter, wenn alle vorherigen Segmente best ¨atigt wurden
➥ Flußkontrolle
➥ keine feste Sendefenstergr ¨oße
➥ Empf ¨anger teilt dem Sender den freien Pufferplatz mit (AdvertisedWindow)
7.5 Ubertragungssicherung in TCP ... ¨
Zuverl ¨assige und geordnete ¨Ubertragung
➥ Algorithmus arbeitet auf Byte-Ebene
➥ Sequenznummern werden um die Anzahl gesendeter bzw.
empfangener Bytes erh ¨oht
Sendende
Anwendung EmpfangendeAnwendung
LastByteWritten TCP LastByteRead TCP
7.5 Ubertragungssicherung in TCP ... ¨
Flußkontrolle
➥ Empf ¨anger teilt Sender die Gr ¨oße des freien Puffers mit:
Sender Empfänger
ACK + AdvertisedWindow Daten
➥ AdvertisedWindow =
MaxRcvBuffer − (LastByteRcvd − LastByteRead)
➥ Sender muß sicherstellen, daß jederzeit gilt:
➥ LastByteSent − LastByteAcked ≤ AdvertisedWindow Differenz: Datenmenge, die der Sender noch senden kann
7.5 Ubertragungssicherung in TCP ... ¨
Uberlastkontrolle¨
➥ Flußkontrolle verhindert, daß ein Sender seinen Empf ¨anger
¨uberlastet
➥ Uberlastkontrolle¨ verhindert, daß mehrere Sender einen Teil des Netzwerks ¨uberlasten (durch Konkurrenz um Bandbreite):
Quelle
Quelle
Ziel Router
1 Gb/s je 1 Gb/s
➥ bei unzureichender Bandbreite: Puffern der Pakete im Router
➥ bei Puffer ¨uberlauf: Router muß Pakete verwerfen
7.5 Ubertragungssicherung in TCP ... ¨
Uberlastkontrolle ...¨
➥ Analog zum AdvertisedWindow wird ein CongestionWindow eingef ¨uhrt
➥ Sender kann noch so viele Bytes senden, ohne das Netzwerk zu ¨uberlasten
➥ TCP beobachtet das Verhalten des Netzes (Lastsituation)
➥ Paketverlust
➥ ggf. auch RTT und Durchsatz
➥ Gr ¨oße des CongestionWindow wird an Lastsituation angepasst
7.5 Ubertragungssicherung in TCP ... ¨
Sequenznummern- ¨Uberlauf
➥ Erinnerung an 7.4.2: endlicher Seqenznummernbereich nur m ¨oglich, wenn Netzwerk die Reihenfolge erh ¨alt
➥ TCP-Header: 32-Bit Feld f ¨ur Sequenznummern
➥ Pakete k ¨onnen bis zu 120 Sekunden alt werden
10 MBit/s (Ethernet) 57 Minuten 6 Minuten 100 MBit/s (FDDI)
4 Minuten
Zeit bis zum Überlauf Bandbreite
155 MBit/s (OC−3)
1,2 GBit/s (OC−24) 28 Sekunden 9,95 GBit/s (OC−192) 3,4 Sekunden
7.5 Ubertragungssicherung in TCP ... ¨
Gr ¨oße des AdvertisedWindow
➥ TCP-Header sieht 16-Bit vor, d.h. max. 64 KBytes
➥ N ¨otige Sendefenster-Gr ¨oße, um Kanal gef ¨ullt zu halten, bei RTT
= 100 ms (z.B. Transatlantik-Verbindung):
1,8 MByte 1,2 MByte 122 KByte
14,8 MByte 10 MBit/s (Ethernet)
100 MBit/s (FDDI)
Bandbreite RTT * Bandbreite
155 MBit/s (OC−3) 1,2 GBit/s (OC−24)
7.5 Ubertragungssicherung in TCP ... ¨
Adaptive Neu ¨ubertragung
➥ Timeout f ¨ur Neu ¨ubertragung muß abh ¨angig von RTT gew ¨ahlt werden
➥ Im Internet: RTT ist unterschiedlich und ver ¨anderlich
➥ Daher: adaptive Bestimmung des Timeouts n ¨otig
➥ urspr ¨unglich:
➥ Messung der durchschnittlichen RTT (Zeit zwischen Senden eines Segments und Ankunft des ACK)
➥ Timeout = 2 · durchschnittliche RTT
➥ Problem:
➥ Varianz der RTT-Meßwerte nicht ber ¨ucksichtigt
7.5 Ubertragungssicherung in TCP ... ¨
Adaptive Neu ¨ubertragung: Jacobson/Karels-Algorithmus
➥ Berechne gleitenden Mittelwert und (approximierte) Standard- abweichung der RTT:
➥ Deviation = δ · |SampleRTT − EstimatedRTT|
+ (1 − δ) · Deviation
➥ EstimatedRTT = δ · SampleRTT + (1 − δ) · EstimatedRTT
➥ Ber ¨ucksichtige Standardabweichung bei Timeout-Berechnung:
➥ TimeOut = µ · EstimatedRTT + Φ · Deviation
➥ Typisch: µ =1, Φ = 4, δ = 0,125
7.6 Zusammenfassung
➥ Ende-zu-Ende Protokolle: Kommunikation zwischen Prozessen
➥ UDP: unzuverl ¨assige ¨Ubertragung von Datagrammen
➥ TCP: zuverl ¨assige ¨Ubertragung von Byte-Str ¨omen
➥ Verbindungsaufbau
➥ Sicherung der ¨Ubertragung allgemein
➥ Stop-and-Wait, Sliding-Window
➥ Ubertragungssicherung in TCP (inkl. Fluß- und ¨¨ Uberlastkontrolle)
➥ Sliding-Window-Algorithms, adaptive Neu ¨ubertragung
N ¨achste Lektion: