建立连接后,客户端如果崩溃会发生什么?

96 阅读1分钟

1.没有开启keepalive,双方无数据交互,客户端主机崩溃:

服务器端一直有一个已建立的状态,知道端服务器重启进程。

2.没有开启keepalive,双方无数据交互,客户端进程崩溃:

内核回收完成进程的资源,向服务器端发送FIN报文,后续的挥手过程仍在内核中,进程不用参与。

3.开启keepalive,双方无数据交互,客户端崩溃:

如果有一段时间双方没有发生与连接相关的时间,服务器会每隔四年发送一个探测报文,如果连续发几个探测报文都没有收到回复,就把错误报告给应用程序,断开连接。

3.双方有数据传输,客户端主机宕机,又迅速重启:

客户端主机宕机,服务器发送的报文一直没有收到回复,服务器就重传发送的报文,如果客户端在短时间内重启,可以收到服务器重传的报文,客户端回复RST报文重置连接。

4.双方有数据传输,客户端主机宕机,但无法重启:

服务器会一直重传报文,知道达到最大重传上线,将错误报告给应用程序,中断连接。