Many protocols are acknowledgement-based, meaning that they positively acknowledge receipt of messages. The Internet's
Transmission Control Protocol (TCP) is an example of an acknowledgement-based protocol. When computers communicate via TCP, received
packets are acknowledged by sending a return packet with an ACK bit set. While some protocols send an acknowledgement for each
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
checksums 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
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. == Hardware acknowledgement ==