TCP通信过程中异常情况整理
本文主要叙述,客户端与服务器端在TCP链接已经建立且正常通信过程中,发生以下几种异常情况时TCP链接会产生的各种现象。
- 服务器主机崩溃
- 服务器主机崩溃后重启
- 服务器主机断网或者中间路由器出现故障
- 服务器主机断网或者中间路由器出现故障后又恢复
- 服务器关机或服务器进程被终止
- 服务器的端口被关闭
- TCP的保活机制
1. 服务器主机崩溃
客户端在给服务器发送数据时,由于收不到服务器端回传的ACK确认报文,正常情况下,客户端TCP均会进行超时重传,一般为重传12次大约9分钟后才放弃重传,并关闭客户端TCP链接。
2. 服务器主机崩溃后重启
如果服务器主机在崩溃重启的这段时间里,客户端没有向服务器发送数据,即客户端没有因重传次数超过限制关闭TCP链接。则在服务器重启后,当客户端再向服务器发送TCP报文时,由于服务器中的TCP链接已经关闭,会直接向客户端回复RST报文,客户端在接收RST报文后关闭自己的TCP链接。
3. 服务器主机断网或者中间路由器出现故障
与情况1类似,客户端会进行超时重传,直到重传次数超过后放弃重传,并关闭客户端TCP链接。(因为TCP中会忽略目的主机不可达和目的网络不可达的ICMP报文,并进行重传,直