调用出现网络错误分析的过程
2020-01-20
golang
场景
描述:HTTP 的PUT 调用提示网络错误。
具体情况: 有用户反馈,在使用系统的时候,更新数据出现网络错误。 鉴于其他操作都没有问题, 由于是更新使用的是HTTP 的PUT 方式,怀疑用户使用的代理或者网络中间件拦截。 告知用户后,用户说没有使用代理和网络中间件,只能继续找证据, 最后是网络中的防火墙拦截了。希望对以后类似问题有帮助。 下面记录查找问题的过程。
处理过程
查询日志
其实这一步是多余的。 服务端根本没有收到请求
- 没有错误日志,没有访问日志。怀疑HTTP 请求被转发错误机器。
- 但是使用curl 在服务说在内网调用,操作正常,
- 再用的机器,用POSTMAN直接指定IP还是没有请求到服务端,基本确定是代理或者网络中间的问题
查看web浏览器中network相关信息
发现浏览器给出的错误信息是 Failed to load resource: net::ERR_CONNECTION_ABORTED的错误
使用wireshark 抓包查看具体的错误
发现抓中包含多个 TCP Retransmission 相关信息. 这里感觉很怪,因为其他请求都没有问题, 网络也是稳定,所以肯定是网络中间件的问题。
查看TCP连接链路
windows 使用tracert , linux 使用traceroute
拿到结果后,找到网络管理员,发现在其中的一台中的防火墙中策略是不允许PUT请求。