服务器的3种异常情况

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。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值