文章目录
- ACK机制——确认应答机制
- 超时重传
ACK机制——确认应答机制
当我们客户端发送了一个数据,seq是1100,那么服务端在收到时就会回一个ack=101的ACK包,代表101之前的包我都收到了,下面请你从101继续发送。然后客户端就会发送101200,服务端收到后再回一个ack=201,在书写过程中,我们一定要先把标志位置1,然后再发送数据包,否则包是失效的。
超时重传
那么如果我们在发送数据的时候,有的包丢失了怎么办呢,这时我们就用到了超时重传机制
它有两种情况,一种是我们发送的包丢失了,还有一种是回的ack包丢失了
在我们客户端发送数据的同时会有一个定时器,如果在规定时间没有收到服务端回复的ack,那么就证明我们的包丢失,那就再给服务端重新发送以下丢失的包。直到在规定时间收到服务端回复的ack。
那如果是服务端回复的ack丢失,道理也基本相同,也是在规定时间内没有收到服务端回复的ack包,那么就再次发送一遍数据,不同的是因为服务端已经接收到过这个数据了,所以不会再次处理这个数据,就把重复的包丢弃,然后重新回复一遍ack。