您的位置:首页 > 其它

服务器的3种异常情况

2013-10-29 10:45 274 查看
1:服务器主机崩溃

由于服务器主机崩溃时,已有的网络连接上发不出任何东西,所以客户机TCP使用重传机制持续重传数据分节,试图从服务器上接受一个ACK。

源自Berkley的重传数据分节为12次,放弃前等待的时间约为9分钟。

当客户端终于放弃重传时,(这段时间内服务器没有启动),

假设服务器主机已崩溃,对客户的数据分节没有响应,则错误为ETIMEOUT.

如果是中间路由器判断服务器主机不可达,且以一个目的地不可达的ICMP消息回应,则错误是EHOSTUNREACH或者ENETUNREACH.

尽管客户端还是会发现对方已崩溃或者不可达,但是要等待9分钟,,然而有时想尽快检测出种情况,需要设置套接子选项SO_KEEPALIVE.



2:服务器主机崩溃后重启

如果客户端在服务器主机崩溃后不主动发送数据给服务器,客户是不会知道服务器已经崩溃的。(假设没有设置SO_KEEPALIVE)

如果服务器主机崩溃后重启,它的TCP将丢失崩溃前的所有信息,所以服务器对接受的客户端的数据以RST响应。

在客户端,当RST到达时,客户端当前正处于recv调用,导致他返回一个ECONNRESET. 

3:服务器主机关闭

客户端通过recv调用接受到服务器发送的FIN,recv返回0。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐