Netzprogrammierung (WS 2007/2008)  19538
Übungsblatt   2
Ausgabe 30.10.07
Abgabe 13.11.07 - 14°°
Aufgaben Die zu verwendende Programmiersprache ist stets JAVA!
    • Aufgabenteil 1: Implementieren Sie einen Server für das Trivial File Transfer Protocol (TFTP, spezifiziert im RFC 1350). Der Server soll alle Dateien in einem Verzeichnis bereitstellen und das RRQ-Paket akzeptieren. Die Schreibaufforderung WRQ kann ignoriert werden. Achten Sie darauf, dass nur auf Dateien in diesem Ordner zugegriffen werden kann. Kontrollieren Sie dazu, ob die übergebenen Dateinamen versuchen, auf ein anderes Verzeichnis zuzugreifen. Testen Sie Ihre Implementierung mit einem beliebigen TFTP-Klienten. Das im RFC beschriebene Feld "mode" ist für diese Implementierung "octet". Der zu verwendende Port ist 30XX.

      Aufrufsyntax: java -jar tftp-server.jar [verzeichnis]

    • Aufgabenteil 2: Implementieren Sie einen einfachen TFTP-Klienten. Der Klient muss kein interaktives Programm sein, sondern es reicht aus, wenn dem Programm mit jedem Aufruf alle notwendigen Parameter für eine Operation übergeben werden.

      Aufrufsyntax: java -jar tftp-client.jar [host] [port] [dateiname]

    • Aufgabenteil 3: TFTP unterstützt keine Operation zum Auflisten von Dateien, die ein TFTP-Server bereitstellt. Erweitern Sie Ihre Implementierung des Servers dahingehend, dass bei einer Anforderung einer Datei mit dem Namen "list" eine Textdatei mit einer zeilenweisen Auflistung aller vom Server bereitgestellten Dateien an den Klienten gesendet wird.

      Aufrufsyntax: java -jar tftp-client.jar [host] [port] list


  1. Erstellen Sie einen Webserver, der eine Testseite generiert, die die vom Client gesendeten Header in hübschem HTML optisch ansprechend und bunt (KEIN schwarz-weiss) wiedergibt. Testen Sie Ihren Webserver mit verschiedenen Webbrowsern und schauen Sie sich mal an, was da so gesendet wird. Schreiben Sie auch einen eigenen Client, der je nach Anfrage (GET, HEAD) die vom Server gesendeten Header und den Inhalt der geforderten Seite als Text in der Kommandozeile ausgibt. Schauen Sie sich diesmal an, was für Header von verschiedenen Servern gesendet werden.
  2. Aufrufsyntax:
    java -jar echoserver.jar
    java -jar echoclient.jar get [adresse]
    java -jar echoclient.jar head [adresse]

    Lassen Sie Ihren Webserver auf einem Uniserver laufen und teilen Sie uns und den anderen Gruppen die Adresse über die Mailingliste mit. Die zu verwendende Portnummer für Ihren Server ist wie immer 30XX, wobei XX Ihre Gruppennummer ist.
 

Die Abgabe der Lösungen erfolgt auf zwei Wegen
  • Abgabe auf Papier:
Bitte schreiben Sie zur jeder Aufgabe eine Dokumentation, in der Sie anhand von *relevanten* Codefragmenten Ihre Implementierung erläutern. Die Codefragmente sollten möglichst kurz gehalten werden und nur der Orientierung für den Leser dienen; entscheidend sind Ihre Erläuterungen, was diese Fragmente machen und wieso Sie sich für diese Art der Implementierung entschieden haben. Erläutern Sie auch, welche Art der Fehlerbehandlung Sie vorgenommen haben, insbesondere bezüglich der Fehler, die erst bei verteilten Systemen auftreten. Die Dokumentation ist in den Fächern der Tutoren abzugeben.  
  • Abgabe per E-Mail:
Schicken Sie ein Archiv an Ihren Tutor, welches den vollständigen Quellcode sowie ausführbare JAR-Dateien für die jeweiligen Aufgabenteile enthält. Der Betreff der E-Mail sollte wie folgt anfangen: "[ALP5] Gruppe X ....".
 

Diskussionsaufgaben, die nicht als Abgabe beantwortet werden sollen.Wir diskutieren sie in der Übung, Sie sollten sich im Rahmen dieser Aufgaben auf die Klausur vorbereiten.

Block Internetdienste
  1. Wo und von wem werden Internet Protokolle definiert?
  2. Nennen Sie 4 Dienstprotokolle des Internet.
  3. Wodurch sind Internet Protokolle definiert?
  4. Wie funktioniert das Versenden einer Mail im Internet protokollseitig?
  5. Wie spielen FTP-Server und -Klienten zusammen?

Block HTTP I
  1. Wie ist die Interaktion zwischen Dienstnutzer und -erbringer in HTTP?
  2. Nennen Sie zwei wichtige Unterschiede zwischen HTTP und FTP
  3. Wie ist eine HTTP Anfrage aufgebaut?
  4. Nennen Sie drei in HTTP definierte Methoden.
  5. Nennen Sie drei Header die in einer HTTP Anfrage auftreten können und ihre Bedeutung.
  6. Wie ist eine HTTP Antwort aufgebaut?
  7. Nennen Sie drei Header die in einer HTTP Antwort auftreten können und ihre Bedeutung.
  8. Nennen Sie drei wichtige Antwortcodes in HTTP und ihre Bedeutung
  9. Was bewirkt die Benutzung des If-modified-since Headers?
  10. Was sind MIME-Typen? Nennen und beschreiben Sie drei Beispiele.
  11. Was ist SSL und was ist https? Wie realisiert man https-Nutzungen in Java?