The sender needs to know whether the receiver successfully received a packet. Without feedback, the sender would never know if data was lost or corrupted.
A control message sent by the receiver back to the sender confirming successful receipt of data, typically referencing the sequence number of the received data.
- Receiver gets a packet, validates it (checksum, etc.)
- Receiver sends ACK with sequence number (or expected next sequence number)
- Sender receives ACK and knows data was delivered
- If sender doesn’t receive ACK within timeout, it retransmits the data
- Cumulative ACKs acknowledge all data up to a certain sequence number
- Confirms successful delivery to sender
- Can be cumulative (acknowledge multiple packets at once)
- Can be piggybacked on data packets (in full-duplex protocols)
- Timeout + lack of ACK triggers retransmission
- Built from: Reliable Data Transfer — core mechanism
- Built from: Sequence Numbers — ACKs reference these
- Related: Piggybacking — ACK attached to data packet
- Related: Cumulative Acknowledgment — acknowledges through seq num
- Contrasts with: Negative Acknowledgment — NAK signals failure
- ACK loss can cause unnecessary retransmission (sender times out)
- Duplicate ACKs can signal packet loss (used in TCP fast retransmit)
- Piggybacked ACKs may be delayed if no data to send (timer limits delay)