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:
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.
5
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.
6
Aufgabe 5:
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!
7
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).
8
Herunterladen