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


[c]



Systemnahe Software (II)
im Sommersemester 2009



Abgabetermin: 01. Juli 2009

Hinweis zu den Übungspunkten: Dies ist das letzte Blatt, welches für die Zulassung zur Bachelorprüfung betrachtet wird. Für alle anderen werden jedoch auch die Punkte der weiteren Blätter betrachtet.

33 Das Hypertext Transfer Protocol (5 Punkte)

Lesen Sie sich ein wenig in das Hypertext Transfer Protocol ein, zum Beispiel über den entsprechenden Wikipedia-Artikel (oder durch das RFC 2616, falls Ihnen das etwas sagt). Sie sollten Ihrem Tutor mindestens folgende Fragen beantworten können:
Welches Netzwerkprotokoll und welche Portnummer verwendet HTTP?
Welches sind die am häufigsten verwendeten Anfragearten (auch Request-Methoden genannt)?
Wie ist denn eine HTTP-Nachricht aufgebaut?
Welchen Aufbau hat ein Eintrag im Nachrichtenkopf?
Wie könnte ein einfacher GET-Request in HTTP Version 1.1 aussehen?
Wie können Anfrageparameter in GET-Requests angegeben werden?
Wie geht dies bei POST-Requests?
Zuletzt sollten Sie auch noch die Bedeutung folgender Statuscodes kennen: 100, 200, 301, 302, 401, 403, 404, 500.

34 Das Simple Mail Transfer Protocol (10 Punkte)

Analog zu HTTP sollen Sie auch das SMTP-Prokoll kennenlernen, welches für den Versand von täglich mehr als 100 Milliarden (sic!) E-Mails - von denen mehr als 95% Spam sind -verantwortlich ist. Lesen Sie zumindest den Wikipedia-Artikel zu SMTP und versuchen Sie, folgende Fragen zu beantworten:
Welches Protokoll und welche Portnummern werden von SMTP verwendet?
Welche Kopfzeilen besitzt eine E-Mail üblicherweise?
Wie sieht ein einfacher SMTP-Dialog zwischen zwei Mailservern aus?
Warum ist es so schwierig, Spam einzudämmen?
Welche Methoden der Spambekämpfung werden zur Zeit eingesetzt?
Wie verlässlich sind Kopfzeilen einer Mail?
Was ist ein ``Open Relay''?
Nennen Sie drei Authentifizierungsmethoden für ESMTP.
Wie wird festgestellt, welcher Mailserver für eine bestimmte Domain zuständig ist?

Anwendung von netcat

Mit diesen Aufgaben sollen Sie sich mit dem Werkzeug netcat (Name der ausführbaren Datei: nc) beschäftigen. Falls auf dem System, das Sie verwenden, keine Manpage für nc installiert ist, erhalten Sie einen Kurzüberblick mit der Eingabe von nc -h.

Beachten Sie dabei, dass sich die auf verschiedenen Rechnern installierten Versionen von nc teilweise erheblich in ihrem Umfang und ihren Möglichkeiten unterscheiden.

35 Menschlicher Browser (6 Punkte)

Verwenden Sie netcat, um einen vom Tutor vorgegebenen URL ``von Hand'' via HTTP Version 1.1 abzurufen. Beachten Sie dabei die Antwort des HTTP-Servers und verändern Sie Ihre Anfrage gegebenenfalls. Geben Sie im Kopf Ihrer Anfrage an, dass der Webserver nach Beantwortung der Anfrage die Verbindung beenden soll.

36 Klartext-Zeitserver (7 Punkte)

Schreiben Sie ein Programm nctime.c, das auf einer von Ihnen festgelegten TCP-Portnummer lauscht und auf ein beliebiges Zeichen wartet. Sobald ein Zeichen empfangen wird, soll das Programm mit der aktuellen Uhrzeit (optional auch mitsamt Datum) antworten und die Verbindung beenden. Danach soll nctime.c erneut auf dem gleichen Port auf die nächste Anfrage warten.

Realisieren Sie das Lauschen mit Hilfe von nc, welches via exec gestartet werden soll. Überlegen Sie sich eine Möglichkeit, die übers Netzwerk zu verschickenden Daten bequem an nc weiterzugeben.

37 Dateiübertragung via netcat (12 Punkte)

Schreiben Sie zwei Programme filesrv.c und filecli.c, mit deren Hilfe eine Datei übers Netzwerk übertragen werden kann. Beide Programme sollen nc zur Netzwerkkomunikation verwenden. filesrv.c soll auf der Kommandozeile den Namen der zu verschickenden Datei sowie die Portnummer erhalten, während filecli.c den Namen der Zieldatei, den Hostnamen sowie die Portnummer erhält. Nach der Übertragung sollen sich beide Programme mit einer Erfolgsmeldung beenden.

Viel Erfolg!



Michael Mattes 2009-06-24