tcp不同场景下的关闭分析
Posted 黑暗遊侠
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tcp不同场景下的关闭分析相关的知识,希望对你有一定的参考价值。
tcp的关闭可以分为两大类场景
一、socket主动close,或在socket没有close的情况下进程exit退出,或kill -9强制关掉进程( kill掉进程时,内核会清理掉文件描述符(包括socket描述符 ))
这3种场景都可以看做同一种情况。具体又可以分为两种情况
- 如果发送缓冲区或接收缓冲区任然有数据未发送或未接收,则会发rst包给对端,对端收到后不回应直接关闭连接
- 如果缓冲区没有数据,则正常4次握手关闭连接
二、断网,或断电
- 这种情况下,对端感知不到。如果应用层开发人员自己做了心跳检测,则心跳超时达到预设次数后就可以关闭。
- 如果应用层没有开发心跳功能。则依赖于tcp的保活机制(keepalive),原理和心跳一样,超时重发,直到达到重发次数上限,关闭连接。
以上是关于tcp不同场景下的关闭分析的主要内容,如果未能解决你的问题,请参考以下文章
有关服务端主动关闭socket带来的几个问题分析--tcp四次握手半关闭问题导致