https://www.cnblogs.com/sunlong88/p/12845035.html
一、TCP保证可靠性的两个协议:
1. 停止等待协议
每发送完一个分组,就停止发送,等待对方确认,收到确认后再发送下一个分组。
2. 连续ARQ协议
利用滑动窗口,位于滑动窗口内的所有分组都可以连续的发送出去,而不需要逐个等待对方的确认。A每收到一个确认,就把发送窗口向前滑动一个分组的位置。B采用累积确认的方式,对按序到达的最后一个分组发送确认(就是最后这个分组的编号),就表示这个分组之前的所有分组都收到了。
(1)优点:信道利用率高,容易实现,即使确认丢失,也不必重传。
(2) 缺点:不能向发送方反映出接收方已经正确收到的所有分组的信息。
二、TCP心跳机制:
心跳机制是定时发送一个自定义的结构体(心跳包),让对方知道自己还活着,以确保连接的有效性的机制。
心跳检测步骤:
1.客户端每隔一个时间间隔发生一个探测包给服务器
2.客户端发包时启动一个超时定时器
3.服务器端接收到检测包,应该回应一个包
4.如果客户机收到服务器的应答包,则说明服务器正常,删除超时定时器
5.如果客户端的超时定时器超时,依然没有收到应答包,则说明服务器挂了
心跳包的发送,通常有两种技术:
1、应用层自己实现的心跳包
2、TCP的KeepAlive保活机制