Skip to main content
networking

ACK (Acknowledgment)

ACK (acknowledgment) is a TCP flag confirming receipt of data. The ACK number indicates the next byte the receiver expects. Delayed ACKs batch confirmations for efficiency (typically every 2 segments or 200ms). Missing ACKs trigger retransmission – the sender assumes data was lost.

Definition

TCP acknowledgments confirm data delivery. When a receiver gets segment with bytes 1000-1499, it ACKs with ack_number=1500, meaning 'I have everything up to byte 1499, send me byte 1500 next.' This cumulative acknowledgment scheme means a single ACK can confirm multiple segments. TCP Selective Acknowledgment (SACK, RFC 2018) extends this by reporting non-contiguous received blocks, so the sender retransmits only truly lost segments instead of everything after a gap. Delayed ACK (RFC 1122) waits up to 200ms or 2 segments before sending an ACK to reduce overhead – this trades latency for efficiency. In interactive protocols (SSH, gaming), disabling Nagle's algorithm (TCP_NODELAY) avoids interaction with delayed ACK that causes 200ms stalls.

Examples

  • tcpdump -i eth0 'tcp[tcpflags] & tcp-ack != 0' captures ACK packets
  • TCP_NODELAY socket option disables Nagle for latency-sensitive apps
  • Three duplicate ACKs trigger TCP fast retransmit without waiting for timeout

Related Protocols

Related Terms