Technische Informatik II SS 2007

Werbung
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
Herunterladen