调用出现网络错误分析的过程

场景

描述: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请求。

articles from reage blog -- http://www.ireage.com