[日常] 使用TCPDUMP和Ethereal抓包分析HTTP请求中的异常情况
在测试功能的过程中,出现这样一种现象.前端js发起ajax请求后,在浏览器的审查元素网络状态中可以看到status为pending,等15秒以后js会把当前超时的请求取消掉,变成了红色的cancel.针对这一现象,我在本地Windows电脑和远程Linux测试机进行了网络抓包分析.
由于出现的几率很随机,但是出现频率挺高,我先在linux测试机中使用tcpdump进行的抓包分析,可以看到正常的请求是可以看得到数据的,异常的请求根本就没有连接数据,因此断定异常的数据根本就没有请求到我当前的机器.然后在本地windows电脑中使用Ethereal进行抓包分析,才发现了原因.
我本地有进行域名绑定测试机host,host所使用的ip是内网IP,是这种形式172.16.228.187,但是在抓到的数据包中变成了我之前绑定的host是个公网IP,由于安全原因,公网IP已经被禁止直接访问了,才因此出现的异常.我猜测是在进行域名DNS解析的时候,偶尔会把我之前的缓存的host返回来,才造成的这种现象
解决这一问题的方式是清除浏览器的所有缓存数据,清理自己的电脑的dns缓存,使用ipconfig/flushdns
那么下面这个是我正常情况下的tcpdump抓包结果,可以解释下各条记录的意义
tcpdump -i eth1 port 80
使用tcpdump一定要用-i参数指定下监听哪个网卡,可以使用ifconfig查看当前ip的网卡,有的是eth0,有的是eth1,这样可以抓取到这个网卡上的数据.还要过滤一下端口号,一般就只看80端口的数据就可以了
TCP三次握手的过程,可以在下面的请求中看得到.
第一次握手:10.222.128.166.60110 > 172.16.228.187.http 这里可以知道客户端IP是10.222.128.166,请求来自于60110端口,目的IP是172.16.228.187的80端口.这里的Flag是很有意义的,Flags [S]表示的是
客户端的SYN请求,seq序列号是1594115281.
第二次握手:服务端返回给客户端Flags [S.],seq序列号4134215995, ack确认号是1594115282,ack是客户端seq的+1值
第三次握手:客户端给服务端 Flags [.],.表示标志位均为0 , ack是1
15:40:19.988481 IP 10.222.128.166.60110 > 172.16.228.187.http: Flags [S], seq 1594115281, win 8192, options [mss 1300,nop,wscale 8,nop,nop,sackOK], length 0
15:40:19.988528 IP 172.16.228.187.http > 10.222.128.166.60110: Flags [S.], seq 4134215995, ack 1594115282, win 14600, options [mss 1460,nop,nop,sackOK,nop,wscale 7], length 0
15:40:19.995864 IP 10.222.128.166.60110 > 172.16.228.187.http: Flags [.], ack 1, win 260, length 0
下面就是实际的数据传输过程了,可以看到tcp的分段传输,客户端到服务端的数据seq 1:1180 ,长度1179,下一段是seq 1180:1221,长度41.
也可以看到应答机制,服务端给客户端的ack 1180,ack 1221.
15:40:19.996031 IP 10.222.128.166.60110 > 172.16.228.187.http: Flags [P.], seq 1:1180, ack 1, win 260, length 1179
15:40:19.996067 IP 172.16.228.187.http > 10.222.128.166.60110: Flags [.], ack 1180, win 137, length 0
15:40:19.997779 IP 10.222.128.166.60110 > 172.16.228.187.http: Flags [P.], seq 1180:1221, ack 1, win 260, length 41
15:40:19.997800 IP 172.16.228.187.http > 10.222.128.166.60110: Flags [.], ack 1221, win 137, length 0
15:40:20.113390 IP 172.16.228.187.http > 10.222.128.166.60110: Flags [P.], seq 1:953, ack 1221, win 137, length 952
15:40:20.114305 IP 172.16.228.187.http > 10.222.128.166.60110: Flags [F.], seq 953, ack 1221, win 137, length 0
15:40:20.122015 IP 10.222.128.166.60110 > 172.16.228.187.http: Flags [.], ack 954, win 256, length 0
15:40:20.122044 IP 10.222.128.166.60110 > 172.16.228.187.http: Flags [F.], seq 1221, ack 954, win 256, length 0
15:40:20.122057 IP 172.16.228.187.http > 10.222.128.166.60110: Flags [.], ack 1222, win 137, length 0
六个标志位
同步SYN,在连接建立时用来同步序号。当SYN=1,ACK=0,表明是连接请求报文,若同意连接,则响应报文中应该使SYN=1,ACK=1;
确认ACK,仅当ACK=1时,确认号字段才有效。TCP规定,在连接建立后所有报文的传输都必须把ACK置1;
终止FIN,用来释放连接。当FIN=1,表明此报文的发送方的数据已经发送完毕,并且要求释放;
紧急URG,当URG=1,表明紧急指针字段有效。告诉系统此报文段中有紧急数据;
推送PSH,当两个应用进程进行交互式通信时,有时在一端的应用进程希望在键入一个命令后立即就能收到对方的响应,这时候就将PSH=1;
复位RST,当RST=1,表明TCP连接中出现严重差错,必须释放连接,然后再重新建立连接;
windows电脑使用Ethereal也是需要先设置捕获的网卡,选对自己的iP网卡,可以使用ipconfig来查看
这些请求跑到了之前设置的公网IP上,根本就不会得到回应,因此前端就那里就会报出异常了
[日常] 使用TCPDUMP和Ethereal抓包分析HTTP请求中的异常情况的更多相关文章
- 聊聊tcpdump与Wireshark抓包分析
1 起因# 前段时间,一直在调线上的一个问题:线上应用接受POST请求,请求body中的参数获取不全,存在丢失的状况.这个问题是偶发性的,大概发生的几率为5%-10%左右,这个概率已经相当高了.在排查 ...
- [TCP/IP] 传输层-ethereal 抓包分析TCP包
开启抓包工具抓取一个HTTP的GET请求,我的ip是10.222.128.159 目标服务器ip是140.143.25.27 握手阶段: 客户端 ===> SYN MSS=1460(我能接 ...
- Fidller抓包分析post请求
目的:抓包是为了最近做接口测试做准备,以前没有用过这个工具,最近来学下,但是网上很多文章了,所以不一一记录,有一部分参考即可 1.如何抓取想要的web端或者手机端包,已经有很多文章谢了,推荐的参考文章 ...
- tcpdump使用和抓包分析
参考资料: http://www.cnblogs.com/ggjucheng/archive/2012/01/14/2322659.html tcpdump可以将网络中传送的数据包的“头”完全截获下来 ...
- [TCP/IP] 数据链路层-ethereal 抓包分析数据帧
1.下载 http://dx1.pc0359.cn/soft/e/ethereal.rar 2.打开软件,指定抓取的网卡,下面是我抓取自己的主要网卡数据 3.开启个ping命令 , 不停的ping一台 ...
- 爬虫系列(二) Chrome抓包分析
在这篇文章中,我们将尝试使用直观的网页分析工具(Chrome 开发者工具)对网页进行抓包分析,更加深入的了解网络爬虫的本质与内涵 1.测试环境 浏览器:Chrome 浏览器 浏览器版本:67.0.33 ...
- Wireshark和TcpDump抓包分析心得
Wireshark和 TcpDump抓包分析心得 1. Wireshark与tcpdump介绍 Wireshark是一个网络协议检测工具,支持Windows平台和Unix平台,我一般只在Window ...
- TCP三次握手与Tcpdump抓包分析过程
一.TCP连接建立(三次握手) 过程 客户端A,服务器B,初始序号seq,确认号ack 初始状态:B处于监听状态,A处于打开状态 A -> B : seq = x (A向B发送连接请求报文段,A ...
- 转:tcpdump抓包分析(强烈推荐)
转自:https://mp.weixin.qq.com/s?__biz=MzAxODI5ODMwOA==&mid=2666539134&idx=1&sn=5166f0aac71 ...
随机推荐
- QT防止程序多次启动
Question:最近在linux下作的一个项目,设置了crontab自启动,但是经常出现启动多个进程的原因,针对这种情况,我做了如下处理: QLockFile *lockFile = new QLo ...
- The Preliminary Contest for ICPC Asia Nanjing 2019
传送门 A. The beautiful values of the palace 题意: 给出一个\(n*n\)的矩阵,并满足\(n\)为奇数,矩阵中的数从右上角开始往下,类似于蛇形填数那样来填充. ...
- poj 3468 A Simple Problem with Integers 线段树 题解《挑战程序设计竞赛》
地址 http://poj.org/problem?id=3468 线段树模板 要背下此模板 线段树 #include <iostream> #include <vector> ...
- http2多路复用
http2多路复用 HTTP2采用二进制格式传输,取代了HTTP1.x的文本格式,二进制格式解析更高效. 多路复用代替了HTTP1.x的序列和阻塞机制,所有的相同域名请求都通过同一个TCP连接并发完成 ...
- SQL Server 移位运算符
参考链接:http://dataeducation.com/bitmask-handling-part-4-left-shift-and-right-shift/ SQL Server 官网的连接:h ...
- phoenix中添加二级索引
Phoenix创建Hbase二级索引 官方文档 1. 配置Hbase支持Phoenix创建二级索引 1. 添加如下配置到Hbase的Hregionserver节点的hbase-site.xml ...
- spring注解实现事务
码云: https://gitee.com/MarkPolaris/spring-transcation
- 提取Office图标的方法
需求 几年前,好声音以独特节目形式吸引了很多选手和观众的 观注,旨在"只寻找优质声音": 可声音各有特色时,还得看颜值,当然这也无可厚非.虽然扯得有点远,我想表达的是软件开发的稳定 ...
- RMAN详细教程(四):备份脚本实战操作
RMAN详细教程(一):基本命令代码 RMAN详细教程(二):备份.检查.维护.恢复 RMAN详细教程(三):备份脚本的组件和注释 RMAN详细教程(四):备份脚本实战操作 1.为了安全起见,先将数据 ...
- 使用Kafka建立可靠的高性能分布式消息传递基础结构
在优锐课学习中了解到,我们可以看到实施资源适配器以将Kafka与企业Java解决方案集成.码了很多专业的相关知识, 分享给大家参考学习. 由于世界已经变得移动化,因此应用程序现在必须实时提供数据. 不 ...