This exercise is intended to show your understanding of TCP.
A simple listener which accepts connections and returns data is provided (listen.pl), although you are welcome to write your own instead. Its first argument is a port number; its second argument, if numeric, is a blocksize to be used when sending data, and subsequent arguments are files which are transmitted to any caller. If the blocksize is 128 or less, a delay is introduced between each write(). You can run this code on your own machines (note: running it via loopback, 127.0.0.1 or ::1, will not provide interesting results) but it will be available on the following ports:
Machine |
Port |
Filesize |
Blocksize |
chargen.batten.eu.org |
4001 |
4096 |
4096 |
chargen.batten.eu.org |
4002 |
65536 |
65536 |
chargen.batten.eu.org |
4003 |
65536 |
64 |
Using this daemon, or something similar, and either the telnet command or anything you want to write yourself, establish connections while using tcpdump, ethereal, wireshark or similar to capture packets.
Part 1
Choose or create a file of about four kilobytes. Capture a trace of connecting to the daemon and sending that file. Annotate the packet trace to show the initial exchange that establishes the connection, the final exchange which closes it down, and the bulk data transfer.
Explain the chosen values for the receive window, for the initial sequence numbers and any options that are negotiated.
Part 2
Choose or create a file of about sixty four kilobytes. Using a blocksize of 65536 passed to write(), repeat Part 1, explaining how slow start is operating.
Part 3
Using either a firewall (as shown in the lecture) or simply unplugging a cable, make a connection using small packets with artificial delays, interrupt the connection for ten seconds after it has been established, and explain what happens. Highlight the timeout and retransmission strategy that is used.
Part 4
Instead of a ten second delay, interrupt communications for two minutes or until the connection is aborted by the operating system. Explain the behaviour of the client and the server.
For each part, submit a short written description of your observations. Please do not submit packet captures (pcap or similar).
Part 5 (for students taking the “Extended” Version only)
Pick only one of these three issues:
1. Virtualisation repacketisation into Jumbo frames
2. Delayed ACK strategy
3. Retransmission (re-)packetisation strategy
Investigate it, and write a report on what you find.
Use any resources you like: compare Windows, Linux, Solaris, OSX, fast and slow machines, from home
Look at source code if you’re feeling keen
Submit a short description (maximum five pages) of what you investigated, what you expected to see, what you saw and any conclusions your reach from that. You can use standards documents and other reference material to explain your conclusions.
After Submission
Please write <300 words commenting on the work of one other student: what did they see that you did not? Can you see why? What did you see that they did not? Why?
96
Normal
0
false
false
false
EN-US
X-NONE
AR-SA
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:”Table Normal”;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:””;
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:”Calibri”,sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-ansi-language:EN-US;
mso-fareast-language:EN-US;}