确认消息
![本页使用了标题或全文手工转换](http://images.weserv.nl/?url=//upload.wikimedia.org/wikipedia/commons/thumb/c/cd/Zh_conversion_icon_m.svg/35px-Zh_conversion_icon_m.svg.png)
![]() | 此条目可参照英语维基百科相应条目来扩充。 |
确认消息也称为ACK消息,是在计算机网络、电信或总线中通讯协议的一部分,是装置或是行程发出的消息,表示接收端之前已收到资料。否定应答也称为NAK消息或是NACK消息[1]则是接收端发出,拒绝之前收到资料,或是表示之前收到资料有误的消息。确认消息和NAK消息可以让发送端知道接收端的情形,以便发送端对应调整状态。
许多通讯协议中会有检查码来验证负载以及信头的完整性。检查码可以用来检查资料是否受损。若接收到的消息,其检查码是无效的(依照规则算出的检查码和消息中的检查码不同),接收方可以知道其中有资料受损。若有检查码的通讯协议,接收方在收到检查码无效的资料时,不会回复ACK消息,或是会回复NAK消息。
ACK字符
ASCII中有包括ACK字符(00001102或616),接收端可以发送此字符表示接收成功,也有NAK 字符(00101012或1516),接收端可以发送此字符表示无法接收,或是接收失败[2]。Unicode中有这些字符的可视符号:U+2406(␆)和U+2415(␕)。
通讯协议中的使用
许多通讯协议是以ACK消息为基础,表示其接收方收到消息后会回复ACK消息。互联网的传输控制协议(TCP)就是以ACK为基础的通讯协议。计算机用TCP通讯时,收到网络数据包会回复一个有ACK消息的数据包。TCP协议允许ACK消息放在反方向发送的资料中。
有些通讯协议要针对每一个数据包回复ACK消息。而其他通讯协议(像是TCP及ZMODEM)允许发送方在接收到ACK消息前,可以发送出多个数据包。若网络的带宽时延乘积大,而且有大量资料要传输,有必要使用此作法。
在ARQ(自动重传请求)协议中也有用到确认消息,确认帧会配合收到的帧进行编号,然后送回发送端,发送端可以知道是否有遗漏的数据包。
也有些通讯协议将ACK集成在其字段中,例如控制局域网(CAN)中就有应答(ACK)位元,装置收到资料后需在此字段回应,若没有回应,即为通讯错误[3]。
相关条目
参考资料
- ^ Negative-Acknowledgment (NACK)-Oriented Reliable Multicast (NORM) Building Blocks. November 2004. RFC 3941.
- ^ Control characters in ASCII and Unicode. [2020-03-04].
- ^ Controller Area Network (CAN) 概述. National Instruments Corporation. 2009-09-09 [2015-09-07].