一. 背景

本人在互联网视频行业, 需要经常使用http GET获取数据, 最近遇到一个bug,测试说页面在用户使用高峰时段偶尔会出现卡顿, 我们当即找了服务端的负责人.他们看了一下现象, 没当回事, bug拖了一周也没有解决.

后来才知道服务端也存在模块划分, 有人管数据处理, 有人管硬件运维, 一开始很难说是谁的问题. 一下子没有人全力承担解决. 在前端偶发的现象, 并没有在服务端看到什么现象. 服务端的人难重现, 也难跟踪.尽管问题已经从前端甩出去了, 但是要想让它更快的得到解决, 还需要更多的诊断信息. 为了加快解决, 我尝试从前端一侧积极寻找更多信息.

二. 抓包操作

1. 打开wireshark, 启动对本地网卡抓包. (wireshark的安装和简单操作可以百度搜索)

2. 重现问题

3. 停止wireshark抓包.

三. 分析抓包

1. 在wireshark上方绿条中输入http.request作为过滤条件.

发现http协议的GET数据包

2. 将这个包的Destination对应的IP 作为过滤条件, 替换原过滤条件, ip.addr==101.227.32.63

发现大量红色和黑色的数据包.

3. 首先查看time这一列, 从第1行(SYN)到第14行(GET), 时间间隔11秒.

恰恰与此次页面卡顿的时长12秒左右基本吻合. 详细比较之后, 发现三行红色的[RST]间隔分别是3秒和6秒, 这构成了11秒是主要间隔.

4. 为什么会出现这么多[RST]呢?

百度搜索了一下:

RST: 因异常终止一个连接: TCP任意一方可能因为异常, 可以发送一个RST报文中途释放一个连接, 收到RST的一方将终止该连接, 并通知应用层连接复位.

5. 这里有异常引发了[RST], 那么是什么异常导致的呢?

先别急, 我们温习一下TCP三次握手, 图中可以看到:

(1). 第一次握手: 请求方发送[SYN=1], 带有发送序号seq;

(2). 第二次握手: 接收方回应[SYN=1 ACK=1], 带有另一个seq, 以及ack=seq(请求方)+1.

(3). 第三次握手: 请求方回应[ACK=1], 带有seq=seq(请求方前一次), 以及ack=seq(接收方)+1.

6. 第一条[RST]

这里前三行的包可以看到:

(1). 第一行是第一次握手[SYN] seq=0, 没有问题

(2). 第二行是第二次握手[ACK] seq=1 ack=3347692635, 这里就是问题了.

相比正常的信令, 这里ack应该是1, 也缺少SYN标志位. 所以, 后面的RST就是对告知, 这里有异常, 终止.

7. 第二条[RST]

3秒之后触发了Restransmission, 秒, 可惜仍然出现同样的ack错误

8. 第三条[RST]

6秒之后又触发了Restransmission, 秒, 再次出现同样的ack错误

9. TCP建立

等待1秒, 这次前端触发了换了一个端口31851请求[SYN=1] seq=0, 回应[SYN=1 ACK=1] seq=0, ack=1 (正确), 再发[ACK=1] seq=1 ack=1, TCP建立成功, 发出GET.

后面的数据很快就拿到了. 所以问题出在TCP连接上.

10. 于是联系服务端的同事, 把调查的信息提供给他们, 才得到足够的重视, 很快通过扩容VIP(虚拟服务器)解决了.

四. 小结

抓包分析是应对网络问题最直接的手段, 所以遇到网络延迟问题或数据问题都可以使用该方法.

这里回顾了TCP的三次握手, 发现学校里学的三次握手真是远不如一次亲身经历来的印象深刻, 理解透彻.

http抓包分析GET延迟(wireshark)相关推荐

  1. php抓包分析工具下载,Wireshark(抓包分析工具) V3.2.1 32位多国语言安装版

    Wireshark是一款功能强大的抓包分析工具,该Wireshark可以轻松抓取网络数据,而且使用很简单,所以有需要的朋友赶紧下载吧! 功能介绍 1.Wireshark拥有许多强大的特性 包含有强显示 ...

  2. 网络:抓包分析ping的原理

    控制报文协议(Internet Control Message Protocol,ICMP)是 TCP/IP 协议族的一个子协议.ICMP 协议用于在 IP 主机和路由器之间传递控制消息,描述网络是否 ...

  3. wireshark Fiddler抓包分析与解密https Fiddler修改https请求和响应

    Https理论 在说HTTPS之前先说说什么是HTTP,HTTP就是我们平时浏览网页时候使用的一种协议.HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全.为 ...

  4. Wireshark对IMAP抓包分析

    本文主要使用Wireshark对邮件客户端使用IMAP协议接收邮件的过程进行抓包分析并使用telnet命令进行简单操作. 1.IMAP简介 IMAP和POP3两个协议基本上是目前支持和使用最广泛的邮件 ...

  5. tcpdump与Wireshark抓包分析

    1 起因# 前段时间,一直在调线上的一个问题:线上应用接受POST请求,请求body中的参数获取不全,存在丢失的状况.这个问题是偶发性的,大概发生的几率为5%-10%左右,这个概率已经相当高了.在排查 ...

  6. Wireshark网络抓包分析

    目录 1. 以太网协议头(数据链路层) -- 14byte 2. IP数据头(网络层) -- 20byte 3.  ARP抓包分析 3.1 ARP介绍 3.2 报文格式 3.3 抓包分析 3.3.1 ...

  7. hls二次加密 m3u8_HLS实战之Wireshark抓包分析

    0.引言 Wireshark(前称Ethereal)是一个网络封包分析软件.网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料.Wireshark使用WinPCAP作为接口,直 ...

  8. Wireshark数据抓包分析(网络协议篇)1.2安装Wireshark

    Wireshark数据抓包分析(网络协议篇)1.2安装Wireshark Wireshark(前称Ethereal)是一个网络包分析工具.该工具主要是用来捕获网络包,并显示包的详细情况.本节将分别介绍 ...

  9. Wireshark数据抓包分析(网络协议篇)第1章网络协议抓包概述

    Wireshark数据抓包分析(网络协议篇)第1章网络协议抓包概述 网络协议是用于不同计算机之间进行网络通信的.网络协议是网络上所有设备(如网络服务器.计算机.交换机.路由器等)之间通信规则的集合,它 ...

最新文章

  1. VC下提前注入进程的一些方法3——修改程序入口点
  2. pandas使用notnull函数将dataframe中所有缺失值映射为False,非缺失值映射为True(map missing vlaues into False others into True
  3. 使用MapReduce程序完成相关数据预处理(二)
  4. java excel处理框架,Java三方—-excel框架之POI的使用一
  5. matlab与ie交互
  6. Macaca:南方航空人工测试的拯救者
  7. npm 删除依赖包_npm 和 yarn 你选哪个?
  8. 移植busybox构建最小根文件系统
  9. 一键安装lamp环境 centos
  10. windows下解压xxx.war文件
  11. unity中实现多人联机局域网-基于pun v2 + photon server v5
  12. 手机模拟器自带root_VMOS Pro Android 手机上的模拟器 (手机版虚拟机)
  13. 一张图读懂阿里云数据库架构与选型
  14. 市面上主流RTC竞品对比分析
  15. flex布局实现骰子六面的示例
  16. 读书笔记:《斯坦福极简经济学》
  17. JetpackCompose从入门到实战学习笔记2——Modifier的简单使用
  18. 【计算机组织与体系结构】实验一:算术逻辑单元的实现
  19. windows 10必装的五款神器
  20. java编写一个汽车出租管理程序_怎么用java做汽车出租管理程序

热门文章

  1. 电大计算机网考ppt,2017最新电大计算机应用基础形考PowerPoint2010答案.doc
  2. 艾伯维与和铂医药合作开发新冠病毒抗体
  3. VALSE 2017 | 神经网络模型压缩优化方法
  4. VC下用宏来实现函数注释的自动添加
  5. 辉为科技 ARM主板如何设计外部看门狗电路
  6. uibot和按键精灵区别_uibot学习心得
  7. 浙江工商大学计算机考研调剂,浙江工商大学计算机学院2013考研调剂信息
  8. 亚马逊五大收款方式对比分析
  9. 【每日新闻】牛津大学报告:中国人工智能实力只有美国一半 | 工信部:一季度生产集成电路399.9亿块,同比增长15.2%...
  10. 科德宝集团2020财年全球销售额88.4亿欧元,在华业务增长