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.
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.
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?
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.
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.
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!