1. A client sends a 500 byte request message to a service, which produces a response containing 2000 bytes. Estimate the total time required to complete the request in each of the following cases, with the performance assumptions listed below: a. Using connectionless (datagram) communication (for example, UDP); b. Using connection-oriented communication (for example, TCP); Some statistics and assumption Latency per packet (local or remote, incurred on both send and receive): 10ms Connection setup time (TCP only): 10ms Data transfer rate: 5 Mbps Maximum Transmission Unit (MTU, i.e., maximum packet size): 1000 bytes Server request processing time: 20ms Assume that the network is lightly loaded. (We have a similar example discussed in class. You need to understand how interactions happen and what the steps are in each of the cases.) 2. UDP or TCP, which one is more appropriate for the following protocols? And briefly justify your answers. a. Virtual terminal access, e.g., Telnet. b. File transfer, e.g., FTP c. User location, e.g. rwho, finger d. Information browsing, e.g., HTTP e. Remote procedure call (Think about what you do with the applications built on top of these protocols) 3. An idempotent operation is an operation that can be performed repeatedly with the same effect as if it has been performed exactly once. It is an important concept for handling duplicated requests. Discuss whether the following operations are idempotent a. Pressing a lift (elevator) request button; b. Writing data to a file; c. Appending data to a file. Briefly justify why they are or are not. 4. Discuss the invocation semantics (maybe, at-most-once, or at-least-once) that can be achieved when the request-reply protocol is implemented over a TCP connection, which guarantees thatdata is delivered in the order sent, without loss or duplication. However, the connection can be broken, caused by either the server crashes or the network crashes. The client cannot distinguish which crash causes the broken connection. Please analyze the scenarios and see which of the three semantics can be achieved (hint: analyze what happens in the normal case and in the broken connection case, and then conclude). 5. Describe whether the three methods: group communication, pub-sub systems, and message queue are space coupled or uncoupled, time coupled or uncoupled, with the implementations discussed in the class. If they are space or time coupled, how to make them space and time uncoupled with your design? 6. Check the textbook about the definition of asynchronous and time-uncoupled communication. If a communication paradigm is asynchronous, is it also time-uncoupled? Explain your answer with examples as appropriate. 7. The WeChat app allows a user to send a message to any of his/her friends even when the friend is not online. Once the friend is online, he/she will get a notification. Is this communication paradigm space/time coupled or not? Justify your answer. What is your design to make this possibly happen? Briefly describe and justify your design.