外网访问系统无法加载数据问题

8 篇文章 0 订阅
3 篇文章 0 订阅

客户部署的线上AEMS系统发生一个诡异的问题.

 

先说下环境, 客户的系统部署于客户内网环境, 在外网网关做了端口映射, 客户使用的是贵州电信的网络; 公司使用的是浙江联通的网络. 

 

问题的现象: 客户处可以正常访问系统加载数据, 但在公司通过外网访问, 可以访问系统, 其他页面都可以正常加载数据, 但企业信息配置的因子配置界面, 却无法加载因子数据, 导致在公司这边没法正常查看以及配置企业因子数据.

 

该页面有发出三个Ajax请求到AEMS系统,  但只有第一个GET请求正常响应返回 200 OK, 后两个AJAX请求很诡异的没被响应, 通过Chrome调试, 发现其请求的type是"Pending", Status Text 是 "failed", 诡异就诡异在, 后两个AJAX请求,服务器端应用系统根本就没有收到(通过服务器端AEMS应用在Controller层的打印日志, 以及通过远程Debug都可以证明这一点).

 

一开始怀疑是AJAX发送GET请求的URL过长, 察看了下字符数, 有175个字符, 不放心, 就将请求类型改为POST测试, 可是问题依旧, 看来不是这个原因.



 

再仔细想想, 该问题, 同样的代码同样的逻辑, 在公司开发环境都是正常的, 在客户现场的环境, 也是正常的. 但惟独通过公司的网络访问客户现场的系统, 会出现Ajax请求失败, 数据无法加载. 那会不会是公司与客户环境之间的网络有问题呢? 

 

网上查下资料, 在linux下使用tcpdump可以抓到http协议包,可以使用工具wireshark分析查看tcpdump抓到的http包。(wireshark软件在 http://sourceforge.net/projects/wireshark/ 下载)。


①tcpdump 抓取HTTP包
# tcpdump -s 0 tcp port 80 -w /root/tcpdump.cap
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
^C576 packets captured
576 packets received by filter
0 packets dropped by kernel

② 使用wireshark分析
使用wireshark的File--->Open菜单打开该文件,即可直观地看到通信包细节。



 

其中 124.160.225.218 是浙江联通的网关. 这个抓包结果显示是浙江联通网关主动对AEMS应用服务器发送TCP RST/ACK包关闭TCP连接所致. 好吧, 遇到GFW了.

 

网上查阅相关资料, 找到这么一篇: 几种TCP连接中出现RST的情况

http://www.360doc.com/content/13/0702/10/1073512_297069771.shtml

分析上面的TCPDUMP抓包结果, 问题的原因估计就是单次的TCP连接请求达到100毫秒, 联通网关认为TCP连接已经超时, 主动发送TCP RST/ACK 指令关闭了到AEMS服务器的TCP连接, 导致后续响应无法进行.

 

那解决的思路, 无非就是尝试下缩短单次的TCP请求时间. 在AEMS应用这边, 可以考虑网页压缩(图片/JS等), 分多次请求, 减少单次请求的数据量等. 

 

 ====================================================

 

附几篇对解决该问题有帮助的大神的链接:

 

TCP连接:SYN ACK RST UTG PSH FIN 

http://blog.163.com/sgoingfuture1211@126/blog/static/167746049201071633524363/

 

从TCP协议的原理来谈谈rst复位攻击 

http://russelltao.iteye.com/blog/1405349

 

几种TCP连接中出现RST的情况

http://www.360doc.com/content/13/0702/10/1073512_297069771.shtml

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值