Difficulty: Medium
Correct Answer: Decrease the TCP window size so that fewer unacknowledged segments are in flight at any time
Explanation:
Introduction / Context:
Transmission Control Protocol (TCP) is a reliable, connection oriented transport protocol that uses sequence numbers, acknowledgements and flow control to ensure ordered delivery. When a receiving host detects that it has not received all of the segments it should acknowledge, this indicates possible congestion or loss in the network. Adjusting the TCP window size is one of the key mechanisms used to improve reliability and adapt to network conditions.
Given Data / Assumptions:
Concept / Approach:
TCP uses a sliding window mechanism for flow control. The window size tells the sender how many bytes it can send before waiting for an acknowledgment. If the receiver is missing segments or the network is experiencing congestion, reducing the window size results in fewer unacknowledged segments in transit, reducing the chance of further loss and retransmission storms. Changing the source port or decreasing sequence numbers is not part of normal TCP behavior during a session; sequence numbers always increase and ports remain fixed for that connection.
Step-by-Step Solution:
Recognize that missing segments often indicate congestion or buffer issues in the network or at the receiver.
Recall that TCP's advertised receive window is used by the sender to limit the volume of outstanding data.
By decreasing the window size, the receiver effectively asks the sender to slow down, reducing the number of in flight segments and giving the network a chance to clear congestion.
This helps reduce additional loss and leads to more reliable delivery without tearing down the connection.
Therefore, the correct action in the context of TCP's built in mechanisms is to decrease the window size.
Verification / Alternative check:
TCP congestion control algorithms such as slow start and congestion avoidance also adjust the effective sending window on the sender side, but the receiver can influence flow control via the advertised window. In both cases, reducing the window improves resilience when loss is detected. Standard TCP implementations do not change source ports mid connection, nor do they decrease sequence numbers once the session is established, which confirms that those options are invalid.
Why Other Options Are Wrong:
Option a (send a different source port number) would actually define a new TCP connection, not fix the current one; source ports remain constant for a given session.
Option b (restart the virtual circuit) is heavy handed and not necessary; TCP is designed to recover from loss without tearing down the connection.
Option c (decrease the sequence number) violates TCP rules, as sequence numbers are monotonically increasing and used to detect duplicates and maintain order.
Option e (increase the MTU) can actually make things worse if fragmentation or MTU issues are part of the problem, and it does not address the missing segments directly.
Common Pitfalls:
A common misunderstanding is to think that any loss requires resetting the connection. In reality, TCP is robust against occasional losses and uses retransmission and window adjustment to recover. Another pitfall is to confuse flow control (receiver driven, via window size) with congestion control (sender driven). Both mechanisms can reduce the amount of in flight data, but the question focuses on what the receiving host can do directly.
Final Answer:
To improve reliability, the host should decrease the TCP window size so that fewer unacknowledged segments are in flight at any time.
Discussion & Comments