• Keine Ergebnisse gefunden

7 Ende-zu-Ende Protokolle

N/A
N/A
Protected

Academic year: 2022

Aktie "7 Ende-zu-Ende Protokolle"

Copied!
62
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Roland Wism ¨uller Universit ¨at Siegen

Rechnernetze I

SoSe 2021

(2)

Rechnernetze I

SoSe 2021

7 Ende-zu-Ende Protokolle

(3)

7 Ende-zu-Ende Protokolle ...

OSI: 4

Inhalt

➥ Ports: Adressierung von Prozessen

➥ UDP

➥ TCP

Bytestrom, Paketformat

Verbindungsaufbau und –zust ¨ande

➥ Sicherung der ¨Ubertragung

➥ Ubertragungssicherung in TCP¨

(4)

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

(5)

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

(6)

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)

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)

(8)

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

(9)

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

(10)

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

(11)

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

(12)

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

(13)

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

(14)

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

(15)

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

(16)

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

(17)

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

(18)

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

(19)

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

(20)

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

(21)

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

(22)

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

(23)

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

(24)

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

(25)

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

(26)

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

(27)

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

(28)

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

(29)

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

(30)

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

(31)

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

(32)

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

(33)

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

(34)

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

(35)

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

(36)

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

(37)

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

(38)

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

(39)

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

(40)

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

(41)

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

(42)

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

(43)

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

(44)

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

(45)

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

(46)

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 12

LFS 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

(47)

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 12

LFS 9

Jeder Eintrag steht f ¨ur einen gesendeten Frame

LAR: Last Acknowledgement Received

(48)

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

(49)

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

(50)

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

(51)

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)

(52)

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

(53)

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)

(54)

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

(55)

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(LastByteRcvdLastByteRead)

➥ Sender muß sicherstellen, daß jederzeit gilt:

LastByteSentLastByteAckedAdvertisedWindow Differenz: Datenmenge, die der Sender noch senden kann

(56)

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

(57)

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

(58)

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

(59)

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)

(60)

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

(61)

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

(62)

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:

Referenzen

ÄHNLICHE DOKUMENTE

Kommen Insulinresistenz und zentrale Adipositas zusammen, gesellt sich noch ein erhöhter Blutdruck hinzu, schiesst obendrein das LDL-Cholesterin über die vorgeschriebenen

Wenn uns HausärztInnen die technischen Mittel durch finanzielle Restriktionen weiter genom- men werden, wird sich dieser Trend verstärken.. Die Laboranalysen werden durch

Schon in der VIGOR (Vioxx Gastrointestinal Outcome Re- search)-Studie war aufgefallen, dass mit Rofecoxib behandelte Patienten signifi- kant häufiger Herzinfarkte erlitten als

Die einen sagen, dass Digitalisierung auch bedeuten müsse, Ar- beitsplätze zu schaffen um den Menschen in der traditionellen Form der Erwerbstätigkeit zu halten.. Die anderen sehen

Our Origin: Tiny fluctuations in the early Universe.. A

Colwell und der vorher berechneten Grenze, wird in der späteren Betrachtung immer von dem Mittelwert beider Grenzen ausgegangen: Es sollten keine kleineren Abstände

(Dies ist nicht erfüllt, wenn der Nutzer z. B. unbeabsichtigt eine nicht E2E-verschlüsselte E-Mail senden kann.).. Durchgeführt wurde der CW im Webinterface von GMX inner- halb

[r]