CMPSCI 677 (Spring 2007): Homework 3

Due: In-Class, Thursday, Mar 15 2007
Off-campus students: one week from when you view Lecture ?
Web posted: Tuesday, Mar 8 2007

  1. In many layered protocols, each layer has its own header. Surely it would be more efficient to have a single header at the front of each message with all the control in it than all these separate headers. Why is this not done?

  2. C has a construction called a union, in which a field of a record (called a struct in C) can hold any one of several alternatives. At run time, there is no sure-fire way to tell which one is in there. Does this feature of C have any implications for remote procedure call? Explain your answer.

  3. Describe how connectionless communication between a client and a server proceeds when using sockets.

  4. Suppose that you could make use of only transient synchronous communication primitives. How would you implement primitives for transient asynchronous communication?

  5. Does it make sense to implement persistent asynchronous communication by means of RPCs?

  6. Explain why transient synchronous communication has inherent scalability problems, and how these could be solved.

  7. What is a major drawback of recursive lookups when resolving a key in a DHT-based system?

  8. A special form of locating an entity is called anycasting, by which a service is identified by means of an IP address (see, for example, Sending a request to an anycast address, returns a response from a server implementing the service identified by that anycast address. Outline the implementation of an anycast service based on the hierarchical location service described in Sec. 5.2.4 (Sec. 4.2.4 for the old version).

  9. How is a mounting point looked up in most UNIX systems?