I/O endpoints rarely produce and consume data at exactly the same rate. A process may generate a response in microseconds while the client reads it over a slow connection. A device may deliver a burst of input before the application is scheduled. Even two fast components can briefly fall out of step.
Buffering handles these short-term differences by keeping data in temporary storage. Backpressure handles the limit of that storage by slowing or stopping the component that supplies more work.
These mechanisms solve related but different problems:
A buffer buys time. It does not create processing capacity. If a producer remains faster than its consumer, every finite buffer eventually fills.
This chapter traces buffering across I/O layers, relates capacity to throughput and latency, and explains watermarks, bounded queues, overload policies, and observable backpressure in event-driven services.