Abt. Verteilte Systeme 10.5.99
Fakultät für Informatik
Universität Ulm
4. Übungsblatt zur Vorlesung
"Verteilte Systeme I"
Sommersemester 99
Kommunikationsmodelle
- 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.
- Wann würden Sie ein blockierendes send verwenden und wann ein nicht-blockierendes?
- 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?
- 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.
- Nennen Sie je einen typischen Anwendungsfall für die Fehlersemantiken Maybe, At-Least-Once, At-Most-Once und Exactly-Once.
- 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.