Prof. Dr. Franz Schweiggert Institut für Angewandte Informationsverarbeitung 9. Juli 2009
Michael Mattes Blatt 11


[c]



Systemnahe Software (II)
im Sommersemester 2009



Abgabetermin: 15. Juli 2009

Hinweis: ACM Local Contest 2009 am Freitag, 17.07.2009

Von der Webseite des Wettbewerbs:

Die Association for Computing Machinery (ACM), die größte Informatikervereinigung der Welt, veranstaltet jährlich eine Programmierweltmeisterschaft für Studenten. Hierzu werden zunächst lokale, dann regionale Wettbewerbe ausgetragen. Die besten der Welt treffen schließlich bei den World Finals im Frühjahr 2010 in Harbin, China aufeinander.

Im November 2009 findet in Nürnberg der ACM Northwestern European Regional Programming Contest statt, an dem Universitäten aus Belgien, Dänemark, Deutschland, Finnland, Großbritannien, Irland, Island, Luxemburg, den Niederlanden, Norwegen und Schweden teilnehmen werden. Die Uni Ulm, die sich 1996-2004 neunmal hintereinander für die WM qualifizierte, sucht auch dieses Jahr wieder 12 Top-Programmierer, aus denen dann unsere drei Teams für den Regional Contest gebildet werden. Deswegen wird am Freitag, den 17. Juli 2009 ein universitätsinterner Programmierwettbewerb stattfinden.

Das Anmeldeformular und weitere Informationen sind unter
http://www.informatik.uni-ulm.de/acm/Locals/2009/ zu finden.

43 Das Domain Name System (10 Punkte)

Oder: Warum ich mir lieber www.kame.net statt 2001:200:0:8002:203:47ff:fea5:3085 merke. In dieser Aufgabe sollen Sie sich kurz mit den Grundlagen des Domain Name Systems vertraut machen. Lesen Sie hierzu Ausschnitte aus dem entsprechenden Wikipedia-Artikel
http://de.wikipedia.org/wiki/Domain_Name_System und den dort verlinkten Artikeln. Sie müssen nicht den ganzen Artikel lesen, aber folgende Fragen sollten Sie beantworten können:

- Wie ist der Internet-Namensraum unterteilt?
- Welche Vorteile bietet das DNS gegenüber der Verwendung von IP-Adressen?
- Welches sind die wichtigsten Eigenschaften des DNS? (Erweiterbarkeit wäre ein Beispiel!)
- Aus welchen Komponenten besteht das DNS?
- Was ist ein FQDN?
- Was ist eine Zonendatei?
- Was ist ein Resource Record (RR)?
- Was sagen die RR-Typen A bzw. NS aus?
- Welches ist der wichtigste RR-Typ für den Mailverkehr?
- Was ist eine Top-Level-Domain (TLD)?
- Wozu dienen die Root-Nameserver?
- Wie läuft eine DNS-Namensauflösung prinzipiell ab?
- Was würde geschehen, wenn alle Root-Nameserver längere Zeit ausfielen?
- Wie müsste man (technisch!) vorgehen, wenn man eine neue TLD uulm einführen wollte?

44 Wieviel wiegt ein Datagramm? (5 Punkte)

Lesen Sie sich etwas in das UDP-Protokoll ein und versuchen Sie, folgenden Fragen zu beantworten:

- Was sind die Vorteile von UDP gegenüber TCP?
- Was sind die Nachteile von UDP gegenüber TCP?
- Für welche Dienste wird UDP verwendet? (Nennen Sie mindestens die Dienste mit den Portnummern 53 und 123)
- Welche Funktionen sind für die Kommunikation via UDP wichtig?
- Ist es sinnvoll, einen UDP-Server ohne Concurrency zu programmieren? Warum (nicht)?

45 UDP-Zeitserver (5 Punkte)

Bauen Sie das Programm sockettime.c aus der letzten Aufgabe so zu udptime.c um, dass es über UDP lauscht. Das neue Programm soll NICHT auf quit warten, sondern sich direkt der nächsten Anfrage widmen.

46 UDP-Zeitclient (3+2 Punkte)

Bauen Sie das Programm timec.c auch auf UDP um und nennen Sie es udptimec.c. Begründen Sie, warum das Senden von quit über UDP nicht sinnvoll ist und lassen Sie den Sendeteil weg.

47 Das Protokoll der Zukunft(?) (5 Punkte)

In dieser Aufgabe geht es um das alte IP-Protokoll (in Version 4, daher IPv4) und dessen Nachfolger. Nachdem die Protkollnummer 5 vom (nicht verwendeten) Internet Stream Protocol belegt ist, bekam der Nachfolger eben die Nummer 6 und wurde als IPv6 bekannt. Machen Sie sich mit den Grundlagen von IPv6 vertraut, indem Sie entsprechende Artikel suchen und lesen. Folgendes sollten Sie beherrschen:

- Aus wie vielen Bytes besteht eine IPv6-Adresse? Wie sieht es bei IPv4 aus?
- Wie wird eine IPv6-Adresse angegeben? Welche Kürzel gibt es dabei?
- Welche Bedeutung hat der Scope einer IPv6-Adresse?
- Welcher DNS-RR-Typ wird für IPv6-Adressen verwendet (analog zum A-Record bei IPv4)?

48 Protokollunabhängige Socket-Programmierung (10 Extrapunkte)

Diese Aufgabe ist freiwillig. Schicken Sie die Lösung bitte direkt per Mail an mich. - Michael Mattes

Schreiben Sie ein Programm dualstack.c, welches sich per TCP zum Rechner und Port verbindet, der auf der Kommandozeile angegeben ist. Dabei soll das Programm sowohl Hostnamen als auch IPv4-Adressen als auch IPv6-Adressen verarbeiten können. Sobald die Verbindung zustande gekommen ist, soll das Programm Ihren Benutzernamen aus einer Umgebungsvariable lesen und ihn an den entfernten Server schicken. Danach soll es lesen, was der Server antwortet, diese Antwort auf der Standardausgabe ausgeben und den Socket schliessen.

Um zu erfahren, wie man man so ein prokollunabhängiges Programm schreibt, können Sie die Hinweise und Beispiele auf der Webseite
http://jungla.dit.upm.es/~ecastro/IPv6-web/ipv6.html lesen.

Zum Testen habe ich auf theseus einen dazu passenden Server auf Port 13111 gestartet, der auf allen IP-Adressen lauscht. Sie können zum Beispiel den Hostnamen theseus.mathematik.uni-ulm.de, die IPv4-Adresse 134.60.54.12 oder die IPv6-Adresse fe80::214:4fff:fe3e:a1f0 verwenden. Beachten Sie, dass die IPv6-Adresse nur den Scope Link-Local hat und somit nur von theseus selbst oder z.B. turing erreichbar ist. Das Programm telnet funktioniert wie netcat und unterstützt auch IPv6.

Viel Erfolg!



Michael Mattes 2009-07-09