使用WireShark抓包分析Android网络请求时间(一)

本文通过WireShark详细分析了Android网络请求的各个阶段,包括TCP三次握手、GET请求、服务器响应JSON、请求favicon.ico、KEEP-ALIVE及四次挥手等,展示了如何使用WireShark的过滤器进行数据筛选,并探讨了如何在Android模拟器上抓取通讯流量。
摘要由CSDN通过智能技术生成

WireShark是一个非常准确和稳定的tcp抓包工具,但看其40多m的安装包就可以想象其功能的强大,借助其功能强大的表达式筛选器,可以迅速的筛选出来我们所需要报文和记录,最近我就通过WireShark推断网络性能问题的故障点,收获颇丰。

最近客户提出app端load慢,尤其是在网络不好的地方,得好几分钟才能加载出数据,于是打算用抓包软件WireShark 看看http请求就用用了多长时间才传回来的,首先我用火狐浏览器访问了一下一个GET接口,监听结果如下


(我本机的端口是61281,但是抓包软件又抓出一个61282的端口,应该不是我的火狐浏览器的结果,下文忽略61282端口的消息)

从抓包结果来看,本次HTTP请求大体分为以下步骤

三次握手-->发送GET请求--->收到服务器返回json--->获取浏览器favicon.ico--->KEEP-ALIVE--->四次挥手

在介绍每个步骤的返回值之前,先介绍一下WireShark这个软件的简单用法


首先是我的过滤器设置:ip.addr == 122.248.245.191 含义是仅保留源ip地址和目标主机ip地址至少有一个为122.248.245.191,也就是项目服务器的地址,这样就可以筛选出所有的本机和122.248.245.191的收发报文

如果更改过滤器描述,比如ip.dst==122.248.245.191 andip.src==192.168.1.109(192.168.1.109是本机的ip)就可以查看所有从本机发往服务器的报文,如果把两个ip对换一下,就可以查看所有服务器发给本机的报文

如果写成ip.addr == 122.248.245.191 and tcp.srcport==61281(其中61281是本机的对外端口)就是查找所有源ip的端口为61281的报文,换句话说就是只显示本机发给服务器的报文,不同的条件可以用and连接,灵活处理。



再来说一下报文里面的基本信息

(一)  、ACK,FIN,PSH这三个是TCP请求的标志,本身并不是一个数,而是和另外五个这样的标志组成了一个长度为1字节(8位)的标志,用于标示出当前请求报文的类型,可以在WireShark 底下的FLAGS目录下查看,如果某一位设置为1则为Set,置0为Not set,一般我们只看置1的位,其中Acknowledgement = ACK,FIN = Fin,Push = Psh


(二)、seq,ack的含义,其中seqSequence number的简写,即序列号。AckAcknowledge number的简写,即应答码,用这两个数字可以观察相邻的几条报文的顺序。



好了现在我们可以开始按照步骤逐一分析了

第一阶段:三次握手


(本机ip是192.168.1.109:61281,服务器ip是:122.248.245.191:7033)

首先来回顾一下三次握手的过程

  • 6
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值