確認訊息也稱為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]

相關條目

編輯

參考資料

編輯
  1. ^ Negative-Acknowledgment (NACK)-Oriented Reliable Multicast (NORM) Building Blocks. November 2004. RFC 3941. 
  2. ^ Control characters in ASCII and Unicode. [2020-03-04]. (原始內容存檔於2021-11-19). 
  3. ^ Controller Area Network (CAN) 概述. National Instruments Corporation. 2009-09-09 [2015-09-07].