基本概念
wireshark是个开源的好用软件,用来分析数据包。
数据包:通常就是四层信息
物理层数据帧,数据链路层以太帧头部。网络层IP包头部。传输层TCP包头部。最后就是应用层信息。
基础功能使用
打开软件界面。就不介绍了不懂的自己打开看一下吧!
过滤器按照命令填写,基础的筛选与追踪流这种最常用的功能就不说了。
主要想说一下如果不记得筛选的命令怎么填了,可以点击对应的指标,选择作为过滤器应用。
还有时候默认的列,不满足我们需要排查问题需要,可以选择应用为列。
比如我们看到TCP流的情况判断是乱序还是丢包了。开启IP层的ID应用为列。就可以清晰的判断问题。
简单的过滤条件and与or使用。&&与||。条件记得括号更标准好看。现在直接使用and与or也是可以的了。
常用的排错过滤条件
tcp.analysis.lost_segment:表明已经在抓包中看到不连续的序列号。报文丢失会造成重复的ACK,这会导致重传。
tcp.analysis.duplicate_ack:显示被确认过不止一次的报文。大量的重复ACK是TCP端点之间高延时的迹象。
tcp.analysis.retransmission:显示抓包中的所有重传。如果重传次数不多的话还是正常的,过多重传可能有问题。这通常意味着应用性能缓慢和/或用户报文丢失。
tcp.analysis.window_update:将传输过程中的TCP window大小图形化。如果看到窗口大小下降为零,这意味着发送方已经退出了,并等待接收方确认所有已传送数据。这可能表明接收端已经不堪重负了。
tcp.analysis.bytes_in_flight:某一时间点网络上未确认字节数。未确认字节数不能超过你的TCP窗口大小,为了最大化吞吐量你想要获得尽可能接近TCP窗口大小。如果看到连续低于TCP窗口大小,可能意味着报文丢失或路径上其他影响吞吐量的问题。
tcp.analysis.ack_rtt:衡量抓取的TCP报文与相应的ACK。如果这一时间间隔比较长那可能表示某种类型的网络延时(报文丢失,拥塞,等等)。
ps:这段直接复制的 嘻嘻
字节流搜索
我在工作中常用的功能。因为XXXXXXX的原因。我会使用解码的关联信息来搜索,如果只有一份,就说明镜像过来的流量有丢包。巴拉巴拉hhh,如果有需要搜索的明文字符串也可以直接搜索。
去重与合并数据包
在wirkshark的安装目录下有许多exe文件。
editcap.exe,数据包去重命令为 editcap -d input.pcap output.pcap。(我之前就遇到了镜像之后tap过来的流量同一个ipid有四份,后面查看有两个两对mac流量,筛选一对mac的,之后使用该命令去重,获得一份正常的流量)
mergecap.exe,数据包合并命令为 mergecap -w out.pcap intput1.pcap input2.pcap inputN.pcap。
editcap.exe的数据包截取就算了吧。直接gui界面就可以文件——导出特定分组——range选填。
筛选再筛选
如果我们抓到的数据包很大很大,但是我们仅仅需要部分ip到ip的分析。可以先使用过滤条件之后界面上——文件——导出特定分组——Displayed的。之后再打开那个pcap查看分析。
其他小功能介绍
分析——专家信息(看看就好)
统计——流量图(这个可以看起来比较直观)也支持过滤条件
编辑——首选项——Protocols——对于部分协议进行个性化配置
编辑——首选项——RSA密钥可以添加之后解密HTTPS信息
常见异常分析说明
Packet size limited during capture:标记了的包没抓全
TCP Previous segment not captured:Wireshark 发现后一个包的 Seq 大于 Seq+Len,就知道中间缺失了一段。
TCP ACKed unseen segment:发现被 Ack 的那个包没被抓到,就会提示。
TCP Out-of-Order:后一个包的 Seq 号小于前一个包的 Seq+Len 时。
TCP Dup ACK:当乱序或丢包发生时,接收方会收到一些 Seq 号比期望值大的包。没收到一个这种包就会 Ack 一次期望的 Seq 值,提现发送方。
TCP Fast Retransmission:三次DUP ACK之后出发快速重传。
TCP Retransmission:发送方只好等到超时了再重传。
TCP zerowindow:0窗口懂得都懂!没法再收。
TCP window Full:窗口耗尽。没法再发!
Time-to-live exceeded:分片无法正常组装
小想法
除非是客户端上或者服务器上抓出来的包,不然真的可能很多是镜像源的问题。如果你的流量是镜像源过来的,真的不要100%信任它。