远程主机强迫关闭了一个现有的连接
问题现象
服务端报远程主机强迫关闭了一个现有的连接,抓包发现,返回给客户端RST
问题分析,从抓包看是服务端返回给客户端RST,是服务端主动关闭了连接,但是服务端实际上是报错,关闭了连接。
java.io.IOException: 远程主机强迫关闭了一个现有的连接。at sun.nio.ch.SocketDispatcher.read0(Native Method) ~[?:1.8.0_222]at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:43) ~[?:1.8.0_222]at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:223) ~[?:1.8.0_222]at sun.nio.ch.IOUtil.read(IOUtil.java:192) ~[?:1.8.0_222]at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:380) ~[?:1.8.0_222]at io.netty.buffer.PooledByteBuf.setBytes(PooledByteBuf.java:253) ~[netty-all-4.1.63.Final.jar:4.1.63.Final]at io.netty.buffer.AbstractByteBuf.writeBytes(AbstractByteBuf.java:1132) ~[netty-all-4.1.63.Final.jar:4.1.63.Final]at io.netty.channel.socket.nio.NioSocketChannel.doReadBytes(NioSocketChannel.java:350) ~[netty-all-4.1.63.Final.jar:4.1.63.Final]at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:151) [netty-all-4.1.63.Final.jar:4.1.63.Final]at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:719) [netty-all-4.1.63.Final.jar:4.1.63.Final]at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:655) [netty-all-4.1.63.Final.jar:4.1.63.Final]at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:581) [netty-all-4.1.63.Final.jar:4.1.63.Final]at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:493) [netty-all-4.1.63.Final.jar:4.1.63.Final]at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989) [netty-all-4.1.63.Final.jar:4.1.63.Final]at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) [netty-all-4.1.63.Final.jar:4.1.63.Final]at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) [netty-all-4.1.63.Final.jar:4.1.63.Final]at java.lang.Thread.run(Thread.java:748) [?:1.8.0_222]
从报错堆栈看,应该是服务端解析客户端发送的数据异常,所以关闭了连接,因此还是要从客户端发送的报文入手。
因为是https协议的连接,因此修改服务端使用的加密套件,获取服务使用的jks证书,导入wireshark解析出报文,发现客户端header、body都有。
由于通过postman发送的请求可以正常解析,因此通过比对postman发送的报文,发现区别主要是在Content-Length这个头上。
又因为指定了使用HTTP 1.1,并且指定了keep alive,因此服务端是根据content-length来解析的body的,错误的content-length导致了服务端解析失败。
解决办法:
1、可以修改content-length,使用正确的值
2、也可以使用短连接,这样就不用通过content-length来判断要读取的报文大小了
3、指定Transfer-Encoding头,来使content-length失效
远程主机强迫关闭了一个现有的连接相关推荐
- mysql远程主机强迫关闭了一个现有连接_asp.net连接mysql出现了远程主机强迫关闭了一个现有的连接。!!!...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 [SocketException (0x2746): 远程主机强迫关闭了一个现有的连接.] System.Net.Sockets.Socket.Recei ...
- python 网络编程 socket 报错 ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。
服务端: # -*- coding: utf-8 -*- """ @File : 191226_基于UDP协议的socket_server端.py @Time : 201 ...
- Adb connection Error:远程主机强迫关闭了一个现有的连接
[2013-07-19 09:32:07 - DeviceMonitor] Adb connection Error:远程主机强迫关闭了一个现有的连接. [2013-07-19 09:32:08 - ...
- python post 远程主机强迫关闭了一个现有的连接_ConnectionResetError:[WinError10054远程主机强迫关闭一个现有连接...
最近在使用Airtest这套框架尝试web自动化界面测试的时候,在脚本之前都可正常运行的情况下,偶有的时候遇到连接错误,报错:Connection abourted. ConnectionResetE ...
- C#中UDP通信过程中出现:远程主机强迫关闭了一个现有的连接0x80004005】的解决方法
在UDP通信过程中, 使用try...catch语句接受数据时,总是会出现一个错误: System.Net.Sockets.SocketException (0x80004005): 远程主机强迫关闭 ...
- 【转】解决WCF大数据量传输 ,System.Net.Sockets.SocketException: 远程主机强迫关闭了一个现有的连接...
开发中所用的数据需要通过WCF进行数据传输,结果就遇到了WCF大量传输问题 也就是提示System.Net.Sockets.SocketException: 远程主机强迫关闭了一个现有的连接 网上解决 ...
- python: 使用socket实现局域网不同主机通信。解决ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。
目录 1 socket的使用 1.1 TCP方法 1.2 UDP方法 2 局域网内连接 2.1 总结 1 socket的使用 1.1 TCP方法 在socket中使用socket.socket建立会话 ...
- sonarqube 启动不了,异常提示:远程主机强迫关闭了一个现有的连接
启动sonarqube 6.7.1 报下面的错误: 2018.01.24 10:10:56 WARN app[][o.e.t.n.Netty4Transport] exception caught o ...
- java nio 强制关闭_Java NIO服务器:远程主机强迫关闭了一个现有的连接
Java NIO聊天室 中,若客户端强制关闭,服务器会报"java.io.IOException: 远程主机强迫关闭了一个现有的连接.",并且服务器会在报错后停止运行,错误的意思就 ...
- python post 远程主机强迫关闭了一个现有的连接_Python最强动态可视化库!
后台回复1024,解锁无限快乐! bar_chart_race 一个库「Bar Chart Race」,堪称Python界最强的动态可视化包. GitHub地址:https://github.com/ ...
最新文章
- FreeSwitch Sip【转】
- Android Security视频学习合集
- 利用JavaScript选择GridView行
- if命令在HTML语言中 隐藏部分内容,vuejs使用v-if隐藏不需要的内容,生成的html标签中有!-----,请问怎样去掉这些注释?...
- nodejs操作redis总结
- 人人开源-后台前后端快速开发
- OFD文件是什么?如何将ofd转成PDF格式?
- 512 排序预演_最小数置前
- rtorrent ubuntu端命令行种子下载器
- QQ邮箱开通exchange的方法
- http client的英文文档 牛逼
- EasyExcel 实践与源码梳理
- vuex简单入门:singer实例创建以及读写全过程
- android 相机 app,android – Emulator的相机内置app buggy在Froyo / 2.2?
- Unusual Minesweeper
- TMI8140大电流强力马达驱动芯片,让按摩再“爽一点”
- 将Word文档转化为HTML格式的文件
- Microsoft Project 2010 (Beta)下载
- 素数计数公式全面拉丁化改写-小有改进-Meissel公式-梅塞尔-Lehmer公式-莱梅=勒梅尔-筛法三种形式-孟庆余公式(转载)...
- 图像常见格式及转换(BGR,YUV,NV12,YUV444)
热门文章
- JavaScript练习题四
- 缓存(Cookie,SessionStorage,localStorage)详解
- 在Ubuntu18.04上安装视频播放器smplayer
- Android应用商店——项目介绍
- mac 打开网页慢_Safari打开网页卡住或加载极慢问题解决方案
- DAY3:尚学堂高琪JAVA(33~40)
- tc android开发工具,TC5.0 (一个脚本开发工具)其底层实现原理分析与推测(半成品)...
- 阿里云:疫情期间全力保障教育平台“停课不停学”
- 邮件服务器公网IP被国外反垃圾联盟(PBL)列入黑名单移除操作方法
- 学习编程需要英语很好吗?