Chapter 2-Application Layer--Homework (translateback

  1. What is the typical two parts in a network application protocol?

  2. What does socket means in the Internet context?

  3. How many user agent do you use daily in the Internet?

  4. What is the most important three factors should be taken into account in the Internet application services?

  5. How many transport protocols can be provided on the Internet? Please state the application protocols supported by the different transport protocols.

  6. Please describe the main components in the Web application.

  7. Please compare the difference between HTTP and FTP.

  8. Please compare the difference between SMTP and FTP.

  9. Please compare the difference between SMTP and POP3.

  10. None of us directly use DNS, Why it is said that the DNS is an application protocol?

Homework Problems and Discussion Questions

Chapter 2

Review Questions

Section 2.1

1) List five non-proprietary Internet applications and the application-layer protocols that they use.

2) For a communication session between two hosts, which host is the client and which is the server?

3) What information is used by a process running on one host to identify a process running running on another host?

4) List the various network-application user agents that you use on a daily basis.

5) Referring to Figure 2.1-2, we see that not none of applications listed in the table require both "no data loss" and "timing". Can you conceive of an application that requires no data loss and that is also highly time sensitive?

Sections 2.2-2.5

6) What is meant by a handshaking protocol?

7) Why do HTTP, FTP, SMTP, POP3 and IMAP run on top of TCP rather than UDP?

8) Consider an e-commerce site that wants to keep a purchase record for each of its customers. Describe how this can be done with HTTP authentication. Describe how this can be done with cookies.

9) What is the difference between persistent HTTP with pipelining and persistent HTTP without pipelining? Which of the two is used by HTTP/1.1?

10) Telnet into a Web server and send a muli-line request message. Include in the request message the If-modified-since: header line to force  a response message with the 304 Not Modified status code.

11) Why is it said that FTP sends control information "out of band"?

12) Suppose Alice with a Web-based e-mail account (such as Yahoo! mail or Hotmail) sends a message to Bob, who accesses his mail from his mail server using POP3. Discuss how the message gets from Alice's host to Bob's host. Be sure to list the series of application-layer protocols that are used to move the message between the two hosts.

13) Suppose that you send an e-mail message whose only data is a Microsoft Excel attachment. What might the header lines (including MIME lines) look like?

14) Print out the header of a message that you have recently received. How many Recieved: header lines are there? Analyze each of the header lines in the message.

15) From a user's perspective, what is the difference between the download-and-delete mode and the download-and-keep mode in POP3?

16) Redraw Figure 2.5-4 for when all queries from the local nameserver are iterative.

17) Each Internet host will have at least one local name server and one authoratative name server. What role does each of these servers have in DNS?

18) Is it possible that an organization's Web server and mail server have exactly the same alias for a hostname (e.g., foo.com)? What would be the "type" for the RR that contains the hostname of the mail server?

19) Use nslookup to find a Web server that has multiple IP addresses. Does the Web server of your institution (school, company, etc.) have multiple IP addresses?

Sections 2.6-2.9

20) The UDP server described in Section 2.7 only needed one socket, whereas the TCP server described in Section 2.6 needed two sockets. Why? If the TCP server were to support n simultaneous connections, each from a different client host, how many sockets would the TCP server need?

21) For the client-server application over TCP described in Section 2.6, why must the server program be executed before the client program? For the client-server application over UDP described in Section 2.7, why may the client program be executed before the server program?

Problems

1) True or false.
    a) Suppose a user requests a Web page that consists of some text and two images. For this page the client will send one request message and recieve three response messages?

    b) True or false. Two distinct Web pages (e.g., www.mit.edu/research.html and www.mit.edu/students.html) can be sent over the same persistent connection?

    c) With non-persistent connections between browser and origin server, it is possible for a single TCP segment to carry two distinct HTTP request messages?

    d) The Date: header in the HTTP response message indicates when the object in the response was last modified?

2) Read RFC 959 for FTP. List all of the client commands that are supported by the RFC.

3) Read RFC 1700.  What are the well-known port numbers for the "simple file transfer protocol" (sftp)? For the "network news transfoer protocol" (nntp)?

4) Suppose within your web browser you click on a link to obtain a web page. Suppose that the IP address for the associated URL is not cached in your local host, so that a DNS look up is necessary to obtain the IP address. Suppose that n DNS servers are visited before your host receives the IP address from DNS; the successive visits incur a RTT of RTT1, ..., RTTn. Further suppose that web page associated with the link contains exactly one object, a small amount of HTML text. Let RTT0 denote the RTT between the local host and the server containing the object. Assuming zero transmission time of the object, how much time elapses from when the client clicks on the link until the client receives the object.

5) Referring to question (4), suppose the page contains three very small objects. Neglecting transmission times, how much time elapses with (a) nonpersistent HTTP with no parallel TCP connections, (b) nonpersistent HTTP with parallel connections, (c) persistent HTTP with pipelining.

6) Two HTTP request methods are GET and POST. Are there any other methods in HTTP/1.0? If so, what are they used for? How about HTTP/1.1 ?

7) Write a simple TCP program for a server that accepts lines of input from a client and prints the lines onto the server's standard output. (You can do this by modifying the TCPServer.java program in the text.) Compile and execute your program. On any other machine which contains a Web browser, set the proxy server in the browser to the machine in which your server program is running; also configure the port number appropriately. Your browser should now send its GET request messages to your server, and your server should display the messages on its standard output. Use this platform to determine whether your browser generates conditional GET messages for objects that are locally cached.

7) Read the POP3 RFC, RFC 1939.  What  is the purpose of the UIDL POP3 command?

8) Install and compile the Java programs TCPClient and UDPClient on one host and TCPServer and UDPServer on another host.

    a) Suppose you run TCPClient before you run TCPServer. What happens? Why?
    b) Suppose you run UDPClient before you run UDPServer. What happens? Why?
    c) What happens if you use different port numbers for the client and server sides?
9) Rewrite TCPServer.java so that it can accept multiple connections. (Hint: You will need to use threads.)
 

Discussion Questions

1) What is a CGI script? Give examples of two popular Web sites that use CGI scripts. Explain how these sites use CGI. Which languages are CGI scripts typically written in?

2) How can you configure your browser for local caching? What kinds of options do you have?

3) Can you configure your browser to open multiple simultaneous connections to a Web site? What are the advantages and disadvantages of having a large number of simultaneous TCP connections?

4) Discussion question: Consider SMTP, POP3 and IMAP. Are these stateless protocols? Why or why not?

5) We have seen that Internet TCP sockets treat the data being sent as a byte stream but UDP sockets recognize message boundaries.  What is one advantage and one disadvantage of byte-oriented API versus having the API explicitly  recognize and preserve application-defined message boundaries?

6) Would it be possible to implement a connection-oriented service  (e.g., SMTP or HTTP) on top of a connectionless service? What would be some of the difficulties involved in doing so, and  how could these be overcome?