Lehrstuhl für Netzarchitekturen und Netzdienste
School of Computation, Information and Technology
Technische Universität München
Grundlagen Rechnernetze und Verteilte Systeme (IN0010)
Übungsblatt 10
03. Juli – 07. Juli 2023
Aufgabe 1 Schiebefensterprotokolle
Wir betrachten ein Sliding-Window-Verfahren, dessen Sende- und Empfangsfenster ws = wr = 2 beträgt. Der
Sequenznummernraum sei S = {0, 1}. Die Fehlerbehandlung erfolge analog zu Go-Back-N. Abbildung 1.1
zeigt eine Datenübertragung, wobei die Blitze für durch Störungen verlorengegangene Segmente stehen.
Die beiden ersten ACKs erreichen also nicht den Sender.
Sender Empfänger
SEQ=0
SEQ=1
ACK=1
ACK=0
SEQ=0
Timeout
SEQ=1
ACK=1
ACK=0
Abbildung 1.1: Modifiziertes Alternating-Bit-Protocol
a)* Welches Problem tritt in dem Beispiel bei der Übertragung auf?
b) Passen Sie S an, so dass das Verfahren korrekt funktionieren kann. Begründen Sie Ihre Antwort.
– Seite 1 / 10 –
Im Folgenden betrachten wir die beiden Verfahren Go-Back-N und Selective Repeat. Die Sequenznummern
s ∈ S haben eine Länge von 4 bit. Beantworten Sie die folgenden Fragen sowohl für Go-Back-N als auch
Selective Repeat.
c)* Wie viele unbestätigte Segmente darf der Sender jeweils senden, um eine gesicherte Verbindung zu
realisieren? Begründen Sie Ihre Antwort anhand von Beispielen. (Hinweis: Denken Sie an in möglichst
ungünstigen Momenten verlorene Bestätigungen)
– Seite 2 / 10 –
d)* Begründen Sie, welche oberen und unteren Grenzen für das Empfangsfenster des Empfängers bei den
beiden Verfahren jeweils sinnvoll sind.
e)* Für eine praktische Implementierung benötigt der Empfänger einen Empfangspuffer. Wie groß sollte
dieser bei den beiden Verfahren jeweils gewählt werden?
– Seite 3 / 10 –
Aufgabe 2 Fluss- und Staukontrolle bei TCP
Das im Internet am weitesten verbreitete Transportprotokoll ist TCP. Dieses implementiert Mechanismen zur
Fluss- und Staukontrolle.
a)* Diskutieren Sie die Unterschiede zwischen Fluss- und Staukontrolle. Welche Ziele werden mit dem
jeweiligen Mechanismus verfolgt?
b) Ordnen Sie die folgenden Begriffe jeweils der TCP-Fluss- bzw. Staukontrolle zu:
• Slow-Start
• Empfangsfenster
• Congestion-Avoidance
• Multiplicative-Decrease
Zur Analyse der mit TCP erzielbaren Datenrate betrachten wir den Verlauf einer zusammenhängenden
Datenübertragung, bei der die Slow-Start-Phase bereits abgeschlossen ist. TCP befinde sich also in der
Congestion-Avoidance-Phase. Wir bezeichnen die einzelnen Fenster wie folgt:
• Sendefenster Ws , |Ws | = ws
• Empfangsfenster Wr , |Wr | = wr
• Staukontrollfenster Wc , |Wc | = wc
Wir gehen davon aus, dass das Empfangsfenster beliebig groß ist, so dass das Sendefenster allein durch das
Staukontrollfenster bestimmt wird, d. h. Ws = Wc . Es treten keinerlei Verluste auf, solange das Sendefenster
kleiner als ein Maximalwert x ist, also ws < x .
Wird ein vollständiges Sendefenster bestätigt, so vergrößert sich das aktuell genutzte Fenster um genau 1 MSS.
Hat das Sendefenster den Wert x erreicht, so geht genau eines der versendeten TCP-Segmente verloren.
Den Verlust erkennt der Sender durch mehrfachen Erhalt derselben ACK-Nummer. Daraufhin halbiert der
Sender das Staukontrollfenster, bleibt aber nach wie vor in der Congestion-Avoidance-Phase, d. h. es findet
kein erneuter Slow-Start statt. Diese Vorgehensweise entspricht einer vereinfachten Variante von TCP-Reno
(vgl. Vorlesung).
Als konkrete Zahlenwerte nehmen wir an, dass die maximale TCP-Segmentgröße (MSS) 1460 B und die
RTT 200 ms beträgt. Die Serialisierungszeit von Segmenten sei gegenüber der Ausbreitungsverzögerung
vernachlässigbar klein. Segmentverlust trete ab einer Sendefenstergröße von ws ≥ x = 16 MSS auf.
– Seite 4 / 10 –
c)* Erstellen Sie ein Schaubild, in dem die aktuelle Größe des Sendefenster ws gemessen in MSS über der
Zeitachse t gemessen in RTT aufgetragen ist. In Ihrem Diagramm soll zum Zeitpunkt t0 = 0 s gerade die
Sendefenstergröße halbiert worden sein, also ws = x /2 gelten. Zeichnen Sie das Diagramm im Zeitintervall
t = {0, ... , 27}.
ws /MSS
16
14
12
10
t /RTT
2 4 6 8 10 12 14 16 18 20 22 24 26 28
d)* Wieviel Zeit vergeht, bis nach einem Segmentverlust das Staukontrollfenster infolge eines weiteren
Segmentverlusts wieder reduziert wird?
– Seite 5 / 10 –
e)* Bestimmen Sie allgemein die durchschnittliche Verlustrate θ. Hinweis: Da das Verhalten von TCP in
diesem idealisierten Modell periodisch ist, reicht es aus, lediglich eine Periode zu betrachten. Setzen Sie die
Gesamtzahl übertragener Segmente in Relation zur Anzahl verlorener Segmente (Angabe als gekürzter
Bruch ist ausreichend).
f) Bestimmen Sie mit Hilfe der Ergebnisse aus den Teilaufgaben (c) und (e) die in der betrachteten TCP-
Übertragungsphase durchschnittlich erzielbare Übertragungsrate in kB/s.
Hinweis: Verwenden Sie den exakten Wert (Bruch) aus Teilaufgabe e).
g)* Bis zu welcher Übertragungsrate könnten Sie mit UDP maximal über den Kanal senden, ohne einen Stau
zu erzeugen? Berücksichtigen Sie, dass der UDP-Header 12 B kleiner als der TCP-Header ohne Optionen
ist.
– Seite 6 / 10 –
Aufgabe 3 Code Demos – Beispiele für mögliche Klausurfragen (Hausaufgabe)
Am 20. und 27. Juni fanden in der Vorlesung Code-Demos zu UDP und TCP statt. Dabei wurden auch einige
mögliche Fragestellungen für die Klausur genannt, die aus diesen Vorlesungseinheiten stammen.
Ausführliche Informationen zu den behandelten Syscalls finden sie in den Manpages unter Linux bzw.
macOS, welche selbstverständlich auch ohne den Umweg einer lokalen Linux-Installation oder der Nutzung
der von uns bereitgestellten VMs direkt im Internet verfügbar sind (‘man <syscall>‘ auf Google).
Bitte beachten Sie, dass es zu diesen Fragen keinen Lösungsvorschlag geben wird.
a)* Erläutern Sie in 1 –2 Sätzen oder Stichpunkten die Funktion des Syscalls socket().
b)* Erläutern Sie in 2 –3 Sätzen oder Stichpunkten die Funktion des Syscalls bind().
c)* Erläutern Sie in 1 –2 Sätzen oder Stichpunkten die Funktion des Syscalls connect().
d)* Erläutern Sie in 2 –3 Sätzen oder Stichpunkten die Funktion des Syscalls accept(). Gehen Sie dabei
insbesondere auf Argument und Rückgabewert ein.
e)* Erläutern Sie in 2 –3 Sätzen oder Stichpunkten die Funktion des Syscalls select().
f)* Erläutern Sie in 2 –3 Sätzen oder Stichpunkten die Funktion des Syscalls listen().
g)* Erläutern Sie in 3 –4 Sätzen oder Stichpunkten die Unterschiede zwischen den Syscalls recv() und
recvfrom().
– Seite 7 / 10 –
h)* Erläutern Sie in 3 –4 Sätzen oder Stichpunkten die Unterschiede zwischen den Syscalls send() und
sendto().
i)* Nennen Sie die notwendigen Syscalls zum Öffnen eines passiven Sockets in der richtigen Reihenfolge
(auch bekannt als Listening Socket).
Machen Sie sich mit den in der Vorlesung programmierten bzw. vorgestellen Programmen udpchat und
tcpchat vertraut. Diese stehen auf [Link] zum Download zur Verfügung.
j)* Weswegen müssen beim udpchat (ohne Server) Absender-Port, Ziel-IP und Ziel-Port angegeben werden,
während beim TCP-Client die Angabe von Ziel-IP und Ziel-Port ausreichen?
k)* Weswegen konnte der UDP-Relay-Chat (udp_server) einem Client erst dann Antworten, nachdem dieser
eine Textnachricht an den Server geschickt hatte?
l)* Weswegen kann der udp_server nicht ohne Weiteres erkennen, ob ein Client offline ist?
m)* Beschreiben Sie mindestens zwei Vorteile, die der TCP-Chat gegenüber dem UDP-Chat bietet.
– Seite 8 / 10 –
Zusätzlicher Platz für Lösungen. Markieren Sie deutlich die Zuordnung zur jeweiligen Teilaufgabe.
Vergessen Sie nicht, ungültige Lösungen zu streichen.
– Seite 9 / 10 –
– Seite 10 / 10 –