Learn the vocabulary of adjusting a connection's send rate based on detected packet loss to avoid overwhelming a network path.
0 / 5 completed
1 / 5
At standup, a dev mentions a TCP connection gradually increasing how much unacknowledged data it sends at once, then sharply cutting that amount back the moment it detects packet loss, to avoid overwhelming the network path between sender and receiver. What is this mechanism called?
TCP congestion control is exactly this: it gradually increases how much unacknowledged data a connection sends at once, then sharply cuts that amount back the moment it detects packet loss, which it treats as a signal of network congestion, in order to avoid overwhelming the network path between sender and receiver. A hash collision is an unrelated hash-table concept about two keys sharing a bucket. This grow-then-back-off-on-loss approach is exactly why TCP connections sharing a network link converge toward fairly sharing its available bandwidth instead of one connection starving the others.
2 / 5
During a design review, the team relies on TCP's congestion control to manage a bulk-transfer connection sharing a network link with other traffic, specifically because backing off sharply on detected packet loss avoids one connection monopolizing the link's bandwidth. Which capability does this provide?
TCP congestion control here provides fair, adaptive bandwidth sharing across connections on a congested link, since backing off on detected loss lets other connections regain their share instead of one connection continuing to send at an ever-increasing rate regardless of congestion. A connection that never backs off regardless of detected packet loss would keep growing its send rate and starve every other connection sharing that link. This back-off-on-loss behavior is exactly why TCP congestion control lets many connections share a network link reasonably fairly.
3 / 5
In a code review, a dev notices a custom bulk-transfer protocol built on raw UDP keeps increasing its send rate indefinitely with no mechanism to back off when packet loss is detected, instead of adopting a TCP-style congestion-control algorithm that backs off on loss. What does this represent?
This is a missed TCP-congestion-control opportunity, since backing off the send rate on detected packet loss would avoid monopolizing the link's bandwidth instead of increasing the send rate indefinitely regardless of loss. A cache eviction policy is an unrelated concept about discarded cache entries. This no-back-off-on-loss pattern is exactly the kind of unfair bandwidth hogging a reviewer flags once the protocol shares a network link with other traffic.
4 / 5
An incident report shows a custom bulk-transfer protocol built on raw UDP starved every other connection sharing its network link, because it kept increasing its send rate indefinitely with no mechanism to back off when packet loss was detected. What practice would prevent this?
Adopting a TCP-style congestion-control algorithm makes the protocol back off its send rate on detected packet loss, sharing bandwidth fairly with other connections. Continuing to increase the send rate indefinitely with no back-off mechanism regardless of how many other connections get starved on the shared link is exactly what caused the starvation described in this incident. This back-off-on-loss approach is the standard fix once a custom protocol is confirmed to share a network link with other traffic.
5 / 5
During a PR review, a teammate asks why the team relies on TCP's built-in congestion control instead of building a custom protocol on raw UDP that always sends at the maximum possible rate. What is the reasoning?
TCP's congestion control backs off on detected packet loss, letting a shared network link's bandwidth be divided fairly among connections, while always sending at the maximum possible rate over raw UDP ignores congestion signals entirely and can starve every other connection sharing that same link. This is exactly why TCP's congestion control is the standard choice for connections sharing bandwidth with other traffic, while raw UDP is reserved for cases where the application implements its own rate management.