確認訊息也稱為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]。
相關條目
參考資料