Acknowledgment (ACK)

alpharithms fallback 1

In packet-switched network communications, acknowledgments (ACK) are signals used between sender and receiver to indicate the receipt of a data segment. ACKs can be used to directly indicate successful receipt of uncorrupted data or indirectly to indicate retransmission is necessary.

In Transmission Control Protocol (TCP) ACKs are represented as 32-bit values in the segment header and indicate the last sequence number for which data was successfully received.

For example, a sender may transmit 3 data segments with sequence numbers (SEQ) ranging from 0-2. If the #3 segment were to be lost or corrupted, the receiver would respond with an ACK for SEQ0 and SEQ1 only. Thus, the sender can infer that SEQ2 needs to be re-transmitted.

Duplicate Acknowledgments

In addition to receiving ACKs for packets prior to the most recently transmitted, the receipt of duplicate ACKs signals a sender of packet loss or recurrent corruption. Take the example above again, with data segments 0-2 being transmitted.

The sender then receives 3ACKs for SEQ1. This indicates that SEQ1 was the last-accepted segment and that all segments beyond that SEQ should but re-transmitted.

Negative Acknowledgments

In simpler implementations of reliable data transfer (RDT) protocols, a single 1 or 0 can be used, agnostic to SEQ number to indicate that the most recent transmission was not accepted. Such stop-and-wait protocols result in very limited utilization of network capacity and are deemed outdated and inefficient.

Zαck West
Full-Stack Software Engineer with 10+ years of experience. Expertise in developing distributed systems, implementing object-oriented models with a focus on semantic clarity, driving development with TDD, enhancing interfaces through thoughtful visual design, and developing deep learning agents.