- 进程终止: 进程终止会释放文件描述符, 仍然可以发送FIN. 和正常关闭没有什么区别.
- 机器重启: 和进程终止的情况相同.
- 机器掉电/网线断开: 接收端认为连接还在, 一旦接收端有写入操作, 接收端发现连接已经不在了, 就会进行reset. 即使没有写入操作, TCP自己也内置了一个保活定时器, 会定期询问对方是否还在. 如果对方不在, 也会把连接释放。
TCP保活计时器的作用:
另外,应用层协议往往自己就有保活探测机制, 因为TCP的保活机制太慢了,足足要等75*10秒才会断开连接,应用层可以自己制定保活机制。 例如HTTP长连接中, 就会定期检测对方的状态。