TCP如何处理异常连接

本文探讨了TCP连接在服务进程异常、服务端宕机、重启等情况下的处理机制。当服务进程被kill或服务端正常关机时,TCP会进行正常的四次挥手关闭连接。服务端宕机且未重启时,客户端可能通过keep-alive检测到异常;若客户端在发送数据,可能会因未收到ACK而重发直至超时。服务端重启后,会发送RST报文。若进程未读取接收缓存,发送窗口会减小直至为0,通过探测报文确认窗口状态。
摘要由CSDN通过智能技术生成

TCP是面向连接的,连接是依靠通信的双方共同维护一个连接状态。
如果某一方出现异常情况 ,如:

  • 服务进程被kill掉、服务端正常关机

    会正常的四次挥手,然后关闭连接

  • 服务端突然掉电、宕机

    • 如果没有重启

      如果客户端没有给发送数据,会等待触发keep-alive机制才发现是否是正常连接。

      如果客户端正在发送数据,会由于一直没有收到ACK而一直重发,直到达到重发次数才返回给应用层错误。【可以通过调整tcp_retries2参数让应用层及时收到错误】

    • 如果重启了

      服务端收到客户端的报文,发送RST报文给对方

  • 进程一直没有去取接收缓存区的数据

    滑动窗口机制,发送窗口会慢慢减少直到0。之后会对方会发送探测报文,来询问窗口是否改变

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值