Everipedia Logo
Everipedia is now IQ.wiki - Join the IQ Brainlist and our Discord for early access to editing on the new platform and to participate in the beta testing.
Acknowledgement (data networks)

Acknowledgement (data networks)

In data networking, telecommunications, and computer buses, an acknowledgement (ACK) is a signal that is passed between communicating processes, computers, or devices to signify acknowledgement, or receipt of message, as part of a communications protocol. The negative-acknowledgement (NAK or NACK[1]) signal is sent to reject a previously received message, or to indicate some kind of error. Acknowledgements and negative acknowledgements inform a sender of the receiver's state so that it can adjust its own state accordingly.

Oftentimes, data messages in telecommunications contain checksums to verify the integrity of the payload and header. Checksums work in such a way that if a single bit of the data is corrupted, the checksum would have a different value, so they can provide an inexpensive way to check for (probable) signal integrity. If a message is received with an invalid checksum (that is, the data received would have a different checksum than the message had), the receiver can know that some information was corrupted. Most often, when checksums are employed, a corrupted message received will either not be served an ACK signal, or will be served a NAK signal.

Acknowledgement characters

When the ASCII code is used to communicate between computer terminals, each terminal can send an enquiry character to request the condition of the other. The receiver of this character can respond with ACK (00001102 or 616) to indicate that it is operating normally, or NAK (00101012 or 1516) to indicate an error condition. Unicode provides visible symbols for these characters, U+2406 (␆) and U+2415 (␕).

Protocol usage

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 back a packet with an ACK bit set. The TCP protocol allows these acknowledgements to be included with data that is sent in the opposite direction.

Some protocols send a single acknowledgement per packet of information. Other protocols such as TCP and ZMODEM allow many packets to be transmitted before receiving acknowledgement for any of them, a procedure necessary to fill high bandwidth-delay product links with a large number of bytes in flight.

Other protocols are NAK-based, meaning that they only respond to messages if there is a problem. Examples include most reliable multicast protocols which send a NAK when the receiver detects missing packets. Still other protocols make use of both NAKs and ACKs. Binary Synchronous Communications (Bisync) and Adaptive Link Rate (for Energy-Efficient Ethernet) are examples.

Still other 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 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 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.

Hardware acknowledgement

Some computer buses have a dedicated acknowledge wire in the control bus used to acknowledge bus operations: DACK used for ISA DMA; DATACK used in the STEbus, the data transfer acknowledge pin of the Motorola 68000 that inspired the title of DTACK Grounded, etc. Some computer buses do not always acknowledge every write; some or all of the writes use a posted write.

The I²C serial bus has a time slot for an acknowledgment bit after each byte.[2][3]

See also

  • C0 and C1 control codes

  • Flow control (data)

References

[1]
Citation Linktools.ietf.orgRFC 3941
Sep 30, 2019, 11:28 AM
[2]
Citation Linki2c.info"I2C Bus Specification".
Sep 30, 2019, 11:28 AM
[3]
Citation Linkwww.ti.com"Understanding the I2C Bus" (PDF). Figure 8.
Sep 30, 2019, 11:28 AM
[4]
Citation Linkwww.its.bldrdoc.gov"Federal Standard 1037C"
Sep 30, 2019, 11:28 AM
[5]
Citation Linktools.ietf.org3941
Sep 30, 2019, 11:28 AM
[6]
Citation Linki2c.info"I2C Bus Specification"
Sep 30, 2019, 11:28 AM
[7]
Citation Linkwww.ti.com"Understanding the I2C Bus"
Sep 30, 2019, 11:28 AM
[8]
Citation Linkwww.its.bldrdoc.gov"Federal Standard 1037C"
Sep 30, 2019, 11:28 AM
[9]
Citation Linken.wikipedia.orgThe original version of this page is from Wikipedia, you can edit the page right here on Everipedia.Text is available under the Creative Commons Attribution-ShareAlike License.Additional terms may apply.See everipedia.org/everipedia-termsfor further details.Images/media credited individually (click the icon for details).
Sep 30, 2019, 11:28 AM