ACK (Acknowledge character)數據通信中的確認字符

簡介

ACK的全稱爲Acknowledge character,即確認字符,表示接收到的字符無錯誤。

接收站對所收到的報文進行檢查,若未發現錯誤,便向發送站發出確認回答ACK,表明信息已被正確接收,並準備好接收下一份報文。該控制字符可由中心結點發送,也可由遠地結點發送。

其格式取決於採取的網絡協議。當發送方接收到ACK信號時,就可以發送下一個數據。如果發送方沒有收到信號,那麼發送方可能會重發當前的數據包,也可能停止傳送數據。具體情況取決於所採用的網絡協議

1、TCP報文格式中的控制位由6個標誌比特構成,其中一個就是ACK,ACK爲1表示確認號有效,爲0表示報文中不包含確認信息,忽略確認號字段。

2、ACK也可用於AT24cxx這一系列的EEPROM中。

3、在USB傳輸中,ACK事務包用來向主機/設備報告包正確的傳輸。

 

否認字符

否認字符NAK( Negative Acknowledge)的含義爲接收站對所收到的報文進行檢查,若發現錯誤,便向發送站發送否認回答NAK,表示報文有錯,並要求重發。

同步字符

同步字符SYN( Synchronousidle)表示無論是中心結點還是遠地結點,在發送信息或回答之前,都要先發送同步字符,用以實現或保持發送站和接收站之間的同步。 

轉義字符

轉義字符DLE( Data Link Escape)用於改變緊隨其後的有限個字符的意義,以提供附加的數據鏈路控制字符。

 

過程如下

ACK在三次握手中用到,三次握手的過程如右圖所示。

三次握手

三次握手

第一次

第一次握手:建立連接時,客戶端發送syn包(seq=j)到服務器,並進入SYN_SENT狀態,等待服務器確認;SYN:同步序列編號(Synchronize Sequence Numbers)。

第二次

第二次握手服務器收到syn包,必須確認客戶的SYN(ack=j+1),同時自己也發送一個SYN包(seq=k),即SYN+ACK包,此時服務器進入SYN_RECV狀態。

第三次

第三次握手:客戶端收到服務器的SYN+ACK包,向服務器發送確認包ACK(ack=k+1),此包發送完畢,客戶端和服務器進入ESTABLISHED(TCP連接成功)狀態,完成三次握手。

完成三次握手,客戶端與服務器開始傳送數據。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章