ACK 定义
ACK (Acknowledge character)
即是确认字符,在数据通信中,接收站发给发送站的一种传输类控制字符。表示发来的数据已确认接收无误。
在TCP/IP
协议中,如果接收方成功的接收到数据,那么会回复一个ACK
数据。通常ACK信号
有自己固定的格式,长度大小,由接收方回复给发送方。
ACK 执行过程
ACK
即确认字符,表示接收到的字符无错误
接收站对所收到的报文进行检查,若未发现错误,便向发送站发出确认回答ACK
,表明信息已被正确接收,并准备好接收下一份报文。该控制字符可由中心结点发送,也可由远地结点发送
其格式取决于采取的网络协议。当发送方接收到ACK
信号时,就可以发送下一个数据。如果发送方没有收到信号,那么发送方可能会重发当前的数据包,也可能停止传送数据。具体情况取决于所采用的网络协议:
TCP
报文格式中的控制位由6个标志比特构成,其中一个就是ACK
,ACK
为1表示确认号有效,为0表示报文中不包含确认信息,忽略确认号字段。ACK
也可用于AT24cxx
这一系列的EEPROM
中。- 在
USB
传输中,ACK
事务包用来向主机/设备报告包正确的传输。
ACK 应用案例
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
连接成功)状态,完成三次握手。 完成三次握手,客户端与服务器开始传送数据。
细化图如下: