TCP flow control purpose: In reliable transport protocols such as TCP, what is the primary purpose of flow control between sender and receiver?

Difficulty: Easy

Correct Answer: To provide a means for the receiver to govern the amount of data sent by the sender.

Explanation:


Introduction / Context:
Transport protocols implement mechanisms to avoid overwhelming receivers. TCP uses a sliding window scheme so the receiver can advertise how much data it can accept before acknowledgment, preventing buffer overflow and improving end-to-end reliability.



Given Data / Assumptions:

  • TCP provides reliable, ordered byte-stream delivery.
  • Receivers have finite buffer capacity and processing speed.
  • Flow control is separate from error control and congestion control.


Concept / Approach:

Flow control is receiver-driven: the receiver advertises a window size (rwnd) in ACKs indicating how much unacknowledged data the sender may have in flight. The sender must respect this limit, adjusting its send rate accordingly.



Step-by-Step Solution:

Receiver determines free buffer space.Receiver sets window field in ACKs to reflect available space.Sender limits outstanding bytes ≤ advertised window.As data is processed, receiver increases the window in subsequent ACKs.


Verification / Alternative check:

Analyze a trace: the TCP header window field fluctuates with buffer availability; sender pacing changes accordingly.



Why Other Options Are Wrong:

Retransmission on missing ACKs (A) is error control, not flow control.

Reassembly order (B) is provided by sequence numbers and buffering.

Segment size regulation (D) is influenced by MSS/MTU, not flow control per se.



Common Pitfalls:

Confusing congestion control (network capacity) with flow control (receiver capacity); assuming fixed window sizes when modern TCP can use window scaling.



Final Answer:

To provide a means for the receiver to govern the amount of data sent by the sender.

More Questions from Internetworking

Discussion & Comments

No comments yet. Be the first to comment!
Join Discussion