1. 10053

这个错误码的意思是:  A established connection was aborted by the software in your host machine, 一个已建立的连接所在主机的软件中止

2. 10054

这个错误码的意思是: Connection closed by peer, 连接已经被对方关闭

10053 出现的可能原因是:数据传输超时或者协议错误。

当主动端发起连接服务器的请求,连接成功之后发送数据请求给服务器,服务器处理时间稍长,导致客户端超时关闭,等到服务器将数据写入缓冲区后,TCP协议发现socket已经关闭,所以服务器会出现10053的错误码,这是正常的现象。

10054 出现的可能原因是:对端关闭了socket(可能是异常也可能是超时),然而本端还没有感知到,依旧写入数据(对端接收缓冲区有数据),对端发现有未处理的数据直接回复RST重置连接标记,表明对端已经关闭了socket

检测出这个错误码一般是对端发送了RST包给本端,本端接收这个包, 表示对端出现了异常:  四种情况发送RST码:

1. 本端连接对端未打开的端口, 对端发送RST包

2. 请求超时

3. 已关闭连接上收到数据:

    主要出现在连接的关闭过程,当请求关闭连接的一方在两个MSL后,仍然收到服务机发送来的最后一个FIN,说明其最后发送出的ACK丢包, 服务机又重发了FIN包,而此时客户机已经不处于TIME_OUT状态,连接已经彻底不存在,再收到服务机发送来的FIN,就会直接回复一个RST包,让服务机直接关闭连接,抛弃 缓冲区的所有数据。

    举一个其他例子: 主动端关闭socket,发送了fin给被动端,此时主动端无法接受和发送数据了,此时如果被动端调用read会收到fin(读取0),如果被动端write给主动端,主动端会发送rst,但rst不会立即通知到被动段,只有被动端在第二次write时,数据不会发送给主动端而是发出一个SIGPIPE信号而终止被动端(可捕获忽略该信号)

4. close连接时, 接收缓冲区还有数据

    如果close连接时,接收缓冲区还有对端发过来的数据,则回一个RST,直接丢弃接收缓冲区的内容

5. 设置了so_linger选项但是 l_lingertime 为0, close 时会发出RST

注意到10053和10054出现的原因有重复,以下是区分他俩的一个文章:

http://www.blogjava.net/pandawang/archive/2013/11/28/406922.html

某端出现10053和10054的在于主动端(客户端)和被动端(服务器)建立连接后,服务器非正常关闭时有没有关闭socket,这个fin包是不是在rst之前被客户端收到,fin先于rst,则10053

update problem:

今天启动flask的自带server,非常简单,就是一个直接返回字符串(有sleep操作,故意的),发送一个请求给flask,这个请求会超时: 1. 在本机上发,2. 在其他主机上发;

发现这俩种方法的结果不同,第一种会打印10053的错误信息,第二种不会;

经过microsoft message analyzer 抓包工具分析, 第一种操作,数据包是在环路接口流动,socket很快就关闭并回收了,导致server将响应返回时报错,协议栈认为是自己关闭的所以报的10053,但其实应该是10054.

因为在一个已经关闭的socket写会引起对端发送rst,连接重置,但因为是回路接口,windows的实现可能认为是自己关闭的,所以错误码才是10053。

第二种因为不再同一个机器,对端关闭不影响,数据发送还是成功的(对端回复了rst),所以没有报错。

同样的实验在linux下面运行,报的错是 error 32 broken pipe。这点和Windows不一样,如果协议栈认为是自己关闭的,在linux上的错误应该是 error 53 ECONNABORTED。

所以数据传输的错误码,在环路接口上可能与正常的理解不同,同时与系统相关。

以下附上抓包工具的结果:

下图是client和server在统一机器上的情况:其报错10053,看右侧的第二个框,其响应并没有写入完全,就报错,所以断定是socket资源已经被销毁了,但由于是在同一个机器,所以协议层认为是自己断的,报了10053

ps:环路接口每个syn,fin,ack包都重发一遍了,不知道为啥。。。。

下图是client和server不在同一机器上的情况:其未报10053, 可以看39938消息,数据是写入缓冲区成功了,发送的时候对端回了rst,参考39950。 flask自带的server可能处理了这种并没有打印连接重置的错误

ps:

1. close 是优雅关闭过程,当socket的引用计数减少到0,开始优雅关闭流程,发送fin包,经四次握手关闭

2. shutdown 是直接破坏socket的通信,如果指定关闭WR,则发送fin包给对方

转载于:https://www.cnblogs.com/pengyusong/p/6433516.html

【理解】 Error 10053和 Error 10054相关推荐

  1. 10054 java_【理解】 Error 10053和 Error 10054

    1. 10053 这个错误码的意思是:  A established connection was aborted by the software in your host machine, 一个已建 ...

  2. ffmpeg rtmp 推流错误WriteN, RTMP send error 10053 10038

    利用ffmepg推264流到rtmp服务端出现错误WriteN, RTMP send error 10053,具体如下图所示. 图1推流到rtmp服务错误 原因是视频流缺少SPS,PPS信息,加上这两 ...

  3. Socket error Event: 32 Error: 10053

    索引关键词 Socket error Event: 32 Error: 10053. Connection closing...Socket close. Connection closed by f ...

  4. 解决git 中 error 10053 问题

    解决git 中 error 10053 问题 问题描述: git pull 时,报错:fatal: unable to access 'https://github.com/huangyuanyin/ ...

  5. ssh连接失败报错:Socket error Event: 32 Error: 10053.

    问题:使用远程连接工具ssh连接局域网内的主机,刚连接成功一会儿就断开连接,报下面的错误信息 Socket error Event: 32 Error: 10053. Connection closi ...

  6. Socket error Event: 32 Error: 10053.

    Socket error Event: 32 Error: 10053. 问题:远程连接中,远程计算机自动重启. 考虑为远程协议或端口问题,远程的话只一下下就手动断开,试试会不会无问题,无问题的话再从 ...

  7. outlook express: socket error 10053 0x800ccc0f

    最近这几天国外几个公司的用户好多都在用OUTLOOK EXPRESS的时候提示:socket error 10053 0x800ccc0f,经确认服务器的连接正常,如果我使用TELNET测试SMTP连 ...

  8. Delphi 通信报Asynchronous socket error 10053错误的一个解决方法

    在使用Delphi中的TClientSocket和TServerSocket进行通信编程时,当使用TClientSocket这方的客户端使用TClientSocket.close断开连接并退出程序时, ...

  9. asynchronous socket error 10053 socket和http的区别

    1.当终端连上了自己电脑的服务器,Androidstdio也连上了终端 2.当我切换WiFi的时候,WiFi是不同网段的,给电脑分配了不同网段的IP,这时候调试工具就会报"asynchron ...

最新文章

  1. 魔术索引(返回索引值最小的一个)
  2. 【数据结构】树状数组 例题剖析
  3. 知识图谱和图分析与可视化
  4. VB.NET启动外部程序
  5. VMWare CentOS6.x克隆方法
  6. 基础运维:shell入门
  7. RxJava系列四(过滤操作符)
  8. URLConnection
  9. linux下的静态库与动态库
  10. 爬虫-古试词网验证码手工打码访问登陆后页面
  11. jquery-绑定事件与解除事件的绑定
  12. xshell删除文件夹命令_ssh远程连接GPU服务器进行深度学习以及常用ssh命令汇总
  13. interface接口_Java程序设计--接口interface(笔记)
  14. 自动化运维工具之Zabbix发现_自动注册及web页面状态监控(四)
  15. Kali和Backtrack中更新metasploit后无法连接数据库的问题解决方法
  16. matlab——矩阵运算
  17. java做http接口
  18. 小米稳定版怎么刷开发版
  19. python爬虫自学笔记本(2015.12.14)
  20. week_07_数据库,JDBC,Utils,Html中文本,超链接,表格,表单,框架,图像标签

热门文章

  1. lte和4g有什么区别
  2. 学习短视频制作能做什么工作啊
  3. 增长是一切企业问题解决的入口
  4. 新用户时代最大的机会就是分享经济
  5. 老板要先想明白三件事
  6. 我在互联网上买了很多课程,但是感觉在互联网学习没有什么效果很多买的课我都不想学了
  7. 如果身价千万,你还会事无巨细亲力亲为吗
  8. 互联网公司大厂中厂小厂分别指哪些公司?
  9. 数据库dba_DBA延伸数据库指南
  10. aws rds 加密_AWS RDS SQL Server中的透明数据加密(TDE)