1、ACK包可以和其他包合在一起,比如ACK包可以携带数据
2、可以接收多个数据包后,一次性给一个应答,不用每个数据包一一对应给应答
3、在通信过程中,通过接收到的包的ack值可以判断是否是上一个本机发送包的应答包(ack值与上一个本机发送包的seq有关),seq值和ack值的确定规则如下:
三次握手:
第一次握手(发送):seq为x(x为任意值),无视ack(因为是第一个包,不需要给其他包应答)并进入syn_send状态,等待服务器确认。
第二次握手(发送):seq为y(y为任意值),ack等于接收包seq+1(即x+1),发送了SYN+ACK包,服务器进入SYN_RECV状态。
第三次握手(发送):seq等于上一个本机发送包seq+1(即x+1),也就是1,ack等于接收包seq+1(即y+1),向服务器发送确认包ACK, 此包发送完毕后,客户端和服务器进入established状态。
数据传输:
某主机发送的seq和ack是根据上一个接收包的seq、ack和len得到&#x