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

上一篇文章简单介绍了一下WireShark这个软件的用法,并分析了一下在网络条件好的情况下,使用宽带+浏览器请求一个数据接口并抓取相关报文,但是有一个重要的问题没有解决,就是在网络状态不好的时候,到底是哪一步让app获取数据的http请求过慢,今天就使用无线网络和安卓模拟器真实的模拟一下用户的情况。

对WireShark不了解的童鞋请看这里:使用WireShark抓包分析Android网络请求时间(一)

这一篇主要剖析在服务器和客户端程序运转良好的情况下,为什么还会出现一次http请求数十秒甚至超过1分钟的情况

首先我们要了解一下TCP协议的特点:

面向连接的传输协议:数据传输之前必须先建立连接,数据传输完成之后,必须释放连接。

仅支持单播传输:每条传输链接只能有两个端点,只能进行点对点的连接,不支持多播和广播的传输方式,UDP是支持的

提供可靠的交付服务:传输的数据无差错,不丢失,不重复,且顺序与源数据一致

传输单位是数据段:每次发送的数据段不固定,受应用层传送报文大小和网络中的MTU(最大传输单元)值大小的影响,最小数据段可能仅有21个字节(其中20个字节属于TCP头部,数据部分仅1字节)。

支持全双工传输:通信双方可以同时发数据和接收数据

TCP连接是基于字节流的:UDP是基于报文流的。

单独说TCP可能记不深刻,对比一下UDP协议就很容易理解TCP的特性:
UDP协议的特点:

1、无连接型

2、不可靠性

3、以报文为便捷

4、无流量控制和拥塞控制方案

5、支持单播,组播,广播等多种通讯方式


TCP是如何保证数据可靠性的:
TCP是一个可以保证可靠数据传输的传输层协议,主要采用采用以下四个机制实现数据可靠性传输:

1、字节编号机制:TCP数据段以字节为单位对数据段的"数据"部分进行一一编号,确保每一个字节的数据都可以有序传送和接收.
2、数据段确认机制:每接收一个数据段都必须有接收端向发送端返回确认数据段,其中的确认号表示已经正确接收的数据段序号.
3、超时重传机制:TCP中有一个重传定时器(RTT),发送一个数据段的同时也开启这个定时器,如果定时器过期之时还没有返回确认,则定时器停止,重传该数据.
4、选择性确认机制:(Selective ACK,SACK)/只重传缺少部分的数据,不会重传那些已经正确接收的数据.

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值