In data networking, telecommunications, and , an acknowledgement ( ACK) is a signal that is passed between communicating processes, , or devices to signify acknowledgement, or receipt of message, as part of a communications protocol. Correspondingly a negative-acknowledgement ( NAK or NACK) is a signal that is sent to reject a previously received message or to indicate some kind of error. Acknowledgments and negative acknowledgments inform a sender of the receiver's state so that it can adjust its own state accordingly.
ACK and NAK symbols may also take the form of single bits or depending on the protocol data link layer definition or even as a dedicated wire at physical layer.
While some protocols send an acknowledgement per each network packet received, other protocols such as TCP and ZMODEM allow many packets to be transmitted before sending an acknowledgement for the set of them, a procedure necessary to fill high bandwidth-delay product links with a large number of bytes in flight.
Some protocols are NAK-based, meaning that they only respond to messages if there is a problem. Examples include many reliable multicast protocols which send a NAK when the receiver detects missing packets or protocols that use to verify the integrity of the payload and header.
Still other protocols make use of both NAKs and ACKs. Binary Synchronous Communications (Bisync) and Adaptive Link Rate (for Energy-Efficient Ethernet) are examples.
The acknowledgement function is used in the automatic repeat request (ARQ) function. Acknowledgement frames are numbered in coordination with the frames that have been received and then sent to the transmitter. This allows the transmitter to avoid Buffer overflow or underrun at the receiver, and to become aware of any missed frames.
In IBM Binary Synchronous Communications, the NAK is used to indicate that a transmission error was detected in the previously received block and that the receiver is ready to accept retransmission of that block. Bisync does not use a single ACK character but has two control sequences for alternate even/odd block acknowledgement.
ACK and NAK based methodologies are not the only protocol design paradigms. Some protocols such as the RC-5, User Datagram Protocol (UDP), and X10 protocols perform blind transmission with no acknowledgement, often transmitting the same message multiple times in hopes that at least one copy of the message gets through.
The I²C serial bus has a time slot for an acknowledgment bit after each byte.
|
|