抓包常见的信息以及含义

Packet size limited during capture

说明被标记的那个包没有抓全。一般是由抓包方式引起,有些操作系统中默认只抓每个帧的前96个字节。

4号包全长171字节,但只有96字节被抓到。

TCP Previous segment not captured

说明乱序了,前一个包没有收到,收到后面的包了,这时会重传包。Wireshark发现后一个包的Seq大于前一个包的Seq+Len,就知道中间缺失了一段。如果缺失的那段在整个网络包中找不到(排除了乱序),就会提示。

6号包的Seq是1449大于5号包的Seq+Len=1+1=1,说明中间有个1448字节的包没被抓到,就是“Seq=1,Len=1448”。

175: SEQ=4675 大于 174: SEQ=Seq(4381)+0 (len)

[TCP Retransmission]

一个包真的丢了,又没有后续包可以在接收方触发【Dup Ack】就不会快速重传。这种情况下发送方只好等到超时了再重传。超时重新发送,当发送方送出一个TCP片段后,将开始计时,等待该TCP片段的ACK回复。如果接收方正确接收到符合次序的片段,接收方会利用ACK片段回复发送方。发送方得到ACK回复后,继续移动窗口,发送接下来的TCP片段。如果直到计时完成,发送方还是没有收到ACK回复,那么发送方推断之前发送的TCP片段丢失,因此重新发送之前的TCP片段。这个计时等待的时间叫做重新发送超时时间。

[TCP segment of a reassembled PDU]

TCP层收到上层大块报文后分解成段后发出去,主机响应一个查询或者命令时如果要回应很多数据(信息)而这些数据超出了TCP的最大MSS时就要分片了,被分片出来的包,就会被标记了成TCP segment of a reassembled PDU,被标记了的包的SEQ和ACK都和原来的包一致。

TCP Out-Of-Order含义

使用TCP传输较大数据时,都会将数据分片,然后按照顺序依次传输。当Wireshark抓包时候,数据包标记为TCP Out-Of-Order,意思是该数据包的发送顺序不对。这意味着网络状况不好。当然,Wireshark有时会重传的包识别为乱序包。

[TCP Dup Ack]

一般来说是网络拥塞导致丢包,比如发送方的报文到达不了接收方,接受方收不到预期序列号的报文就会发送dup ack给发送方,发送方收到3个dup ack就会快速重传而不必等超时定时器。

TCP dup ack XXX#X:
就是接收端要求发送方重复应答XXX序号丢失的报文,#后面X的是表示第几次丢失。

当网络中存在乱序或者丢包时,将会导致接收端接收到的seq number不连续。此时接收端会向发送端回复重复ack,ack值为期望收到的下一个seq number。重复ack数大于等于3次将会触发快速重传。

[TCP Fast Retransmission]

快速重新发送  ,由于IP包的传输是无序的,所以接收方有可能先收到后发出的片段,也就是乱序(out-of-order)片段。乱序片段的序号并不等于最近发出的ACK回复号。已接收的文本流和乱序片段之间将出现空洞(hole),也就是等待接收的空位。比如已经接收了正常片段5,6,7,此时又接收乱序片段9。这时片段8依然空缺,片段8的位置就是一个空洞。TCP协议规定,当接收方收到乱序片段的时候,需要重复发送ACK。比如接收到乱序片段9的时候,接收方需要回复ACK。回复号为8 (7+1)。此后接收方如果继续收到乱序片段(序号不是8的片段),将再次重复发送ACK=8。当发送方收到3个ACK=8的回复时,发送方推断片段8丢失。即使此时片段8的计时器还没有超时,发送方会打断计时,直接重新发送片段8,这就是快速重新发送机制(fast-retransmission)。

325包,客户端向服务端反馈ack=133251,说明下一个期望收到服务端seq=133251的包; 
326包,服务端向客户端发送了seq=135771的数据包,与客户端的期望不符,因此客户端在327包重传了ack=133251的包,再次申明期望收到seq=133251的包。Wireshark将重复ack标记为TCP Dup ACK,#后边指明为第几次重传。 
328包,服务端向客户端发送了seq=137031的数据包,仍然与客户端期望不符,客户端在329包再次重传ack=133251的包。 
330包,服务端收到3次重复ack,触发快速重传,重传了seq=133251的TCP分片。

 Tcp keep alive(tcp保持活动)

在TCP中有一个Keep-alive的机制可以检测死连接,原理很简单,TCP会在空闲了一定时间后发送数据给对方:

1.如果主机可达,对方就会响应ACK应答,就认为是存活的。

2.如果可达,但应用程序退出,对方就发RST应答,发送TCP撤消连接。

3.如果可达,但应用程序崩溃,对方就发FIN消息。

4.如果对方主机不响应ack, rst,继续发送直到超时,就撤消连接。这个时间就是默认

的二个小时。

KeepAliveTime值控制 TCP/IP 尝试验证空闲连接是否完好的频率。如果这段时间内没有活动,则会发送保持活动信号。如果网络工作正常,而且接收方是活动的,它就会响应。如果需要对丢失接收方敏感,换句话说,需要更快地发现丢失了接收方,请考虑减小这个值。如果长期不活动的空闲连接出现次数较多,而丢失接收方的情况出现较少,您可能会要提高该值以减少开销。缺省情况下,如果空闲连接 7200000 毫秒(2 小时)内没有活动,Windows 就发送保持活动的消息。通常,1800000 毫秒是首选值,从而一半的已关闭连接会在 30 分钟内被检测到。

TCP ACKed unseen segment

当Wireshark发现被Ack的那个包没被抓到,就会提示。

32号包的Seq+Len=6889+1448=8337,说明下一个包Seq=8337。

而我们看到的是35号包的Seq=11233,意味着8337~11232这段数据没抓到。

TCP acked unseen segment

反馈ACK指向了一个未知的TCP片段。 
这个意思是说ACK反馈的是一个wireshark上不存在的TCP包。很可能是wireshark漏抓了这个包,但却抓到了对端反馈的该报的ack包。如下图,标记为ack unseen segment的包反馈的ack=2721,看着像是反馈的seq=1361的包,但其实这个ack还反馈了seq=1的包,由于seq=1的包没有抓到,因此wireshark将反馈ack标记为ack unseen segment。从下面的图还可知,由于对端已经反馈了ack=2721,说明发端发送的seq=1的包,对端也收到了,只不过wireshark可能漏抓了而已。 

RST

TCP 重置。 
是TCP协议结束异常连接的一种方式,通过flags中的reset=1标记。当TCP连接无法通过正常的4次挥手结束时,一方可以通过发送携带reset标志的TCP包结束TCP连接。 
如下图,发送方通过2个TCP流发送数据,截图中,接收方首先向发送方反馈了TCP window=0,让发送方暂缓发送数据,之后紧接着发送了TCP RST标记,释放了TCP连接。猜测可能接收方程序突然崩溃了,导致缓存区数据没法清空,之后接收方系统发送了TCP reset释放TCP连接。

 Tcpacked lost segment(tcp应答丢失)

 Tcp window update(tcp窗口更新)

流量图

wireshark的颜色含义

颜色控制

可以粗略地看到,黑色背景代表报文的各类错误,红色背景代表各类异常情景,其它颜色代表正常。

Bad TCP:tcp.analysis.flags && !tcp.analysis.window_update

即TCP解析出错,通常重传,乱序,丢包,重复响应都在此条规则的范围内。

HSRP State Change:hsrp.state != 8 && hsrp.state != 16

HSRP即热备份路由协议(Hot Standby Router Protocol),这条规则表示状态非active和standby。

Spanning Tree Topology  Change:stp.type == 0x80

生成树协议的状态标记为0x80,生成树拓扑发生变化。

OSPF State Change:ospf.msg != 1

OSPF(Open Shortest Path First,开放式最短路径优先协议)的msg类型不是hello。

ICMP errors:icmp.type eq 3 || icmp.type eq 4 || icmp.type eq 5 || icmp.type eq 11 || icmpv6.type eq 1 || icmpv6.type eq 2 || icmpv6.type eq 3 || icmpv6.type eq 4

ICMP协议错误,协议的type字段值错误。

ARP:arp

即ARP协议

ICMP:icmp || icmpv6

即icmp协议

TCP RST:tcp.flags.reset eq 1

TCP流被RESET。

SCTP ABORT:sctp.chunk_type eq ABORT

串流控制协议的chunk_type为ABORT(6)。

TTL low or unexpected:( ! ip.dst == 224.0.0.0/4 && ip.ttl < 5 && !pim) || (ip.dst == 224.0.0.0/24 && ip.dst != 224.0.0.251 && ip.ttl != 1 && !(vrrp || carp))

TTL异常。

Checksum Errors:eth.fcs_bad==1 || ip.checksum_bad==1 || tcp.checksum_bad==1 || udp.checksum_bad==1 || sctp.checksum_bad==1 || mstp.checksum_bad==1 || cdp.checksum_bad==1 || edp.checksum_bad==1 || wlan.fcs_bad==1

条件中的各类协议的checksum异常,在PC上抓包时网卡的一些设置经常会使Wireshark显示此错误。

SMB:smb || nbss || nbns || nbipx || ipxsap || netbios

Server Message Block类协议。

HTTP:http || tcp.port == 80 || http2

HTTP协议,这是很简陋的识别方法。

IPX:ipx || spx

互联网络数据包交换(Internet work Packet Exchange)类协议。

DCERPC:dcerpc

即DCE/RPC,分散式运算环境/远端过程调用(Distributed Computing Environment / Remote Procedure Calls)协议。

Routing:hsrp || eigrp || ospf || bgp || cdp || vrrp || carp || gvrp || igmp || ismp

路由类协议。

TCP SYN/FIN:tcp.flags & 0x02 || tcp.flags.fin == 1

TCP连接的起始和关闭。

TCP:tcp

TCP协议。

UDP:udp

UDP协议。

Broadcast:eth[0] & 1

广播数据。

参考链接:

https://blog.csdn.net/baozhourui/article/details/88373622

https://blog.csdn.net/hguisu/article/details/46273261

https://segmentfault.com/a/1190000013734767

https://www.cnblogs.com/thammer/p/5135827.html

https://blog.csdn.net/qq_35615083/article/details/80276777

https://blog.csdn.net/qq_29996285/article/details/83690338

wireshark分析数据包相关推荐

  1. Wireshark数据抓包教程之认识捕获分析数据包

    Wireshark数据抓包教程之认识捕获分析数据包 认识Wireshark捕获数据包 当我们对Wireshark主窗口各部分作用了解了,学会捕获数据了,接下来就该去认识这些捕获的数据包了.Wiresh ...

  2. Linux中如何使用Wireshark来分析数据包?

    学习分析网络数据包是一项强大的技能. 当连接到网络后,大多数情况下我们不会去考虑实现这一切的底层网络协议.现在,当你阅读本文时,计算机正在交换大量数据包并通过Internet进行传输. 要了解这些协议 ...

  3. [渗透攻防] 四.详解MySQL数据库攻防及Fiddler神器分析数据包

    这是最近学习渗透和网站攻防的基础性文章,前面文章从数据库原理解读了防止SQL注入.SQLMAP的基础用法.数据库差异备份.Caidao神器.这篇文章将详细讲解MySQL数据库攻防知识,有点类似第一篇文 ...

  4. Wireshark 合并数据包

    简述 本文主要介绍如何使用wireshark合并数据包.当前使用的wireshark版本为3.6.8. 合并数据包 先使用wireshark打开待合并数据包的其中之一,然后从文件菜单中选择合并选项: ...

  5. 渗透测试攻击(二)——wireshark过滤数据包语法详解

    目录 Wireshark过滤语句中常用的操作符 Wireshark捕获UDP数据包 UDP协议分析常用过滤条件 UDP校验和过滤条件

  6. python分析数据包_Python解析pcap数据包

    Post Views: 29,789 零.前言 历时数月,终于结束了考研初试,Blog也很长时间没有更新了,期间还是有些小伙伴来Blog看文章很是感动.以后一定会坚持更新,尽量给大家推送一些干货.这次 ...

  7. Wireshark TCP数据包跟踪 还原图片 WinHex应用

    工具:WireShark  WinHex 目标:在同一网络中,过滤目标IP的数据包,追踪TCP流,处理数据包,还原出文件. QQ手机和QQPC同时在线且在一个IP端局域网中,这种情况会使用局域网点对点 ...

  8. VC++分析数据包实现Telnet协议分析

    Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式.它为用户提供了在本地计算机上完成远程主机工作的能力.在终端使用者的电脑上使用telnet程序,用它连接 ...

  9. Winpcap进行抓包,分析数据包结构并统计IP流量

    2020年华科计算机网络实验 文末有完整代码,仅限参考 一.实验目的 随着计算机网络技术的飞速发展,网络为社会经济做出越来越多的贡献,可以说计算机网络的发展已经成为现代社会进步的一个重要标志.但同时, ...

最新文章

  1. 公开处刑:研究者自建Papers Without Code网站,张贴复现不了的论文
  2. javascript 异常基本语法
  3. Skype For Business 2015实战系列14:创建Office Web App服务器场
  4. Hive2.1.1的安装教程(元数据放在本地Mysql)
  5. centos挂载windows共享目录
  6. java9模块不可见问题
  7. Mac使用OpenCV项目步骤
  8. datetime sql
  9. UML-----实现图(构件图、部署图)
  10. 计算机无法安装网卡驱动,网卡驱动安装不了,详细教您解决网卡驱动安装不了...
  11. shell脚本实现逻辑关系与、或、非
  12. 简单使用pdf插件pdf.js
  13. SQL Server设置SQL Server身份验证
  14. TIKTOK视频:搬运视频技巧的这几点你知道吗?
  15. 基于Java的网上手机销售系统的设计与实现(附:源码 论文 sql文件 部署视频)
  16. 计算机视觉——三维视觉 I
  17. Proxy源代码分析--谈谈如何学习linux网络编程
  18. 亚马逊MWS开发--上传商品常见错误
  19. Parameter 0 of method linkDiscoverers in org.springframework.hateoas.config.HateoasConfiguration req
  20. windows解决error: Microsoft Visual C++ 9.0 is required. Get it from http://aka.ms/vcpython27

热门文章

  1. MATLAB|awgn函数的说明
  2. 企业对劳动仲裁不理该怎么解决
  3. 营销机器人已全面接入头条落地页,留资营销更高效
  4. HuggingFace简明教程
  5. win10输入法没有选字框
  6. PHP表单处理-GET与POST区别
  7. 开源不仅是Red Hat的软件
  8. android .beats音效安装器,beats音效安装器
  9. js向excel写入数据的案例
  10. 机械工业出版社计算机组成原理答案,孙德文+计算机组成原理+习题答案