Flow control is a mechanism in the Data Link Layer (DLL) of the OSI model that controls the speed of data transmission between a sender and a receiver. It ensures that the sender transmits data at a rate the receiver can handle, preventing buffer overflow and data loss while enabling efficient and reliable communication.
- It regulates the flow of data between the sender and the receiver
- It accommodates differences in transmission speed and processing capability
- It prevents buffer overflow and loss of data at the receiver
- Functions as a speed-matching mechanism between communicating devices
- Controls the number of frames sent before receiving an acknowledgement
- Ensures a balance between the data transmission rate and the receiver’s memory capacity
Approaches to Flow Control

1. Feedback-Based Flow Control
In this approach, the receiver sends explicit feedback to the sender about its ability to receive data. Based on this feedback, the sender adjusts its transmission rate to match the receiver’s current capacity.
- The sender transmits data only after receiving acknowledgments or window updates from the receiver
- Transmission rate is dynamically adjusted according to receiver or network conditions
- Commonly used in protocols like TCP for efficient and reliable communication
Techniques in Computer Architecture
Ready-Signal Handshaking
- This technique is used between components operating at different speeds or clock domains
- The receiver sends a ready signal indicating it can accept data
- Data transfer occurs only when the receiver is ready, preventing data loss
Credit-Based flow control
- This technique is used in high-speed protocols such as Fibre Channel
- The receiver provides credits to the sender, each representing available buffer space
- The sender can transmit one frame per credit
- Credits are restored as the receiver processes data
- More efficient than simple stop-and-wait flow control

2. Rate-Based Flow Control
In rate-based flow control, the sender transmits data at a fixed or pre-negotiated rate without receiving continuous feedback from the receiver. This approach assumes that the receiver can process data at the agreed transmission rate.
- Sender controls the transmission rate independently
- Does not rely on acknowledgments or window updates
- Suitable for predictable and time-sensitive data transmission
- Commonly used in streaming, multimedia, and hardware systems
Techniques in computer architecture
- Leaky Bucket Algorithm: Maintains a constant data output rate by smoothing bursty input traffic, ensuring steady and controlled transmission.
- Token Bucket Algorithm: Generates tokens at a fixed rate, allowing data transmission only when tokens are available. A larger bucket size supports short bursts while preserving the average transmission rate.
- Traffic Shaping and Policing: Regulate network traffic based on a defined rate. Traffic shaping delays excess packets to smooth traffic flow, while policing drops packets that exceed the allowed rate.
Techniques of Flow Control

1. Stop-and-Wait Flow Control
Stop-and-Wait is a simple feedback-based flow control technique in which the sender transmits one frame at a time and waits for an acknowledgment from the receiver before sending the next frame. If the acknowledgment is not received within a specified timeout period, the sender retransmits the frame to ensure reliable delivery.
- Simple and easy to implement
- Ensures reliable data transmission
- Poor link utilization in high-latency or high-bandwidth networks due to idle waiting
2. Sliding Window Flow Control
Sliding Window is a feedback-based flow control technique that allows the sender to transmit multiple frames before receiving acknowledgments. The sender maintains a window of unacknowledged frames and moves (slides) the window forward as acknowledgments are received, enabling continuous and pipelined data transmission.
- Improves bandwidth utilization by enabling pipelined transmission.
- Allows multiple frames to be in transit simultaneously
- Requires additional memory and complexity for window and buffer management
The significance of flow control is multifaceted:
- Prevents Data Loss: Regulates data transmission to avoid buffer overflow at the receiver
- Improves Throughput: Optimizes the use of network resources without overloading any component
- Maintains System Stability: Ensures smooth operation of hardware and software components by preventing excessive data input
- Ensures Fairness: Supports balanced data transmission across multiple connections in shared environments such as switches and routers
Importance of Flow Control
Flow control plays a crucial role in efficient and reliable data communication:
- Prevents Data Loss: Controls the transmission rate to avoid buffer overflow at the receiver
- Improves Throughput: Ensures efficient utilization of network resources without overloading any device
- Maintains System Stability: Prevents hardware and software components from stalling or failing due to excessive data input
- Ensures Fairness: Enables balanced data transmission across multiple connections in shared environments such as switches and routers