Chapter 3
Computer Networking: A Top-Down Approach · 39 exercises
Problem 1
Suppose Client A initiates a Telnet session with Server S. At about the same time, Client B also initiates a Telnet session with Server S. Provide possible source and destination port numbers for a. The segments sent from \(\mathrm{A}\) to \(\mathrm{S}\). b. The segments sent from \(B\) to \(S\). c. The segments sent from \(S\) to \(A\). d. The segments sent from \(S\) to \(B\). e. If \(A\) and \(B\) are different hosts, is it possible that the source port number in the segments from \(\mathrm{A}\) to \(\mathrm{S}\) is the same as that from \(\mathrm{B}\) to \(\mathrm{S}\) ? f. How about if they are the same host?
7 step solution
Problem 1
Suppose the network layer provides the following service. The network layer in the source host accepts a segment of maximum size 1,200 bytes and a destination host address from the transport layer. The network layer then guarantees to deliver the segment to the transport layer at the destination host. Suppose many network application processes can be running at the destination host. a. Design the simplest possible transport-layer protocol that will get application data to the desired process at the destination host. Assume the operating system in the destination host has assigned a 4-byte port number to each running application process. b. Modify this protocol so that it provides a "return address" to the destination process. c. In your protocols, does the transport layer "have to do anything" in the core of the computer network?
4 step solution
Problem 3
Consider a TCP connection between Host A and Host B. Suppose that the TCP segments traveling from Host A to Host B have source port number \(x\) and destination port number \(y\). What are the source and destination port numbers for the segments traveling from Host B to Host A?
4 step solution
Problem 3
UDP and TCP use 1s complement for their checksums. Suppose you have the following three 8-bit bytes: \(01010011,01100110,01110100\). What is the \(1 \mathrm{~s}\) complement of the sum of these 8-bit bytes? (Note that although UDP and TCP use 16-bit words in computing the checksum, for this problem you are being asked to consider 8-bit sums.) Show all work. Why is it that UDP takes the Is complement of the sum; that is, why not just use the sum? With the 1 s complement scheme, how does the receiver detect errors? Is it possible that a 1-bit error will go undetected? How about a 2-bit error?
5 step solution
Problem 4
Describe why an application developer might choose to run an application over UDP rather than TCP.
4 step solution
Problem 4
a. Suppose you have the following 2 bytes: 01011100 and 01100101 . What is the 1 s complement of the sum of these 2 bytes? b. Suppose you have the following 2 bytes: 11011010 and 01100101 . What is the \(1 \mathrm{~s}\) complement of the sum of these 2 bytes? c. For the bytes in part (a), give an example where one bit is flipped in each of the 2 bytes and yet the 1 s complement doesn't change.
5 step solution
Problem 5
Why is it that voice and video traffic is often sent over TCP rather than UDP in today's Internet? (Hint: The answer we are looking for has nothing to do with TCP's congestion-control mechanism.)
6 step solution
Problem 5
Suppose that the UDP receiver computes the Internet checksum for the received UDP segment and finds that it matches the value carried in the checksum field. Can the receiver be absolutely certain that no bit errors have occurred? Explain.
4 step solution
Problem 6
Is it possible for an application to enjoy reliable data transfer even when the application runs over UDP? If so, how?
5 step solution
Problem 7
Suppose a process in Host C has a UDP socket with port number 6789. Suppose both Host A and Host B each send a UDP segment to Host C with destination port number 6789 . Will both of these segments be directed to the same socket at Host C? If so, how will the process at Host C know that these two segments originated from two different hosts?
3 step solution
Problem 7
In protocol rdt3. 0 , the ACK packets flowing from the receiver to the sender do not have sequence numbers (although they do have an ACK field that contains the sequence number of the packet they are acknowledging). Why is it that our ACK packets do not require sequence numbers?
5 step solution
Problem 8
Suppose that a Web server runs in Host C on port 80. Suppose this Web server uses persistent connections, and is currently receiving requests from two different Hosts, \(\mathrm{A}\) and \(\mathrm{B}\). Are all of the requests being sent through the same socket at Host C? If they are being passed through different sockets, do both of the sockets have port 80 ? Discuss and explain.
5 step solution
Problem 9
In our rdt protocols, why did we need to introduce sequence numbers?
4 step solution
Problem 10
In our rdt protocols, why did we need to introduce timers?
4 step solution
Problem 11
Suppose that the roundtrip delay between sender and receiver is constant and known to the sender. Would a timer still be necessary in protocol rdt \(3.0\), assuming that packets can be lost? Explain.
4 step solution
Problem 12
The sender side of rdt3.0 simply ignores (that is, takes no action on) all received packets that are either in error or have the wrong value in the acknum field of an acknowledgment packet. Suppose that in such circumstances, rdt3. 0 were simply to retransmit the current data packet. Would the protocol still work? (Hint: Consider what would happen if there were only bit errors; there are no packet losses but premature timeouts can occur. Consider how many times the \(n\)th packet is sent, in the limit as \(n\) approaches infinity.)
5 step solution
Problem 14
True or false? a. Host \(A\) is sending Host \(B\) a large file over a TCP connection. Assume Host B has no data to send Host A. Host B will not send acknowledgments to Host A because Host B cannot piggyback the acknowledgments on data. True or false? a. Host \(\mathrm{A}\) is sending Host \(\mathrm{B}\) a large file over a \(\mathrm{TCP}\) connection. Assume Host B has no data to send Host A. Host B will not send acknowledgments to Host A because Host B cannot piggyback the acknowledgments on data. b. The size of the TCP rwnd never changes throughout the duration of the connection. c. Suppose Host A is sending Host B a large file over a TCP connection. The number of unacknowledged bytes that A sends cannot exceed the size of the receive buffer. d. Suppose Host \(\mathrm{A}\) is sending a large file to Host \(\mathrm{B}\) over a TCP connection. If the sequence number for a segment of this connection is \(m\), then the sequence number for the subsequent segment will necessarily be \(m+1\). e. The TCP segment has a field in its header for rwnd. f. Suppose that the last SampleRTT in a TCP connection is equal to \(1 \mathrm{sec}\). The current value of TimeoutInterval for the connection will necessarily be \(\geq 1 \mathrm{sec}\). g. Suppose Host A sends one segment with sequence number 38 and 4 bytes of data over a TCP connection to Host B. In this same segment the acknowledgment number is necessarily 42 .
7 step solution
Problem 14
Consider a reliable data transfer protocol that uses only negative acknowledgments. Suppose the sender sends data only infrequently. Would a NAK- only protocol be preferable to a protocol that uses ACKs? Why? Now suppose the sender has a lot of data to send and the end-to-end connection experiences few losses. In this second case, would a NAK-only protocol be preferable to a protocol that uses ACKs? Why?
4 step solution
Problem 15
Suppose Host A sends two TCP segments back to back to Host B over a TCP connection. The first segment has sequence number 90 ; the second has sequence number 110 . a. How much data is in the first segment? b. Suppose that the first segment is lost but the second segment arrives at B. In the acknowledgment that Host B sends to Host A, what will be the acknowledgment number?
2 step solution
Problem 16
Suppose an application uses \(r d t \quad 3.0\) as its transport layer protocol. As the stop-and-wait protocol has very low channel utilization (shown in the crosscountry example), the designers of this application let the receiver keep sending back a number (more than two) of alternating ACK 0 and ACK 1 even if the corresponding data have not arrived at the receiver. Would this application design increase the channel utilization? Why? Are there any potential problems with this approach? Explain.
4 step solution
Problem 17
Suppose two TCP connections are present over some bottleneck link of rate \(R\) bps. Both connections have a huge file to send (in the same direction over the bottleneck link). The transmissions of the files start at the same time. What transmission rate would TCP like to give to each of the connections?
4 step solution
Problem 17
Consider two network entities, \(\mathrm{A}\) and \(\mathrm{B}\), which are connected by a perfect bidirectional channel (i.e., any message sent will be received correctly; the channel will not corrupt, lose, or re-order packets). A and B are to deliver data messages to each other in an alternating manner: First, A must deliver a message to \(\mathrm{B}\), then \(\mathrm{B}\) must deliver a message to \(\mathrm{A}\), then \(\mathrm{A}\) must deliver a message to \(\mathrm{B}\) and so on. If an entity is in a state where it should not attempt to deliver a message to the other side, and there is an event like rdt_send (data) call from above that attempts to pass data down for transmission to the other side, this call from above can simply be ignored with a call to rdt_unable_to_send (data), which informs the higher layer that it is currently not able to send data. [Note: This simplifying assumption is made so you don't have to worry about buffering data.] Draw a FSM specification for this protocol (one FSM for A, and one FSM for B!). Note that you do not have to worry about a reliability mechanism here; the main point of this question is to create a FSM specification that reflects the synchronized behavior of the two entities. You should use the following events and actions that have the same meaning as protocol rdt \(1.0\) in Figure 3.9: rdt_send(data), packet = make_pkt(data), udt_send (packet), rdt_rcv (packet), extract (packet, data), deliver_data (data). Make sure your protocol reflects the strict alternation of sending between \(\mathrm{A}\) and \(\mathrm{B}\). Also, make sure to indicate the initial states for A and B in your FSM descriptions.
5 step solution
Problem 18
True or false? Consider congestion control in TCP. When the timer expires at the sender, the value of ssthresh is set to one half of its previous value.
4 step solution
Problem 21
Consider the GBN protocol with a sender window size of 4 and a sequence number range of 1,024 . Suppose that at time \(t\), the next in-order packet that the receiver is expecting has a sequence number of \(k\). Assume that the medium does not reorder messages. Answer the following questions: a. What are the possible sets of sequence numbers inside the sender's window at time \(t\) ? Justify your answer. b. What are all possible values of the \(\mathrm{ACK}\) field in all possible messages cur rently propagating back to the sender at time \(t ?\) Justify your answer.
5 step solution
Problem 22
Consider the GBN protocol with a sender window size of 4 and a sequence number range of 1,024 . Suppose that at time \(t\), the next in-order packet that the receiver is expecting has a sequence number of \(k\). Assume that the medium does not reorder messages. Answer the following questions: a. What are the possible sets of sequence numbers inside the sender's window at time \(t\) ? Justify your answer. b. What are all possible values of the ACK field in all possible messages currently propagating back to the sender at time \(t\) ? Justify your answer.
2 step solution
Problem 25
We have said that an application may choose UDP for a transport protocol because UDP offers finer application control (than TCP) of what data is sent in a segment and when. a. Why does an application have more control of what data is sent in a segment? b. Why does an application have more control on when the segment is sent?
3 step solution
Problem 26
Consider transferring an enormous file of \(L\) bytes from Host A to Host B. Assume an MSS of 536 bytes. 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 \mathrm{Mbps}\) link. Ignore flow control and congestion control so A can pump
6 step solution
Problem 28
Host \(\mathrm{A}\) and \(\mathrm{B}\) are directly connected with a \(100 \mathrm{Mbps}\) link. There is one TCP connection between the two hosts, and Host \(\mathrm{A}\) is sending to Host \(\mathrm{B}\) an enormous file over this connection. Host A can send its application data into its TCP socket at a rate as high as \(120 \mathrm{Mbps}\) but Host B can read out of its TCP receive buffer at a maximum rate of \(50 \mathrm{Mbps}\). Describe the effect of TCP flow control.
4 step solution
Problem 32
Consider the TCP procedure for estimating RTT. Suppose that \(\alpha=0.1\). Let SampleRTT \(_{1}\) be the most recent sample RTT, let SampleRTT \(_{2}\) be the next most recent sample RTT, and so on. a. For a given TCP connection, suppose four acknowledgments have been returned with corresponding sample RTTs: SampleRTT \(_{4}\), SampleRTT \(_{3}\), SampleRTT \(_{2}\), and SampleRTT \(_{1}\). Express EstimatedRTT in terms of the four sample RTTs. b. Generalize your formula for \(n\) sample RTTs. c. For the formula in part (b) let \(n\) approach infinity. Comment on why this averaging procedure is called an exponential moving average.
4 step solution
Problem 36
In Section 3.5.4, we saw that TCP waits until it has received three duplicate ACKs before performing a fast retransmit. Why do you think the TCP designers chose not to perform a fast retransmit after the first duplicate ACK for a segment is received?
5 step solution
Problem 37
Compare GBN, SR, and TCP (no delayed ACK). Assume that the timeout values for all three protocols are sufficiently long such that 5 consecutive data segments and their corresponding ACKs can be received (if not lost in the channel) by the receiving host (Host B) and the sending host (Host A) respectively. Suppose Host A sends 5 data segments to Host B, and the 2 nd segment (sent from \(\mathrm{A}\) ) is lost. In the end, all 5 data segments have been correctly received by Host B. a. How many segments has Host A sent in total and how many ACKs has Host B sent in total? What are their sequence numbers? Answer this question for all three protocols. b. If the timeout values for all three protocol are much longer than 5 RTT, then which protocol successfully delivers all five data segments in shortest time interval?
4 step solution
Problem 44
Consider sending a large file from a host to another over a TCP connection that has no loss. a. Suppose TCP uses AIMD for its congestion control without slow start. Assuming cwnd increases by 1 MSS every time a batch of ACKs is received and assuming approximately constant round-trip times, how long does it take for cwnd increase from 6 MSS to 12 MSS (assuming no loss events)? b. What is the average throughout (in terms of MSS and RTT) for this connection up through time \(=6\) RTT?
3 step solution
Problem 45
Recall the macroscopic description of TCP throughput. In the period of time from when the connection's rate varies from \(W /(2 \cdot R T T)\) to \(W / R T T\), only one packet is lost (at the very end of the period). a. Show that the loss rate (fraction of packets lost) is equal to $$ L=\text { loss rate }=\frac{1}{\frac{3}{8} W^{2}+\frac{3}{4} W} $$ b. Use the result above to show that if a connection has loss rate \(L\), then its average rate is approximately given by $$ =\frac{1.22 \cdot M S S}{R T T \sqrt{L}} $$
5 step solution
Problem 46
Consider that only a single TCP (Reno) connection uses one \(10 \mathrm{Mbps}\) link which does not buffer any data. Suppose that this link is the only congested link between the sending and receiving hosts. Assume that the TCP sender has a huge file to send to the receiver, and the receiver's receive buffer is much larger than the congestion window. We also make the following assumptions: each TCP segment size is 1,500 bytes; the two-way propagation delay of this connection is \(150 \mathrm{msec}\); and this TCP connection is always in congestion avoidance phase, that is, ignore slow start. a. What is the maximum window size (in segments) that this TCP connection can achieve? b. What is the average window size (in segments) and average throughput (in bps) of this TCP connection? c. How long would it take for this TCP connection to reach its maximum window again after recovering from a packet loss?
4 step solution
Problem 50
Consider a simplified TCP's AIMD algorithm where the congestion window size is measured in number of segments, not in bytes. In additive increase, the congestion window size increases by one segment in each RTT. In multiplicative decrease, the congestion window size decreases by half (if the result is not an integer, round down to the nearest integer). Suppose that two TCP connections, \(C_{1}\) and \(C_{2}\), share a single congested link of speed 30 segments per second. Assume that both \(\mathrm{C}_{1}\) and \(\mathrm{C}_{2}\) are in the congestion avoidance phase. Connection \(\mathrm{C}_{1}\) 's RTT is \(50 \mathrm{msec}\) and connection \(\mathrm{C}_{2}\) 's RTT is \(100 \mathrm{msec}\). Assume that when the data rate in the link exceeds the link's speed, all TCP connections experience data segment loss. a. If both \(\mathrm{C}_{1}\) and \(\mathrm{C}_{2}\) at time \(\mathrm{t}_{0}\) have a congestion window of 10 segments, what are their congestion window sizes after 1000 msec? b. In the long run, will these two connections get the same share of the bandwidth of the congested link? Explain.
5 step solution
Problem 54
In our discussion of TCP congestion control in Section 3.7, we implicitly assumed that the TCP sender always had data to send. Consider now the case that the TCP sender sends a large amount of data and then goes idle (since it has no more data to send) at \(t_{1}\). TCP remains idle for a relatively long period of time and then wants to send more data at \(t_{2}\). What are the advantages and disadvantages of having TCP use the cwnd and ssthresh values from \(t_{1}\) when starting to send data at \(t_{2}\) ? What alternative would you recommend? Why?
6 step solution
Problem 55
In this problem we investigate whether either UDP or TCP provides a degree of end-point authentication. a. Consider a server that receives a request within a UDP packet and responds to that request within a UDP packet (for example, as done by a DNS server). If a client with IP address \(\mathrm{X}\) spoofs its address with address Y, where will the server send its response? b. Suppose a server receives a SYN with IP source address Y, and after responding with a SYNACK, receives an ACK with IP source address Y with the correct acknowledgment number. Assuming the server chooses a random initial sequence number and there is no "man-in-the-middle," can the server be certain that the client is indeed at \(Y\) (and not at some other address \(\mathrm{X}\) that is spoofing \(\mathrm{Y})\) ?
5 step solution
Problem 56
In this problem, we consider the delay introduced by the TCP slow-start phase. Consider a client and a Web server directly connected by one link of rate \(R\). Suppose the client wants to retrieve an object whose size is exactly equal to \(15 S\), where \(S\) is the maximum segment size (MSS). Denote the round-trip time between client and server as RTT (assumed to be constant). Ignoring protocol headers, determine the time to retrieve the object (including TCP connection establishment) when a. \(4 S / R>S / R+R T T>2 S / R\) b. \(S / R+R T T>4 S / R\) c. \(S / R>R T T\).
5 step solution