wireshark是一个非常好用的抓包工具,本文根据平时抓包经验,对之前wireshark抓包的一些常见知识点进行了整理。

有不当之处,欢迎指正

注明:本文为原创文章,转载请注明出处。参考文章见本文末尾。

1.SYN,FIN会消耗一个序号,单独的ACK不消耗序号

2.WIN表示可以接收数据的滑动窗口(接收缓冲区)是多少,如果A发到B的包的win为0,就是A告诉B说我现在滑动窗口为0了,饱了,你不要再发给我了,就说明A端环境有压力

3.ACK可以理解为应答。A发给B的ack是告诉B,我已收到你发的数据包,收到ack号这里了,你下次要发seq为ack号的给我
4.连续传输的时候,且无乱序,无丢包的情况下:上一个包的seq + len  = 下一个包的 seq,如:
包55976:

包55977:

7801(55977的seq ) = 6501(55976的seq) + 1300(55976的len)
5.[TCP Previous segment not captured]
在TCP传输过程中,同一台主机发出的数据段应该是连续的,即后一个包的Seq号等于前一个包的Seq Len(三次握手和四次挥手是例外)。
如果Wireshark发现后一个包的Seq号大于前一个包的Seq Len,就知道中间缺失了一段数据。中间缺失的数据有的时候是由于乱序导致的,在后面的包中还可以找到
如:包55974
包55975:
5201(55975的seq ) != 1(55974的seq ) + 1300(55974的len )
6.在TCP传输过程中(不包括三次握手和四次挥手),同一台主机发出的数据包应该是连续的,即后一个包的Seq号等于前一个包的Seq Len。
也可以说,后一个包的Seq会大于或等于前一个包的Seq。当Wireshark发现后一个包的Seq号小于前一个包的Seq Len时,就会认为是乱序了。跨度大的乱序却可能触发快速重传
包55979:
包55980
seq(55979) > seq(55980),55980应该是紧跟着55974的(1301 =1300 + 1),从到达的时间来看,是乱序了
7.关于SLE和SRE:

SACK在数据丢包需要重传时起作用。

比如,服务器已发送的数据为1~34454个包,但是,客户端只收到了“1~1301,5201~6501”这些序列的包,也就是说“1302~5200”这些包已经丢了。
这个时候,客户端会向服务器请求发送ACK,说我收到了seq为1301的包,同时也乱序收到了"SLE为5201,SRE为6501"的包。
那么,服务器就知道,接着从seq=1302的包开始发送,发送到seq=5200的包的时候,就不用在发送seq=5201的包了,因为客户端已经收到了。
如果ACK中不带SLE和SRE会怎样呢?那服务器就会重发从"1302"开始之后的所有的包,包括其实客户端已经收到的"5201~6501"序号的包,那就浪费网络带宽了
8.[TCP Dup ACK]
当乱序或者丢包发生时,接收方会收到一些Seq号比期望值大的包。它每收到一个这种包就会Ack一次期望的Seq值,以此方式来提醒发送方,于是就产生了一些重复的Ack。
同时,这些重复的ACK中,也会更新SLE和SRE的值,因为尽管ACK的值不变,即期望的seq没有收到,但可能又会新收到后面的乱序的包
9.关于Seq,Ack,Win,Len的理解:
1.指明本次数据发送的信息:本次发送的数据起始序号是Seq,发送的长度是Len
2.发送端告诉接收端:我期望的Ack是多少,即希望接收端下次发从seq为ack号的给我,同时我还可以接收Win大小的数据,即接收端可以发送(Ack,Ack + Win)区间内的数据给发送端
10.[TCP Window Update]
这种情况下,Seq,Ack,Len都没有变,唯一变的是Win大小。说明这个ACK只是表明发送端接收数据的滑动窗口更新了
一般出现这种情况,就是由于发送端的应用程序将数据从接收数据缓冲区中取出来了,导致接收缓冲区大小更新
11.关于TCP重传:

决定报文是否有必要重传的主要机制是重传计时器(retransmission timer),它的主要功能是维护重传超时(RTO)值。当报文使用TCP传输时,重传计时器启动,收到ACK时计时器停止。报文发送至接收到ACK的时间称为往返时间(RTT)。对若干次时间取平均值,该值用于确定最终RTO值。在最终RTO值确定之前,确定每一次报文传输是否有丢包发生使用重传计时器,下图说明了TCP重传过程。

当报文发送之后,但接收方尚未发送TCP ACK报文,发送方假设源报文丢失并将其重传。重传之后,RTO值加倍;如果在2倍RTO值到达之前还是没有收到ACK报文,就再次重传。如果仍然没有收到ACK,那么RTO值再次加倍。如此持续下去,每次重传RTO都翻倍,直到收到ACK报文或发送方达到配置的最大重传次数。

所以TCP RTO的值会越来越大

如图所示:
1.37527的包,在75.55s发出,期望的ack=120656
2.知道42504的包,即103.85s的时候,才收到seq=120656的包,很显然,这个ack是超时重传的,因为中间过了28s的时间
3.在75.55-103.85期间,112.90.135.235应该进行过多次重传,但是都丢失了。知道103.85这个时间点的重传,才到达了客户端
4.每次重传后,RTO的时间会变大,所以如果重传一直不成功,两次重传之间的间隔时间也会越来越大,从而导致等待数据到达时间也会越来越长

参考文章:

1.Wireshark抓包常见问题解析:http://www.xianren.org/net/wireshark-q.html
2.wireshark抓包常见提示含义解析 :http://blog.csdn.net/u012398362/article/details/52276067
3.Wireshark抓包工具--TCP数据包seq ack等解读 :http://blog.csdn.net/wang7dao/article/details/16805337
4.一站式学习Wireshark(四):网络性能排查之TCP重传与重复ACK:http://blog.jobbole.com/71427/
5.wireshark中带有SLE和SRE的SACK包详解 :http://blog.csdn.net/season_hangzhou/article/details/48318599

wireshark抓包数据:理解与分析相关推荐

  1. 网络安全:WireShark 抓包及常用协议分析

    WireShark 抓包及常用协议分析 打开kali终端进入wireshark 进入到wireshark点击选项 勾选选项混杂模式开始抓包 进入终端打开火狐,打开百度进行抓包 这时我们抓到了很多类型的 ...

  2. Wireshark抓包数据

    首先官网下载Wireshark,下载好后,用浏览器打开桂林生活网,无需注册,输入账号密码. 打开Wireshark,用命令提示符查看本机ip 在Wireshark的过滤搜索中输入ip==10.34.1 ...

  3. 用wireshark抓包疯狂聊天实验

    文章目录 实验目的 实验环境 软件获取 实验过程 禁用其他网卡 启动疯狂聊天 启动WireShark 数据查看 分析 分析此程序网络连接采用的是哪种协议(TCP.UDP)和什么端口号 解释该程序为何能 ...

  4. Linux下wireshark抓包验证telnet明文传输密码

    Host-A IP:192.168.56.129 OS:RHEL5.9 32bit Service:telnet-server Host-B IP:192.168.56.128 OS:RHEL5.9 ...

  5. Wireshark抓包分析TCP连接、发送数据与断开过程

    准备工具: 1. 两台连接到同个局域网的电脑,或者虚拟机; 2. 在其中一台电脑安装Wireshark; 3. 在两台电脑上面都有TCP&UDP测试工具软件 TCP连接建立过程(三次握手): ...

  6. wireshark筛选dhcp包_使用wireshark抓包工具,对DHCP、HTTP、DNS的数据包进行分析

    使用wireshark抓包工具,对DHCP.HTTP.DNS的数据包进行分析 本文标签: 服务器安全 服务器被攻击 网站防护 使用wireshark抓包工具,对DHCP.HTTP.DNS的数据包进行分 ...

  7. wireshark抓包分析数据怎么看 wireshark使用教程

    大家都知道Wireshark是非常流行且知名的网络抓包数据分析工具,可以截取各种网络数据包,并显示数据包详细信息,常用于开发测试过程各种问题定位.网络故障排查等情况.但是很多网友不清楚如何使用Wire ...

  8. wireshark抓包分析TCP数据包

    1.直接从TCP的三次握手开始说起 三次握手就是客户与服务器建立连接的过程 客户向服务器发送SYN(SEQ=x)报文,然后就会进入SYN_SEND状态 服务器收到SYN报文之后,回应一个SYN(SEQ ...

  9. wireshark抓包理解TCP的三次握手

    一.实验目的 通过wireshark抓包工具,抓取客户机访问FTP服务器的连接过程进一步理解TCP的三次握手 二.实验拓扑 三.实验步骤 1.根据拓扑图搭建实验环境. 2.在客户机上安装安装Wires ...

最新文章

  1. softmax layer 简单理解以及实际例子【有白话讲解】
  2. 当对项目强名时自动构建失败(TeamFoudationServer试用笔记)
  3. 通过 T3 协议使用 WebLogic RMI
  4. Ubuntu16.04 - 安装RabbitVCS,linux下的TortoiseSVN!!!
  5. 1040 有几个PAT(PAT乙级 C++)
  6. Google Chrome浏览器可能在您不知情的情况下破坏了您的测试
  7. C++中拷贝构造函数
  8. 【PHP学习】—PHP连接数据库实现表单页面的验证功能(七)
  9. kmeans算法和kmeans++
  10. MySQL常用系统表
  11. Windows 10 超过Windows 7成为最受欢迎的操作系统
  12. Writing a good ISMAR paper
  13. java测量麦克风音量_Android 获取麦克风的音量(分贝)
  14. c语言水表程序流程图,水表检定操作流程图.pdf
  15. Qt如何调用xlsl的方法!
  16. Chrome打不开网页及设置的解决方法
  17. vmware服务器文件备份,三种VMware数据备份和恢复方法
  18. java奈奈老师2_【图片】奥尔三X作【新任女教师奈奈、同居俏佳人、同居俏女仆】攻略&结局【javagame吧】_百度贴吧...
  19. 晶圆测试Map转换(TSK/TEL/PT301)
  20. RTX腾讯通怎么删除群聊人员

热门文章

  1. 多线程设计模式(四):生产者-消费模式
  2. 深入浅出ShellExecute(总结)
  3. lisp 绘制立体感的五角星_[原创]圆内加五角星lsp代码,详细有注解
  4. python怎么让游戏倒计时_Python如何让倒计时效果的在固定区域刷新
  5. mysql 删除多余帐号_安装完mysql数据库后的优化(删除多余用户和数据库)
  6. 日周月筛选器_举个栗子!Tableau 技巧(147):使用 动态参数 筛选到最新日期值...
  7. 常用UI模板,loading框,提醒框,弹框确认框
  8. 如何通过apk获得包名及Activiy 名称
  9. 【solr基础教程之二】索引
  10. oracle数据库元数据SQL查询