Abt. Verteilte Systeme 10.5.99

Fakultät für Informatik

Universität Ulm

4. Übungsblatt zur Vorlesung

"Verteilte Systeme I"

Sommersemester 99

 

 

  1. Kommunikationsmodelle

  1. Ports sind eine Form der indirekten Adressierung. Aus welchen Gründen benötigt ein Prozeß evtl. mehrere Ports? Warum kann es sinnvoll sein, wenn an einem Port mehrere Prozesse empfangen? Nennen Sie je ein Beispiel aus der Internet-Welt.
  2. Wann würden Sie ein blockierendes send verwenden und wann ein nicht-blockierendes?
  3. Bei einem TCP LISTEN Socket werden eingehende Verbindungswünsche von Clienten solange in einem sog. Backlog gepuffert, bis der Serverprozeß diese mit einem accept() annimmt. Was ist daran problematisch? Welche alternative Lösung gäbe es?
  4. Wie würden Sie Datagramm-/Rendezvous-orientierte Kommunikation und einen asynchronen bzw. synchronen entfernten Diensteaufruf unter Verwendung der socket Schnittstelle realisieren? Nennen Sie je ein Beispiel für eine typische Anwendung.
  5. Nennen Sie je einen typischen Anwendungsfall für die Fehlersemantiken Maybe, At-Least-Once, At-Most-Once und Exactly-Once.

  1. Programmieraufgabe

Erweitern Sie den Cookie Server aus der letzten Aufgabe zu einem einfachen WWW Server. Dieser erhält Anfragen der Form:

GET /directory/file.html HTTP/1.0

Header1: Value

Header2: Value

...

<CR><LF>

Eine solche Anfrage beantwortet der Server mit folgender Antwort:

HTTP/1.0 200 OK

Content-Type: text/html

Content-Length: <Länge des Files in Octets>

<CR><LF>

<Inhalt des Files>

Implementieren Sie einen Server, der für die Bearbeitung eines Requests jeweils einen separaten Kind-Prozeß erzeugt. Dies geschieht unter Unix mittels des fork(2) Aufrufs.