简介
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连接成功)状态,完成三次握手。
完成三次握手,客户端与服务器开始传送数据。