Netzprogrammierung (WS 2007/2008)  19538
Übungsblatt  3
Ausgabe 13.11.07
Abgabe 27.11.07 - 14°°
Aufgaben

  1. Bitte erweitern Sie Ihren Webserver, so dass dieser eine Testseite generiert (die Testseite ist beliebig zu gestalten) und dabei eine Statistik über die Häufigkeit von Anfragen und die verwendeten Browser über alle 24 Stunden eines Tages führt.
    Ihr Server soll gleichzeitig auf einem anderen Port eine https-Seite anbieten, auf der die jeweils aktuelle Statistik dargestellt wird. Mailen Sie an die NP-Mailingliste, wenn Sie Ihren Server aktiviert haben. Reagieren Sie selber auf solche Mailings mit einem Testbesuch. Auf diese Weise sollen die Statistiken gefüllt werden, und eine hinreichende Vielfalt von Browsertypen ermittelt werden können. Speichern Sie die Informationen jeweils stabil ab, damit sie nicht verloren gehen, wenn Sie Ihren Server neustarten müssen. Die Logdateien für verschiedene Tage sollen nicht überschrieben werden. Verwenden Sie ausschliesslich die Java-Bibliotheken zur Socketkommunikation, und keine weiteren Bibliotheken.

    Beispiel für eine Statistik:

    • 0-1h: 10x Mozilla.., 3x Mozilla.., 2x IE..
    • 1-2h: 5x Mozilla.., 3x Konqueror..

  2. Die Resource http://www.ag-nbi.de/lehre/0708/V_NP/geheim5/geheim.txt ist durch ein Password nach dem Basic Authentification Scheme geschützt. Schreiben Sie ein Programm, das herausfindet, ob der notwendige Nutzername TinkyWinky, Dipsy, Lala oder Po heisst und das Passwort blau, gelb, gruen oder rot lautet.

  3. Bitte schreiben Sie einen Linkchecker. Das Programm soll in einer Textdatei eine Liste von URLs erhalten (eine URL pro Zeile) und testen, ob sie zugreifbar sind. Das Programm soll jeweils ausgeben, ob der Zugriff möglich ist, oder eine möglichst detaillierte Fehlerbeschreibung ausgeben. Bitte testen Sie das Programm anhand dieser Liste:
    • http://www.spiegel.de
    • http://www.inf.fu-berlin.de
    • http://www.inf.fu-berlin.de/inst/ag-nbi/np/index.html
    • http://www..focus.de
    • ftp://ftp.inf.fu-berlin.de
    • ftp://ftp.inf.fu-berlin.de/frei/README
    • gropher://ftp.inf.fu-berlin.de
    • http://www.ag-nbi.de/lehre/0708/V_NP/b5/index.html

  4. Bitte erstellen Sie einen kleinen Webserver, der einen Dienst wie springhin.de realisiert. Der Webserver stellt eine Webseite bereit, auf der man die Möglichkeit zum Eintragen einer externen URL unter einem Kürzel (z.B. meine-url) hat (eben genauso wie bei springhin.de). Beim Aufruf von http://meineserveradresse/meine-url soll mit geeigneten HTTP-Mechanismen bewirkt werden, dass der Browser die hinterlegte externe URL lädt und anzeigt.

  5. Bitte bauen Sie ein Zählerobjekt mit Hilfe eines kleinen Webservers und Cookies. Der Zählerstand soll mittels Cookies beim Browser gehalten werden. Der Webserver inkrementiert diesen Zähler bei Aufruf einer bestimmten Seite (und zeigt den Zählerstand auf dieser Seite an).

  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 HTTP Interaktion
  1. Wie läuft Authentifizierung in HTTP ab, welche Antwortcodes und Header sind dabei relevant?
  2. Mit welchen zwei HTTP Nutzungsarten überträgt man Formulardaten zu einem Skript?
  3. Wie realisiert man das jeweils in Java?
  4. Wie ist ein Query-String aufgebaut?
  5. Wozu braucht man Zustand in HTTP-Interaktionen?
  6. Was ist eine Session?
  7. Wie kann meine eine eindeutige Session-ID erzeugen?
  8. Wie funktioniert das Cookie-Verfahren und welche HTTP-Header werden dabei benutzt?
  9. Welche Verfahren zur Festlegung einer Session-ID gibt es daneben noch und wie funktionieren sie?
Block HTML und Verarbeitung
  1. Was ist HTML und woraus besteht es?
  2. Nennen und  beschreiben Sie drei in HTML definierte Entitäten
  3. Was sind Links und woraus bestehen sie?
  4. Wie sieht die Struktur von HTML-Seiten immer aus?
  5. Nennen und beschreiben Sie je zwei HTML-Elemente zur Markierung von Schriftvarianten, Überschriften und Aufzählungen.
  6. Wie sind HTML-Formulare aufgebaut?
  7. Mit welchen HTML-Elementen werden Objekte, Bilder etc. in HTML-Seiten eingebettet?
  8. Wie kann man auf einfache Weise in Java HTML Seiten verarbeiten?
  9. Was passiert bei einem Callback-Parser, wenn er ein HTML-Element erkannt hat?
  10. Was ist der Zusammenhang zwischen HTML und XML?

Block XML
  1. Warum wurde XML entwickelt und nicht einfach ein HTML6 definiert?
  2. Was ist der Unterschied zwischen PCDATA und CDATA in XML?
  3. Wie wird CDATA ausgezeichnet?
  4. Welche Fehler sind in diesem XML Dokument:
    <?xml standalone="yes">
    <tel>0233/2938293<tel>
    <tel>3003-22424</Tel>
    <tel:fax>3003-2242</tel:fax>
    <tel loc=home>030/99333993</tel>