TCP异常情况
1.进程终止: 进程终止会释放文件描述符, 仍然可以发送FIN. 和正常关闭没有什么区别
进程的结束,也会导致四次挥手的进行~~
2.机器重启: 和进程终止的情况相同.(按照正确的流程重启)
此时系统就会先杀死进程,也就会触发四次挥手~~
但是随着进程的杀死,系统也就会关闭,此时四次挥手就可能出现还没挥完的情况
3.机器掉电/网线断开: 接收端认为连接还在, 一旦接收端有写入操作, 接收端发现连接已经不在了, 就会进行reset. 即使没有写入操作, TCP自己也内置了一个保活定时器, 会定期询问对方是否还在. 如果对方不在, 也会把连接释放.
两种情况:
1). 如果主机B是发送方~~ 主机B只要一发送数据,就会发现对方没有ACK(没有回应)~~ , 进一步的触发超时重传,进行一系列的重试,达到一定次数,就会重置连接~~(使用复位报文段) 也就是RST(6个标志位之一) ,重置操作任然没有回应,就会释放连接~~
2).如果主机B是接收方~~本来就要等主机A发送消息,但是主机A此时已经悄悄的下线了,所以就会浪费一定资源,但是在TCP协议中内置了"保活机制",此时主机B每隔一段时间就会给主机A发送一个很小的报文(PING),期待对方返回一个回应(PONG),尝试一定次数后,主机A任然没有回应,也会释放连接。
TCP总结
为什么TCP这么复杂