TCP是面向连接的,连接是依靠通信的双方共同维护一个连接状态。
如果某一方出现异常情况 ,如:
-
服务进程被kill掉、服务端正常关机
会正常的四次挥手,然后关闭连接
-
服务端突然掉电、宕机
-
如果没有重启
如果客户端没有给发送数据,会等待触发keep-alive机制才发现是否是正常连接。
如果客户端正在发送数据,会由于一直没有收到ACK而一直重发,直到达到重发次数才返回给应用层错误。【可以通过调整tcp_retries2参数让应用层及时收到错误】
-
如果重启了
服务端收到客户端的报文,发送RST报文给对方
-
-
进程一直没有去取接收缓存区的数据
滑动窗口机制,发送窗口会慢慢减少直到0。之后会对方会发送探测报文,来询问窗口是否改变