The Transport Layer

an acknowledgment

When you say something important on a phone call and the other person says 'got it,' that 'got it' is an acknowledgment — a small signal back to you confirming your message landed. In networking, an acknowledgment (ACK) is exactly that: a short message the receiver sends back to tell the sender which data it has successfully received. Without ACKs, a sender shouting into the network would never know whether anyone caught what it threw.

TCP uses cumulative acknowledgments: the acknowledgment number says 'I have received every byte up to here, and I expect the next byte to be number N.' So an ACK of 5001 means 'I have bytes 1 through 5000; send me 5001 next.' The sender watches the ACKs roll in; missing ACKs (or a timeout) reveal that something was lost and must be resent. TCP also has a telltale signal: if a receiver gets out-of-order data, it re-sends the same ACK, and three of these duplicate ACKs strongly hint a segment was lost, letting the sender retransmit fast without waiting for the timer.

Why it matters: acknowledgments are the feedback that makes reliability possible — they close the loop between sender and receiver. They also serve double duty: the steady stream of ACKs is how TCP measures the round-trip time and clocks out new data. A subtle point worth keeping straight: an ACK confirms that the transport layer received bytes, not that the application has read or acted on them. And ACKs are often piggybacked onto data flowing the other way, so they usually cost no extra packet.

A server sends bytes 1–1000, then 1001–2000. The client returns ACK 1001 after the first, ACK 2001 after the second — each ACK naming the next byte it wants. If only the second segment is lost, the server keeps seeing ACK 1001 and knows to resend from there.

A cumulative ACK names the next byte expected, not the last received.

An ACK means the transport layer buffered the bytes, not that the application consumed them. Also, a duplicate ACK is information, not an error — three of them are TCP's fast-loss signal.

Also called
ACK確認回應確認