TCP故障场景
TCP故障场景
TCP连接后一端断电和进程崩溃有什么区别
客户端进程崩溃:内核会发送 FIN 与服务端进行四次挥手
客户端主机宕机:(服务端会发送数据)服务端触发超时重传,当重传总间隔时长达到一定阈值后断开 TCP 连接;(服务端不会发送数据)[开启TCP keepalive机制] 服务端在一段时间没有进行数据交互时触发 TCP keepalive 探测对方是否存在,对方已消亡则断开自身TCP连接 [没开] 服务端TCP连接会一直存在且一直保持在 ESTABLISHED已建立状态
拔网线后TCP连接是否存在?
有数据传输:客户端拔网线后如果服务端发送数据报文,如果在服务端重传次数没有达到最大之前客户端就插回了网线,那么双方原本的 TCP 连接还能正常存在;否则服务端就会断开 TCP 连接,等客户端插回网线后向服务端发数据,因为服务端已断开与客户端相同四元组的 TCP 连接,所以就会回 RST 报文,客户端收到后就会断开TCP连接
无数据传输:如果双方都没开 TCP keepalive,那么客户端拔网线后如果客户端一直不插回网线,客户端和服务端的TCP连接状态将会一直保持存在;如果双方都开启了,那么在客户端拔掉网线后,如果客户端一直不插回网线,TCP keepalive 会探测到对方TCP 连接没存活于是断开 TCP 连接。而如果在 TCP 探测期间客户端插回了网线,那么双方原本 TCP 连接还能正常存在