Homework 4
1 Instructions:
Complete all of the steps below and answer all of the questions (each of
which is enclosed in a box). Only submit your answers to the questions.
2 Steps and Questions:
-
Read about the Time Service
(RFC 868).
-
What port does the time service run on?
-
What does this mean?
-
Read about the
NIST Time Servers.
-
What does NIST stand for?
-
What is the minimum time between queries that the NIST Internet Time
Service allows?
-
Download the following two Java applications (you only need the
bytecode but may be interested in the source code as well):
-
Make sure you can run both applications from the command
line (i.e.,
java UDPTimeClient time.nist.gov
and
java TCPTimeClient time.nist.gov
where
time.nist.gov
is the host/server).
If you have problems you should find another host/server
that supports the Time Service (e.g., www.ustiming.org
).
-
Start Wireshark, choose an appropriate device/interface, and filter
for UDP.
-
Start a live capture.
-
Why might Wireshark be capturing some UDP packets even though you haven't
executed the UDPTimeClient.
-
Execute the UDPTimeClient.
-
Stop the capture.
-
Why was DNS used?
-
What can you learn by looking at the UDP datagrams related to DNS?
-
Given the description of the protocol in the RFC, how many UDP
datagrams would you expect to capture as a result of executing the
UDPTimeClient (ignoring those related to DNS)?
-
Why might you capture only one UDP datagram?
-
What port on the client was used for the request?
-
What port on the client was the response sent to?
-
Clear the existing filter and start filtering for TCP.
-
Start a live capture.
-
Execute the TCPTimeClient.
-
Stop the capture.
(Note: If the application "times out", repeat the last three steps.)
-
Find the first segment of the connecttion.
-
How do you know it's the first segment?
-
What are the next two segments of this connection?
-
What is the next segment of this connection? (Note: Make sure you
look at the next TCP segment.) What are the
Seq
and Ack
values?
-
What is the next segment of this connection?
What are the
Seq
and Ack
values?
Why?
-
How is the connection closed?
-
Clear the existing filter and start filtering for HTTP.
-
Start a live capture.
-
In a browser tab/window, load the URL
http://w3.cs.jmu.edu/bernstdh/cs460/helloworld.html
-
Stop the live capture.
-
Select the GET request.
-
What TCP port was used on the client?
-
Start a live capture.
-
In a browser tab/window, load the URL
http://w3.cs.jmu.edu/bernstdh/cs460/grimm.html
-
Stop the live capture.
-
Select the response. (Hint: First find the GET request, then find a
response from the server to the client with a code of 200 and
a content type of text/html.)
-
What is the Content-Length of the HTTP response?
-
Is that the entire length of the HTTP response?
-
How many TCP segments were used to transmit the response, how long
were most of the segments, and what was the total length of all of
the TCP segments?
-
Select a TCP segment.
-
Click on Statistics-TCP StreamGraph-RTT Graph
-
What were the smallest and largest RTTs?
-
In a browser tab/window, load the URL
http://www.gutenberg.org/files/2591/2591-h/2591-h.htm
-
What Content-Encoding was used in the response?
-
What is the Content-Length of the HTTP response?
-
After the content was decoded, how big was it?
-
What software performed the decoding and when?
-
What are the implications of the encoding/decoding process for
the network?