tcp不同场景下的关闭分析

Posted 黑暗遊侠

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tcp不同场景下的关闭分析相关的知识,希望对你有一定的参考价值。

tcp的关闭可以分为两大类场景

一、socket主动close,或在socket没有close的情况下进程exit退出,或kill -9强制关掉进程( kill掉进程时,内核会清理掉文件描述符(包括socket描述符 ))

这3种场景都可以看做同一种情况。具体又可以分为两种情况

  1. 如果发送缓冲区或接收缓冲区任然有数据未发送或未接收,则会发rst包给对端,对端收到后不回应直接关闭连接
  2. 如果缓冲区没有数据,则正常4次握手关闭连接

二、断网,或断电

  • 这种情况下,对端感知不到。如果应用层开发人员自己做了心跳检测,则心跳超时达到预设次数后就可以关闭。
  • 如果应用层没有开发心跳功能。则依赖于tcp的保活机制(keepalive),原理和心跳一样,超时重发,直到达到重发次数上限,关闭连接。

以上是关于tcp不同场景下的关闭分析的主要内容,如果未能解决你的问题,请参考以下文章

数据分析 | 基于智能标签,精准管理数据

TCP BBR算法的带宽敏感性以及高丢包率下的优化

有关服务端主动关闭socket带来的几个问题分析--tcp四次握手半关闭问题导致

tcp_tw_reusetcp_tw_recycle 使用场景及注意事项

AbTest —— 不同场景下的应用模式

不同场景下的CUDA原子操作性能