网络错误

10055  ---  队列已满或者缓冲区空间不足, 以前只所以出现这种问题,就在于收到10060后,继续send 修改办法就是sleep一段时间或者轮询不断的send.

       主要还是connect或者send过于频繁,导致系统资源耗尽。

 

10048  --- 本地没有可以使用的端口,最大的可能是1-65535大部分端口都处于time_wait状态,该状态出现在ip测试工具测试短连接的时候。

由于tcp默认的四次握手关闭后,主动关闭端(ip + 端口)会进入一个TIME_WAIT状态,

至于Time_wait状态的解释请参见<<UNP1>>38页,新版

windows下默认是30秒,如下中。

 

 

10060  --- connect 连接超时,或者send, recv超时。当然后2者是需要设置SO_RCVTIMEOSO_SNDTIMEO.

这里的connect超时是直接堵塞调用connect, 没有使用select + fd可读或者可写的方式来判断的超时

 

10054 --- 非常有名的错误,连接被远端服务器重置。

这个问题的关键是看,10054RST包是由谁发出来的

就目前来说,可能的成因如下:

(1)    被网络设备或者防火墙之类的强制关闭。这个碰到的最多,许多技术支持都发现了该问题

(2)    对端的进程异常退出,出现段错误或者没有关闭连接直接退出

(3)    使用so_linger选项

(4)    目前发现,当windows 下发送数据量非常大时,客户端操作系统也会产生10054的错误给客户端的发送程序,成因

 

UDPICMP包:

       IP服务测试中发现,当请求的UDP端口在某个主机上不存在时,会产生大量的icmp包。这是由于当udp包访问一个不存在的端口时,对端内核会自动回复一个icmp错误包。

但是这样的机制对于应用层是没有意义的,因为系统调用比如sendto, 只是把数据写入tcp/ip协议栈,就算调用成功,何时发送都要取决于内核,何况这个异步错误。

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值