Institut für Technische Informatik und Kommunikationsnetze Prof. Bernhard Plattner, Fachgruppe Kommunikationssysteme Technische Informatik II SS 2007 Übung 5: Kommunikationsprotokolle Hinweis: Weitere Aufgaben zu diesem Thema finden sie in den Begleitbüchern zur Vorlesung. Aufgabe 1: Vermittlungsverfahren In dieser Aufgabe geht es um zwei grundlegende Netzwerk-Prinzipien: Paketvermittlung (packet switching) und Leitungsvermittlung (circuit switching). 1. Kreuzen Sie bei den folgenden Netzwerk-Technologien an, ob sie paket- und/oder leitungsvermittelt sind: Netzwerk-Technologie Internet Analog-Telefonie ISDN-Telefonie Paketvermittlung Leitungsvermittlung 2. Ist es möglich, einen verbindungslosen Dienst über ein leitungsvermitteltes Netzwerk anzubieten? Falls Ja, beschreiben Sie ein sinnvolles Beispiel. Falls Nein, begründen Sie, weshalb dies nicht möglich ist. 3. Analog dazu: Ist es möglich, einen verbindungsorientierten Dienst über ein paketvermitteltes Netzwerk anzubieten? Falls Ja, beschreiben Sie ein sinnvolles Beispiel. Falls Nein, begründen Sie, weshalb dies nicht möglich ist. Musterlösung 1 Netzwerk-Technologie Paketvermittlung Leitungsvermittlung Internet ⊠ Analog-Telefonie ⊠ 2 Ja, IP über Analog-Telefonnetz (Modem). 3 Ja, Telefonie über IP (VoIP). ISDN-Telefonie ⊠ Aufgabe 2: Verteilte Systeme Es gibt zwei wichtige Kategorien von verteilten Systemen: Client-/Server-System und Peer-to-peerSysteme. Im Folgenden betrachten wir die Unterschiede und Gemeinsamkeiten dieser Systeme. 1. Was sind die Stärken von Client-/Server-Systemen? In welchen Bereichen kommen sie heute zum Einsatz? Nennen Sie mindestens zwei Beispiele. 2. Was sind die Stärken von Peer-to-peer-Systemen? In welchen Bereichen kommen sie heute zum Einsatz? Nennen Sie mindestens zwei Beispiele. 3. Peer-to-peer-Systeme werden heute oft mit der Verbreitung von urheberrechtlich geschützten Werken in Verbindung gebracht. Ist diese Technologie also illegal? 4. Weshalb gab es in den Anfängen der Computer-Technik v.a. Client-Server und praktisch keine Peer-to-peer-Systeme? Musterlösung 1 Einfache, zentrale Verwaltung, da die ganze Intelligenz im Server sitzt. 2 Flexibel in der Anwendung, jeder PC kann mitmachen. Ausfallsicher, da keine zentralen Komponenten ausfallen können. 3 Die Technik als solche ist keineswegs illegal. Sie kann jedoch leicht zur Verbreitung von Software aller Art genutzt werden, u.a. auch zur Verbreitung von Raubkopien. 4 Computer waren teuer und nur wenige Institutionen konnten sich welche leisten. Deshalb mussten diese Computer von möglichst vielen Nutzern gleichzeitig benutzt werden können. Peer-to-peer-System hingegen setzen voraus, dass jede Nutzerin einen PC hat. 2 Aufgabe 3: Protokollhierarchie Das OSI-Referenzmodell ist ein Standard der International Standard Organization und hat in erster Linie akademische Bedeutung. Im Gegensatz dazu stammt das TCP/IP-Modell aus einer konkreten SoftwareImplementation und hat vorwiegend praktische Bedeutung. OSI-Referenzmodell In dieser Aufgabe geht es um folgendes Beispiel-Szenario: Sie surfen mit Ihrem Laptop per drahtlosem Netzwerk mit gängiger WLAN-Technik auf die WWW-Homepage mit der URL http://www.ee.ethz.ch/ Als Referenzmodelle verwenden wir die folgenden zwei Varianten: Open Systems InterconnectionSchichtenmodell (OSI-Modell) und TCP/IP-Schichtenmodell (TCP/IP-Modell). Anhand des durch ein Protokoll angebotenen Dienstes kann es einem oder mehreren Schichten des OSIModells zugewiesen werden. 1. Stellen Sie einen Bezug zwischen den beiden Modellen her, indem Sie in der untenstehenden Tabelle alle leeren Felder ausfüllen. OSI-Schicht TCP/IP-Schicht 7 Anwendungsschicht 6 Anwendungsschicht 5 Anwendungsschicht 4 Transportschicht 3 Vermittlungsschicht 2 Sicherungsschicht 1 Bitübertragungsschicht 2. Markieren Sie dann durch Ankreuzen alle Schichten des OSI-Modells auf denen die Funktionen der untenstehenden Protokolle liegen. OSI-Schicht 7 6 5 4 3 2 1 TCP HTTP IP WLAN 3. Nennen Sie mögliche Gründe, weshalb sich wohl das OSI-Modell in der Praxis nicht durchgesetzt hat. 3 Musterlösung 1 2 7 6 5 4 3 2 1 OSI-Schicht Anwendungsschicht Darstellungsschicht Sitzungsschicht Transportschicht Vermittlungsschicht Sicherungsschicht Bitübertragungsschicht OSI-Schicht 7 6 5 4 3 2 1 TCP ⊠ HTTP ⊠ TCP/IP-Schicht Anwendungsschicht Anwendungsschicht Anwendungsschicht Transportschicht Netzwerkschicht Netzwerkschicht Netzwerkschicht IP ⊠ WLAN ⊠ ⊠ 3 Das OSI-Modell wurde von einem Standardisierungs-Gremium (ISO) entwickelt und wird von Praktikern als zu praxisfern und komplex angesehen. Die Vernetzung begann erst mit der Einführung von TCP/IP durch das UNIX-Betriebssystem BSD (Berkeley System Distribution) an der Universität Berkely, Kalifornien. Deshalb setzte sich auch das damit einhergehende TCP/IP-Modell eher durch. In der Praxis trifft man heute auf ein hybrides Modell aus OSI und TCP/IP, das wie folgt aussieht: 5 4 3 2 1 Anwendungsschicht Transportschicht Vermittlungsschicht Sicherungsschicht Bitübertragungsschicht Application Layer Transport Layer Network Layer Data Link Control Layer Physical Layer 4 Aufgabe 4: Verschiedene Medien 1. Wie werden Daten auf folgenden Medien übertragen? (a) Luft (b) Wasser (c) Vakuum (z.B. Weltall) (d) Festkörper (e) Domino-Steine 2. Nennen Sie zwei weitere (noch nicht genannte) Medien, die geeignet sind um Daten zu übertragen. 3. Beispiel Murmelbahn: Nadja und Pascal wollen per Murmelbahn digitale Daten übertragen. Sie haben zwei Murmelbahnen (siehe Skizze), die sie als Kanäle benutzen, und beliebig viele Murmeln zur Verfügung. Die Murmeln haben zwei verschiedene Durchmesser (klein/gross) und zwei verschiedene Farben (weiss/schwarz), d.h. es gibt vier verschiedene Typen von Murmeln. (a) Nadja und Pascal entwickeln nun ein Layer 1-Protokoll. Wie könnte die Spezifikation aussehen? Überlegen Sie sich Folgendes: i. Wie wird ein Bit dargestellt? ii. Kann ein Bit bei der Übetragung verfälscht werden? Was unternehmen Sie um das verhindern oder wenigstens zu erkennen? (b) In einem weiteren Schritt möchten die beiden das Protokoll so ändern, dass sie mit einer Murmel möglichst viele Daten übertragen können. Erfüllt ihre obengenannte ProtokollSpezifikation diese Anforderung bereits? Ändern Sie sie ansonsten entsprechend. Die relevante Metrik ist Bits pro Murmel. (c) Da Nadja und Pascal menschlich sind und beim “Absenden” und “Empfangen” der Kugeln Fehler machen können, möchten Sie nun noch eine Erweiterung bauen, welche falsch übertragene Daten erkennt. i. Auf welcher/n OSI-Schicht(en) wird diese Funktionalität typischerweise implementiert? ii. Wie könnte sie in diesem konkreten Beispiel hinzugefügt werden? Pascal Nadja Abbildung 1: Murmelbahn 5 Musterlösung 1 (a) Luft: Druckwellen (b) Wasser: Oberflächenwellen (c) Vakuum: Elektromagnetische Wellen (d) Festkörperwellen (e) Jeder fallende Stein bringt einen oder mehrere weitere Steine zu Fall 2 Elektrischer Leiter, Lichtwellenleiter 3(a)i Grosse Kugel = 1, kleine Kugel = 0 3(a)ii Kugeln können nicht die Farbe ändern (bit flip), aber von der Bahn fallen (bit slip). 3b Um die Ausnutzung zu maximieren ist eine Codierung erforderlich, so dass eine Kugel zwei Bits überträgt. weiss schwarz klein 00 10 gross 01 11 3(c)i Schichten 2 und 4 3(c)ii Vorwärtsfehlerkorrektur: Auf jeweils 4 Kugeln folgt eine, welche die Summe der Einsen zu einer durch 4 teilbaren Zahl macht. Beispiel: • 00 10 10 11 hat 4 Einsen, also hat die fünfte Kugel den Wert 0, dargestellt als 00. • 01 01 11 10 hat 5 Einsen, also hat die fünfte Kugel den Wert 3, dargestellt als 11. 6 Aufgabe 5: Leitungscodierung Betrachten Sie die Signale in Abb. 2. Auf Zeile 1 ist das Taktsignal gegeben. Die andern Zeilen stellen Leitungscodierungen ein und desselben Datensignals dar. Wichtig: Es gelten die Definitionen der Leitungscodierungen wie sie in der Vorlesung behandelt wurden. 1: Taktsignal 1 0 2: 1 0 3: 1 0 4: 1 0 5: Daten: Abbildung 2: Leitungscodierung 1. Schreiben Sie den Namen der Leitungscodierung der Signale auf den Zeilen 2 und 3 an. 2. Zeichnen Sie auf Zeile 4 eine weitere bekannte Leitungscodierung des Datensignals und geben Sie deren Namen an. 3. Schreiben Sie die übertragenen Daten als Folge von 0 und 1 in Zeile 5. Musterlösung 1: 2: 3: 4: 5: Taktsignal 1 0 NRZI 1 0 Manchester 1 0 NRZ 1 0 Daten: 1 1 0 1 0 0 0 1 0 1 0 0 1 0 0 1 Abbildung 3: Lösung 7 Aufgabe 6: Rahmenbildung und Transparenz 1. Rahmenbildung Bei welcher Art von Netzwerk wird Rahmenbildung (Framing) benötigt? 2. Weshalb funktioniert folgendes Übertragungsverfahren nicht: Der Sender sendet ein paar Bytes und macht dann später weiter, dort wo er aufgehört hat? Musterlösung 1 Paketorientierte Leitungsvermittlung (packet switching). 2 Es können verschiedene Probleme auftreten, ohne dass Sender resp. Empfänger dies feststellen können. Beispiele: • Der Empfänger kann nicht festsellen, ob Daten verloren gingen • Je nach Kanaleigenschaften kann die Reihenfolge der Daten durcheinander geraten OSI-Schicht 2 Wir betrachten in dieser Aufgabe Framing auf Schicht 2 des OSI-Referenzmodells. 1. Wie werden die einzelnen Datenblöcke (“Frames”) beim Protokoll HDLC voneinander abgetrennt? Wir betrachten im Folgenden das hypothetische Protokoll UDLC. (Bemerkung: UDLC ist nicht dasselbe wie HDLC.) Dieses Protokoll sende am Anfang jedes Datenblocks die Bitfolge 00000000. 2. Ist es ein Problem, wenn Nutzdaten übertragen werden, welche die Bitfolge 00000000 enthalten? Falls Ja: Welche Lösungen kennen Sie und welche Möglichkeit wird wohl auf Schicht 2 eingesetzt? Begründen Sie Ihre Antwort in max. 2 Sätzen. Falls Nein: Woran erkennt der Empfänger, dass die Bitfolge nicht eine Blockgrenze markiert? Ist es ein Problem, wenn zweimal nacheinander die Bitfolge 00000000 übertragen wird? Begründen Sie Ihre Antwort in max. 2 Sätzen. Musterlösung 1 Es wird ein sogenanntes Flag, bei HDLC die Bitfolge 01111110, am Anfang und am Ende jedes Datenblocks gesendet. 2 Ja, denn diese Nutzdaten würden vom Empfänger als Beginn eines neuen Datenblocks interpretiert. Abhilfe: Stuffing. Auf Schicht 2 wird meist Bit-Stuffing verwendet. 8 Character Stuffing 1. Das folgende Datenfragment komme in der Mitte eines Datenstroms vor. Es werde mit ‘\’ gestufft. Wie sieht das Datenfragment nach dem Stuffen aus? Datenfragment: ...\[A\B\]... 2. Ist Stuffing immer gleich effizient, egal welches Stuffing-Zeichen verwendet wird und bei beliebigen Daten? Falls Ja: Zeigen Sie dies analytisch. Falls Nein: Was ist eine geschickter Algorithmus um bei verschiedenem Input immer effizient zu stuffen? Musterlösung 1 Gestufftes Datenfragment: ...\\[A\\B\\]... 2 Nein. Bei dem in der Vorlesung vorgestellten Algorithmus kommt es darauf an, wie oft das StuffingZeichen im Text vorkommt. Am effizientesten ist Stuffing, wenn das am wenigsten häufig auftretende Zeichen zum Stuffen verwendet wird. Beispiel COBS-Algorithmus (Consistent Overhead Byte Stuffing) Grundidee: • Wähle ein oft vorkommendes Zeichen als Stuffing-Zeichen • Dort, wo es das erste Mal vorkommt, ersetze es durch die Anzahl der Zeichen, bis das Stuffing-Zeichen das nächste Mal vorkommt Beispiel: Das Paket Ich_habe_bei_dieser_Uebung_viel_gelernt wird durch Stuffing mit dem Zeichen ’_’ zu 4Ich5habe4bei6dieser7Uebung5viel0gelernt Dieser Algorithmus hat sehr viel bessere worst-case Eigenschaften als konventionelles Stuffing; ein Datenpaket wird um max. 1 Zeichen verlängert. Weitere Optimierungen wie zum Beispie das spezielle Behandeln von aufeinander folgenden Stuffing-Zeichen indem diese durch ein Zeichen ersetzt werden, sind möglich. 9 Aufgabe 7: Fehlerkorrektur In der Praxis werden auf verschiedenen Protokollschichten Massnahmen zur Fehlerkorrektur eingesetzt. In dieser Aufgabe geht es um folgendes Beispiel-Szenario: Sie surfen mit Ihrem Laptop per drahtlosem Netzwerk mit gängiger WLAN-Technik auf die WWW-Homepage mit der URL http://www.ethz.ch/ Als Referenzmodell verwenden wir das Open Systems Interconnection- Schichtenmodell (OSI-Modell). 1. Kreuzen Sie alle OSI-Schichten an, auf denen im Beispiel-Szenario Übertragungsfehler behandelt werden. Schicht Fehlerkorrektur 7 6 5 4 3 2 1 2. Herr S. Ch. Laumeier hält es für übertrieben, auf mehr als einer Protokollschicht Übertragungsfehler zu behandeln. Er schlägt vor, die Bitübertragungsschicht (physical layer) so zu definieren, dass alle Übertragungsfehler bereits dort behandelt werden. Überlegen Sie sich, auf welcher OSI-Schicht es möglich ist, alle Übertragungsfehler zu behandeln. Nennen Sie diese Schicht und begründen Sie Ihre Antwort. 3. Was ist die Aufgabe von Vorwärts-Fehlerkorrektur-Mechanismen? Kreuzen Sie die zutreffendste Antwort an. Ermöglichen, dass der Empfänger Fehler in den empfangenen Daten erkennen und sie unter günstigen Umständen korrigieren kann Ermöglichen, dass der Empfänger erkennen kann, ob die empfangenen Daten korrekt sind und unter günstigen Umständen bestimmen kann, wo genau der Fehler liegt Ermöglichen, dass der Sender bereits vor dem Senden erkennen kann, welche Daten bei der Übertragung verfälscht werden Ermöglichen, dass der Empfänger Fehler in den empfangenen Daten erkennen und dem Sender melden kann, welche Daten noch einmal übetragen werden müssen. 4. Kann Vorwärtsfehlerkorrektur auch bei magnetischen Datenträgern wie z.B. Festplatten eingesetzt werden? Begründen Sie Ihre Antwort. 10 Musterlösung 1 Schicht 7 6 5 4 3 2 1 Fehlerkorrektur ⊠ ⊠ 2 Nur die Appliaktionsschicht hat die unverfälschten Daten zur Verfügung und deshalb ist es auch nur auf dieser Schicht (Nr. 7 im OSI-Modell) möglich, sämtliche Fehler zu erkennen. 3 Die Aufgabe von Vorwärtsfehlerkorrektur ist: Ermöglichen, dass der Empfänger Fehler in den empfangenen Daten erkennen und sie unter günstigen Umständen korrigieren kann 4 Ja. Bevor die Daten in auf das Medium geschrieben werden, können sie mit VorwärtsfehlerkorrekturInformationen erweitert werden, welche dann beim Lesen vom Medium erlauben, kleine Fehler beim gelesenen Datenstrom zu korrigieren. 11 Aufgabe 8: Wiederholungsverfahren Gegeben sei ein blockorientiertes Kommunikationssystem bestehend aus Sender S, Empfänger A und Kanal k mit folgenden Eigenschaften: • Daten können in beide Richtungen blockweise übertragen werden • Blöcke können verloren gehen, aber mind. 90% der gesendeten Blöcke kommen an • Blöcke können dupliziert werden, aber dies geschieht nur bei max. 10% der Blöcke • Blöcke können die Reihenfolge ändern, aber dies geschieht nur bei max. 10% aller Blöcke • Blöcke können nicht verfälscht werden Ein vollständiges Sicherungsprotokoll für das System S sei definiert als ein Protokoll, welches garantiert, dass alle Nutzdaten, welche vom Sender S an den Empfänger E gesendet werden, vollständig, in der richtigen Reihenfolge und unverfälscht ankommen. Wir betrachten die folgenden Wiederholungsverfahren: ARQ, IRQ und CRQ. . Geben Sie für jedes Verfahren an, ob es ein vollständiges Sicherungsprotokoll nach obenstehender Definition ist und falls nein, beschreiben Sie ein Problem, welches vom Protokoll nicht gelöst wird. 1. • IRQ ohne Zeitüberwachung • IRQ mit Zeitüberwachung • IRQ mit Zeitüberwachung und Folgenummern • CRQ mit selektiver Wiederübertragung: • CRQ mit Go-Back-N-Verfahren Musterlösung 1 • IRQ ohne Zeitüberwachung: Falls ein Block vollständig verloren geht, wartet der Sender ewig mit dem Senden des nächsten Blockes • IRQ mit Zeitüberwachung: Duplikate können auftreten, wenn ein ACK verloren geht und der Sender einen bereits empfangenen Block wieder sendet • IRQ mit Zeitüberwachung und Folgenummern: Vollständiges Sicherungsprotokoll • CRQ mit selektiver Wiederübertragung: Vollständiges Sicherungsprotokoll • CRQ mit Go-Back-N-Verfahren: Vollständiges Sicherungsprotokoll 12 IRQ 1. Beim IRQ (Idle Repeat Request Protocol) werden alle Blöcke separat bestätigt. Der Durchsatz bei dieser Methode, auf einem verlustfreien Kanal angewendet, ist abhängig von Verzögerungszeit und Blocklänge von Datenpaketen und Bestätigungspaketen. In dieser Aufgabe können Sie Verzögerungen durch die Protokollverarbeitung vernachlässigen. Geben Sie in geschlossener Form den Durchsatz für das IRQ-Protokoll BIRQ (d) bei gegebener Kanalbandbreite (B), Kanal-Verzögerung (d), Daten-Blocklänge (L) und Bestätigungspaketlänge (LACK) an (mit Herleitung). 2. Der maximale Durchsatz lässt sich als Anteil der Kanalbandbreite angeben (Durchsatz / Kanalbreite). Wann wird diese Grösse gleich 1? Was bedeutet das für das Protokoll? 3. Berechnen Sie für L = 253Bytes, LACK = 3Bytes und B = 2MBit/s die maximale Übertragungsdistanz zwischen Sender und Empfänger wenn die Effizienz des Protokolls mindestens 70% betragen soll (d.h. es muss BIRQ ≥ 0.7B gelten). Treffen Sie sinnvolle Annahmen. 4. In der Praxis muss man davon ausgehen, dass nicht alle Bits korrekt übertragen werden. Dabei soll uns weniger interessieren, wo die Bit-Fehler auftauchen, als wie häufig Bits fehlerhaft übertragen werden. Der Anteil der mittleren Zahl fehlerhaft übertragener Bits an der gesamten Zahl übertragener Bits p wird als Bit-Fehler-Rate bezeichnet oder auch mit BER abgekürzt (bit error rate). Nehmen Sie an, dass nur ein Datenstrom auf dem Kanal übertragen wird und deshalb ein ACK/NACK aufgrund des kausalen Zusammenhangs jeweils eindeutig einem Datenpaket zugeordnet werden kann. Wir nehmen weiter an, dass der verwendete CRC-Code Fehler mit 100-prozentiger Sicherheit entdeckt, und dass weder Blöcke noch ACKs oder NACKs verloren gehen, d.h. der IRQ-Sender wird nie einen Timeout erfahren. Berechnen Sie nun analytisch BIRQ (BER) für das IRQ Protokoll auf dem fehlerhaften Kanal (mit Herleitung). Bemerkung: Abhängig von Ihrem Lösungsansatz kann die folgende Äquivalenz nützlich sein: ∞ X xi · (i + 1) = i=0 13 1 (x − 1)2 Musterlösung 1 Sei TRT die rountrip-Zeit, TSEN D die Übertragungszeit für ein Datenpaket und TACK die Übertragungszeit für ein ACK. Es gilt: TRT = TSEN D + TACK mit TSEN D = d + L B und TACK = d + LACK B . Weiterhin gilt BIRQ (d) = B L TRT T = L 2d + L+LACK B (d) , d.h. für BIRQ (d) wird Bmax gleich 1 erreicht. In diesem Fall darf das 2 Es gilt: Bmax = IRQ B Protokoll keinen weiteren Netzverkehr mehr erzeugen. 3 Annahme: Signalausbreitung mit c, d.h. ca. 3 · 108 m s. Schritt 1: Gesucht sei d so dass BIRQ (d) = 0.7 · B, d.h.: L 2d + L+LACK B = 0.7 · B Schritt 2: Einsetzen liefert d = 211µs, also eine Distanz von 63300m. 4 Ablauf: 1. Übertragung eines Datenpacketes 2. Senden von ACK falls fehlerfrei, von NACK falls fehlerhaft 3. Falls NACK oder fehlerhaftes ACK/NACK empfangen (fehlerhafte Bestätigungspackete können nicht mehr als ACK oder NACK identifiziert werden!), Neusenden des Datenpacketes, andernfalls fortsetzen mit nächstem Datenpacket. Bemerkung: In der Praxis ist i.d.R. die Zuordnung eines fehlerhaften Packetes zu einem Datenstrom nicht möglich, d.h. Timeouts müssen in der Praxis vorgesehen werden. Vorgehen Der gesuchte Wert BIRQ (BER) entspricht der Wahrscheinlichkeit eines erfolgreichen Packetaustausches, multipliziert mit der dann übertragenen Datenmenge geteilt durch die benötigte Zeit. Die Erfolgswahrscheinlichkeit ist nicht davon abhängig, ob es sich um einen Neuversuch handelt oder nicht. Also: BIRQ (BER) = P [Erfolg] · L 2d + L+LACK B mit P [Erfolg] = 1 − (p · (L + LACK )) D.h. BIRQ (BER) = 1 − (p · (L + LACK )) · 14 L 2d + L+LACK B Aufgabe 9: Fenstermethode In einem Programm, welches ein Sicherungsprotokoll implementiert, sind Protokolldateneinheiten durch die folgende Typenvereinbarung dargestellt: typedef struct { int Seqnr; DATA_TYPE Daten; } Pakettyp; 1 Der Sendeprozess benutzt das nachstehend in Pseudocode beschriebene Protokoll, um Datenpakete zu empfangen: int Seqnr; Pakettyp ACK,Paket; Seqnr = 0; Paket.Seqnr = Seqnr; Paket.Daten = Produziere_Daten; repeat Sende(Paket); Starte_Timer(); <Warte auf ein ankommendes ACK oder bis der Timer ablaeuft> if (Paket ist angekommen) { ACK = Empfange_Paket; Stoppe_Timer(); Seqnr = Seqnr + 1; Paket.Seqnr = Seqnr; Paket.Data = Produziere_Daten; } until (Keine Daten mehr da); <Schliesse Verbindung> 1 6 11 16 Der Empfangsprozess sieht wie folgt aus: int Seqnr; Pakettyp Paket; Seqnr = 0; repeat <Warte auf ein neues Paket> Paket = Empfange_Paket; if (Paket.Seqnr == Seqnr) { Seqnr = Seqnr + 1; Verarbeite(Paket.Daten); } Paket.Daten = "ACKNOWLEDGE"; Sende(Paket); until (Verbindung abgebrochen); 2 7 12 1. Arbeitet der Sendeprozess korrekt? Untersuchen Sie folgende Szenarien: (a) Verlust eines Datenpaketes (b) Verlust eines ACK-Paketes (c) Verzögerungen (was zu Duplikaten führen kann). Geben Sie bei jedem Szenario an, ob der Sender korrekt arbeitet oder ein Beispiel, das den Fehler illustriert! 15 2. Arbeitet der Empfangsprozess korrekt? Untersuchen Sie die gleichen Szenarien wie bei 1: Musterlösung 1 (a) Verlust eines Datenpaketes Funktioniert: Das Packet wird nach timeout unverändert neu gesendet. (b) Verlust eines ACK-Paketes Funktioniert: Funktion wie bei Verlust eines Datenpaketes (c) Verzögerungen (was zu Duplikaten führen kann). Geben Sie bei jedem Szenario an, ob der Sender korrekt arbeitet oder ein Beispiel, das den Fehler illustriert! Funktioniert nicht: ACKs werden nicht unterschieden, d.h. bei verzögertem Packet wiederholt der Sender das Datenpacket. Er erhält dann zwei ACKs für das gleiche Packet. Er interpretiert das zweite ACK aber u.U. als ACK für das nächste Datenpacket. Der unterliegende Grund ist, das der Sender die Sequenznumer des ACKs nicht auswertet. Geht dieses nächste Datenpacket nun verloren (oder ein anderes zukünftiges), so wird der Verlust vom Sender nicht erkannt. 2 (a) Verlust eines Datenpaketes Funktioniert: Der Empfänger schickt kein ACK. Das Neusenden des Datenpacketes bei fehlendem ACK ist Aufgabe des Senders. (b) Verlust eines ACK-Paketes Funktioniert: Der Empfänger muss hier nur bei wiederholtem Eintreffen eines bereits empfangenen Packetes dieses erneut bestätigen und ansonsten ignorieren. (c) Verzögerungen (was zu Duplikaten führen kann). Funktioniert: Der Empfänger muss hier nur bei wiederholtem Eintreffen eines bereits empfangenen Packetes dieses erneut bestätigen und ansonsten ignorieren. Bemerkung Die Funktion eines Sender/Empfänger Paares kann immer nur zusammen bewertet werden. Für die Zuordnung von Fehlern zu einer der beiden Komponenten muss festgestellt werden, welche verantwortlich für die Verhinderung des Problems gewesen währe. Oft können spezifische Probleme auf beiden Seiten gelöst werden, nur die Verantwortlichkeiten erlauben dann eine Zuordnung des Fehlers. Beispiel: Der Verlust eines ACK kann vom Sender durch Neusenden des Packetes behandelt werden (die übliche Lösung) oder vom Empfänger, indem, wenn nach einer gewissen Zeit keine weiteren Datenpackete eintreffen, das letzte ACK wiederholt wird, bis wieder Datenpackete eintreffen (eine ineffiziente, unübliche Lösung). 16 Aufgabe 10: Elektrische Ziege Frau Meier besitzt einen automatischen Rasenmäher, der nach dem Zufallsprinzip durch den Garten fährt und dabei den Rasen schneidet. Frau Meier hat sich eine Fernbedienung für ihre “elektrische Ziege” gebaut; es bleibt nun noch, das Kommunikationsprotokoll festzulegen. Die Funkverbindung ist bidirektional, jedoch nur halb-duplex. (Das bedeutet, dass zu jedem Zeitpunkt nur entweder der Mäher oder das Handgerät senden resp. empfangen kann.) Die Hardware bietet folgenden Möglichkeiten: Es kann eine Nachricht von 6 Zeichen Länge übertragen werden. Eine Übertragung dauert max. eine Sekunde und zwischen dem Senden zweier Nachrichten muss eine Pause von einer Sekunde eingehalten werden. Je nachdem, in welchem Bereich des Gartens die Ziege gerade an der Arbeit ist, gehen bis zu 50% der übertragenen Nachrichten verloren. Protokoll Version 1 In einem ersten Schritt programmiert Frau Meier die Geräte so, dass die Fernbedienung jeweils eines von zwei Code-Wörtern an den Mäher sendet: Code-Wort EINAUS PARKEN Bedeutung Mäher ein- resp. ausschalten Mäher parkieren Der Mäher reagiert auf diese Befehle, indem er sie ausführt. Frau Meier braucht also Sichtkontakt zum Mäher, um zu überprüfen, ob die Nachricht angekommen ist. Falls der Mäher nicht innerhalb einer Sekunde reagiert, drückt Frau Meier einfach noch einmal den gewünschten Knopf. Frau Meier kontrolliert also wie beschrieben, ob ihre Befehle ankommen und korrigiert auftretende Übertragungsfehler. Sie ist damit ebenfalls Teil des Protokolls. 1. Wie nennt sich dieses Protokoll? Musterlösung 1 Es handelt sich um ein Echoverfahren 17 Protokoll Version 2 Frau Meier hat es satt, nach jedem Tastendruck nach dem Mäher Ausschau zu halten. Sie will ein zuverlässiges Kommunikationsprotokoll in die Fernbedienung einbauen. Sie stellt sich das wie folgt vor: • Sobald auf dem Handgerät eine Taste gedrückt wird, läuft der in Abb. 4 skizzierte Nachrichtenaustausch ab • Falls das Handgerät eine Meldung **OK** empfängt, leuchtet eine grüne Lampe auf und erlischt danach wieder. • Falls die Lampe nach zwei Sekunden noch nicht leuchtet, drückt Frau Meier dieselbe Taste noch einmal. Befehl ∈ { EINAUS, PARKEN } **OK** Frau Meier Rasenmäher Abbildung 4: Nachrichtenaustausch 1. Ergibt dieses Protokoll eine zuverlässige Übertragung der Befehle zum Mäher? Begründen Sie Ihre Antwort. 2. Entspricht das Protokoll einem Sicherungsprotokoll? Falls Ja: Wie heisst das Protokoll? Falls Nein: Was fehlt diesem Protokoll im Vergleich mit einem Sicherungsprotokoll? Musterlösung 1 Nein. Es können u.a. folgende Probleme auftreten: • Die **OK**-Pakete können falsch zugeordnet werden. Falls Frau Meier ein EINAUS-Paket gesendet hatte, wird die Wiederübertragung zur gegensätzlichen Reaktion des Mähers führen. • Pakete können verfälscht werden bei der Übertragung 2 Nein. Das Protokoll ist ähnlich wie IRQ. Zu einem vollständigen Sicherungsprotokoll fehlen allerdings Folgenummern, Zeitüberwachung und Integritätsprüfung der ausgetauschten Nachrichten. 18 Protokoll Version 3 In Protokoll-Version 3 versuchen wir, die Probleme von Protokoll- Version 2 zu lösen. 1. Beschreiben Sie, wie Sie das Protokoll zu diesem Zweck erweitern würden. Musterlösung 1 • Einführen von Folgenummern in Daten und Bestätigungspaketen, so dass jedes ACK eindeutig einem bestimmten Datenpaket zugeordnet werden kann • Einführen von Prüfsummen in Daten und ACK-Paketen, so dass die Integrität gewährleistet werden kann. Dies könnte z.B. durch die Wahl von andern Nachrichten gewählt werden, die untereinander eine möglichst hohe Hamming-Distanz aufweisen. • Einführung einer automatischen Zeitüberwachung, so dass Frau Meier nicht mehr selber die Wiederübertragungen auslösen muss. 19