Problem A. Consider transferring an enormous file of L bytes from Host A to Host B. Assume an MSS of 536 bytes. (hint: MSS: Maximum Segment Size, i.e., the maximum size of the payload of a TCP segment, not including the TCP segment header. It’s essentially the largest amount of application-layer data, in Bytes, that a TCP segment can carry.)
(a) What is the maximum value of L such that TCP sequence numbers are not exhausted? Recall that the TCP sequence number field has 4 bytes.
(b) For the L you obtain in (a), find how long it takes to transmit the file. Assume that a total of 66 bytes of transport, network, and data-link header are added to each segment before the resulting packet is sent out over a 155 Mbps link. Ignore flow control and congestion control so A can pump out the segments back to back and continuously. (Hint: it is assumed that the window size N is large enough such that the segments can be sent out back to back without the need to wait for the next sequence number to be available and there is no loss of packet or ack.)
Problem B. Host A and B are communicating over a TCP connection, and Host B has already received from A all bytes up through byte 126. Suppose Host A then sends two segments to Host B back- to- back. The first and second segments contain 80 and 40 bytes of data, respectively. In the first segment, the sequence number is 127, the source port number is 302, and the destination port number is 80. Host B sends an acknowledgment whenever it receives a segment from Host A.
(a) In the second segment sent from Host A to B, what are the sequence number, source port number, and destination port number?
(b) If the first segment arrives before the second segment, in the acknowledgment of the first arriving segment, what is the acknowledgment number, the source port number, and the destination port number?
(c) If the second segment arrives before the first segment, in the acknowledgment of the first arriving segment, what is the acknowledgment number? (Hint: The reliability control used in TCP is basically a GBN approach with some variation.)
(d) Suppose the two segments sent by A arrive in order at B. The first acknowledgment is lost and the second acknowledgment arrives after the first time-out interval. Draw a timing diagram, showing these segments and all other segments and acknowledgments sent. (Assume there is no additional packet loss.) For each segment in your figure, provide the sequence number and the number of bytes of data; for each acknowledgment that you add, provide the acknowledgment number. (hint: draw all the segments and ACKs that are exchanged between Hosts A and B involved in delivering these two segments)
Problem C. Referring to the Slide 38 titled “TCP Flow Control”, if RcvBuffer = 4096 bytes, 1280 bytes data is buffered, (a) what is the rwnd value in the TCP header of the next receiver-to-sender segment?
(b) When the sender receives the above TCP segment, it has sent out 2560 bytes not yet ACKed. At most how many more bytes can the sender send out before receiving any ACK?
Problem D. (a) List the following three TCP segments in the order of being transmitted in the TCP 3-way handshake for establishing a TCP connection; (b) describe the sender and receiver of EACH TCP segment as client-to-server or server-to-client; (c) what is the initial sequence number chosen by the client; (d) what is the initial sequence number chosen by the server?
TCP Segment [SYNBit = 1, Seq = 58, ACKbit = 1, ACKnum = 126]
TCP Segment [ACKbit = 1, ACKnum = 59]
TCP Segment [SYNBit = 1, Seq = 125]
Problem E. Given that the client initiates the procedure of closing a TCP connection, the last byte sent from client to server before the FIN segment is byte #1,742, the last byte sent from server to client before the FIN segment is byte #6,029, (a) list four TCP segments exchanged between client and server for closing a TCP connection, where EACH TCP Segment must be described in the format used in Problem B; (b) describe the sender and receiver of EACH TCP segment as client-to-server or server-to-client.
Problem F. The initial ssthresh is 16, the sender experiences a 3-duplicate-ACKs event right after the 9th transmission round in both Tahoe and Reno cases, and then the sender experiences a timeout event right after the 16th round in a TCP Tahoe case and after right after the 19th round in a TCP Reno case, FILL the following table to illustrate the congestion window size in segments (cwnd) and ssthresh as functions of transmission round for the time from the 1st to the 22th round if (a) TCP Tahoe is used for congestion control; and (b) TCP Reno is used for congestion control. (Hint: be aware that the figure in the slide titled “TCP: switching from slow start to CA” illustrates both cases in the same graph.)
TCP Tahoo
TCP Reno
Trans. Round
cwnd
ssthresh
Trans. Round
cwnd
Ssthresh
1st
1st
2nd
2nd
3rd
3rd
4th
4th
5th
5th
6th
6th
7th
7th
8th
8th
9th
9th
10th
10th
11th
11th
12th
12th
13th
13th
14th
14th
15th
15th
16th
16th
17th
17th
18th
18th
19th
19th
20th
20th
21st
21st
22nd
22nd