MINT lernen

Übungen: Ein Protokoll implementieren

Zehn Übungen zu Python-Code, Tracetabellen und dem Ablauf von Stop-and-Wait.

Dein Fortschritt:
0 / 0 Aufgaben
1

Übungsaufgaben

Zehn Übungen zum Klicken, Zuordnen, Rechnen und Knobeln — von AFB I bis AFB III. Jede Übung gibt sofort Rückmeldung; wenn Sie nicht weiterkommen, helfen die gestuften Tipps.

A1
Python-Ausdrücke auswerten
AFB I

Es gilt nr = 4 und d = "AB". Geben Sie die Werte der Ausdrücke an.

Wählen Sie in jedem Menü den passenden Eintrag und prüfen Sie dann alle auf einmal.

f"#{nr};{d}$" →

"#4;AB$"[1:-1] →

"4;AB".split(";") →

int("4") + 1 →

Der Slice [1:-1] lässt das erste und das letzte Zeichen weg. split liefert eine Liste von Zeichenketten — erst int() macht aus "4" eine Zahl.
Ansatz: f-Strings setzen den Wert in geschweifte Klammern ein.
Weiter: Negative Indizes zählen von hinten.
A2
Stimmt's? — Stop-and-Wait
AFB I

Nennen Sie zu jeder Aussage, ob sie stimmt.

5 Aussagen nacheinander. Eine falsche Einschätzung reicht — dann starten Sie die Serie mit „Neue Runde“ neu.
Aussage 1 von 5

Der Timeout muss länger sein als die Zeit, die Paket und Quittung zusammen brauchen.
Ansatz: Denken Sie an das Weg-Zeit-Diagramm.
Weiter: Was passiert, wenn der Timeout zu früh kommt?
A3
Den Empfänger verfolgen
AFB II

Die Funktion empfangen aus dem Unterkapitel startet mit erwartet = 0 und daten = []. Stellen Sie in der Tracetabelle dar, was nach jedem Rahmen gilt.

Füllen Sie alle Felder aus und prüfen Sie dann. Enter in einem Feld prüft ebenfalls.
RahmenAntworterwartetdaten
#0;WE$
#1;GE$
#1;GE$
#2;N$
Der dritte Rahmen ist ein Duplikat: Die Nummer 1 ist nicht mehr die erwartete 2, also bleibt daten unverändert — die Quittung ACK1 wird trotzdem geschickt. (Die Spalte „daten“ zeigt die Liste aneinandergehängt.)
Ansatz: Nur bei nr == erwartet wird gespeichert.
Weiter: Die Antwort ist immer ACK plus empfangene Nummer.
A4
Den Sender zusammensetzen
AFB II

Die Zeilen der Senderfunktion sind durcheinandergeraten. Implementieren Sie die Funktion, indem Sie die Zeilen ordnen.

Ziehen Sie die Karten in die richtige Reihenfolge — mit der Tastatur: ↑/↓ verschiebt, Shift+↑/↓ wechselt nur den Fokus.
1nr = 0
2while nr < len(pakete):
3kanal.schicke(f"#{nr};{pakete[nr]}$")
4antwort = kanal.warte_auf_ack(3)
5if antwort == f"ACK{nr}": nr = nr + 1
Die Nummer wird erst erhöht, wenn die passende Quittung da ist. Stünde nr = nr + 1 direkt nach dem Senden, ginge ein verlorenes Paket unbemerkt verloren.
Ansatz: Was muss vor der Schleife stehen?
Weiter: Senden → warten → prüfen.
A5
Eine gestörte Übertragung zählen
AFB II

Fünf Pakete (Nr. 0–4) werden mit Stop-and-Wait übertragen. Paket 2 geht beim ersten Versuch verloren, die Quittung für Paket 4 ebenfalls. Hin- und Rückweg dauern je 1 Zeiteinheit, der Timeout 3. Ermitteln Sie die Kennzahlen.

Rechnen Sie die Kette Schritt für Schritt: Erst wenn ein Schritt stimmt, wird der nächste freigeschaltet. Enter prüft.
  1. gesendete Rahmen
  2. gesendete Quittungen
  3. Duplikate beim Empfänger
  4. Gesamtdauer Zeiteinheiten
Rahmen: 5 + 2 Wiederholungen = 7. Quittungen: jeder angekommene Rahmen, also 7 − 1 = 6. Duplikat: das wiederholte Paket 4. Dauer: drei ungestörte Runden à 2, zwei gestörte à 3 + 2 → \(3\cdot2+2\cdot5=16\).
Ansatz: Zeichnen Sie ein Weg-Zeit-Diagramm.
Weiter: Gestörte Runde: 3 bis Timeout, dann 2 für den Neuversuch.
A6
Ein fehlerhafter Empfänger
AFB III

Überprüfen Sie diesen Empfänger-Code — zwei Zeilen sind falsch.

In diesem Text stecken Fehler. Klicken Sie genau die falschen Zeilen an — die richtigen müssen stehen bleiben.
Ohne Nummer in der Quittung kann der Sender eine verspätete Quittung für ein altes Paket nicht von der richtigen unterscheiden — er würde womöglich ein Paket überspringen.
Ansatz: Was steht in nr_text bei "#3;HI$"?
Weiter: Was passiert bei einem Duplikat?
A7
Was liefert der Ausdruck?
AFB II

Bestimmen Sie den Wert von int("#12;GO$"[1:-1].split(";")[0]) * 2.

Rechnen Sie selbst und tragen Sie das Ergebnis ein — Enter prüft direkt.
[1:-1] → "12;GO", split → ["12", "GO"], [0] → "12", int → 12, mal 2 → 24.
Ansatz: Von innen nach außen auswerten.
Weiter: Index 0 ist das erste Listenelement.
A8
Den Timeout festlegen
AFB III

Ein Paket braucht zum Empfänger 40 ms, die Quittung ebenso lange; der Empfänger braucht 5 ms zum Antworten. Begründen Sie die Wahl des Timeouts — markieren Sie alle zutreffenden Aussagen.

Mehrere Antworten sind richtig. Markieren Sie alle zutreffenden und klicken Sie dann auf „Prüfen“.
Hin- und Rückweg plus Bearbeitung: \(40+5+40=85\) ms. Etwas Reserve darüber ist sinnvoll; zu kurz erzeugt Duplikate, zu lang verschenkt Zeit bei echten Verlusten.
Ansatz: Rechnen Sie die Zeit bis zur Quittung aus.
Weiter: Zu kurz und zu lang haben beide Nachteile.
A9
Ereignis und Reaktion
AFB II Mix

Ordnen Sie jedem Ereignis die Reaktion im Stop-and-Wait-Protokoll zu.

Ansatz: Wer reagiert — Sender oder Empfänger?
Weiter: Quittiert wird immer.
A10
Stop-and-Wait unter der Lupe
AFB III Trick

Ein Sender schickt 100 Pakete über eine Leitung, auf der jedes Paket 50 ms braucht. Beurteilen Sie ohne Rechnen, wie sich die Gesamtdauer ändert.

Wählen Sie für jede Zeile eine Stufe: 1 = viel kürzer, 2 = etwas kürzer, 3 = gleich, 4 = etwas länger, 5 = viel länger. Mit der Tastatur: Tab zur Zeile, ←/→ zwischen den Stufen, Enter setzt.
1 = viel kürzer5 = viel länger
Timeout von 110 ms auf 1 s erhöhen, keine Verluste
Timeout von 110 ms auf 1 s erhöhen, jedes zehnte Paket geht verloren
Datenrate verdoppeln, Laufzeit der Leitung bleibt 50 ms
Leitung zum Mond (Laufzeit 1,3 s)
ein einzelnes Paket geht verloren
Ohne Verluste spielt der Timeout keine Rolle. Bei Stop-and-Wait bestimmt vor allem die Laufzeit die Dauer — eine schnellere Leitung verkürzt nur die Sendezeit, nicht die 2 · 50 ms Wartezeit je Paket.
Ansatz: Wofür wird die Zeit je Paket gebraucht?
Weiter: Der Timeout zählt nur bei Verlusten.