wireshark的使用
wireshark的基本界面
数据包的三种相关概念:
帧、包、段
帧:链路层---链路层
数据包:网络层---网络层
段:传输层---传输层
Frame:物理层数据帧的情况
Ethernet II:数据链路层,以太网帧的头部信息
Internet Protocol Version 4:网络层ip包的 头部信息
Transmission Control Protocol:传输层数据段的头部信息(TCP)
Hypertext Transfer Protocol:应用层的信息(HTTP)
mac地址前三位表示厂商名称,这里是奇虎和技嘉
IPV4
ip包头部长度20bytes
差分服务字段
ip包总长度
标志字段
标志字段
分片偏移
生存期
当前数据包封存的尚存协议:TCP
头部数据校验和
源端口号
目标端口号
--
--
序列号
下一个序列号
确认序列号头部的长度
tcp标记字段
流量窗口大小
checksum:tcp字段校验和
筛选器使用:
wireshark的表格
菜单栏中<统计>选项下的三个表格
端点:
在网络中,如果想让通信得 到正常的执行,那么就必须至少拥有两台
设备或者说端点(EndPoint)进行数 据的交互操作。所谓的端点,就是指网络上用于发送或者接收数据的设备。比如在 基于TCP/IP协议的通信中,就包含有两个端点:发送方
和接收方
的IP地址, 结合着实验文件(Lab2-1)可以发现,对于捕获的第1个数据包来说,发送方的IP 地址是180.97.34.134,而接收方的IP地址是192.168.0.14。那么这两个IP地址其 实就是两个端点。
而在数据链路层,通信
则是基于两台主机中安装的网卡和它们的MAC地址
进行 的。依旧分析一下第1个数据包,我们在Packet Details面板中展开Ethernet II ,可以看到发送方的地址是94:de:80:d4:be:c9,而接收方的地址是 d0:fa:1d:61:0b:0c。那么这两个地址就是通信中的端点。
我们在实际分析过程中,面对网络流量的时候,可以将问题定位到网络中的一个特 定的端点上。可以在菜单栏中选择“Statistics”->“Endpoints”来打 开Endpoints窗口。
会话:
所谓的网络会话
(Conversation)可以理解为两个人之间的谈话,只不过网络 会话描述的是两台主机(端点)之间进行的通信活动
。对于TCP协议来说,最常 见的会话就是连接建立时的三次握手了。可以在菜单栏中选择“Statistics ”->“Conversations”来打开Conversations
窗口。
协议分层:
协议分层统计窗口
wireshark的图形显示
统计-io图表
tcp.analysis.flags && !tcp.analysis.window_update
筛选条件显示TCP有问题的数据包,但是不包括窗口的更新数据包。
tcp.analysis.duplicate_ack TCP重发的确认包
tcp.analysis.lost_segment
tcp.analysis.retransmissionTCP丢失的
数据包,绿色的实心矩形表示TCP的重发包
Wireshark的另一个绘图功能就是对所捕获的文件进行往返时间的绘图。往返时间
(round-trip time, RTT)是指一个数据包从发出到确认被成功接收所需要的时间。
或者说,往返时间就是数据包抵达目的地的时间,加上收到对方的确认信息的时间之和。通过对这个时间的分析,可以找到通信中的瓶颈,确定是否存在延迟。
位置:选中TCP数据包后统计-TCP流图形-往返时间
wireshark的数据包分析
一般来说以太网中一个帧的大小为1518个字节,除去以太网、tcp、http的头部信息,还能剩下1460个字节,可以供应用层使用。
我们可以根据捕获的数据包长度分布情况来对流量进行分析。
在“统计--分组长度”中可以看到数据包长度
其中1280-2559的数据包较大,一般用来传输数据,而较小的数据包用来保存控制数据。
数据包分析可以作为对捕获文件分析的概览。
专家信息
包含丢包、网络阻塞的内容,位置“分析---专家信息”
Error:数据包里或解析器解析时出现的错误
Warn:不正常通信中的异常数据包
Note:正常通信中的异常数据包
Chat:网络通信中的基本信息
Detail:数据包的详细信息
Comment:数据包的描述信息
具体信息:
1.丢包
2.没有按照正确顺序接受
主机没有收到下一个期望的序列号的数据包,就会生成最近收到一次数据的重复的ACK
丢包(收到重复的ACK或超过重传计时器的计时)
TCP的握手
HTTP的GET请求
对之前信息的整合
选择解析方式:
对数据包右键“解码为”,可以对捕获文件进行多次的解码。
自定义解析行为:
在官网下载的源代码文件中epm/dissector 中
命令行界面
使用命令行工具辅助wireshark进行分析。
tshark.exe 位置:wireshark安装目录 使用:使用cmd切换到相应目录运行
tshark.html 位置:同上 作用:帮助文档
命令行可以使用awk和grep
awk:将文件逐行读入,以空格为默认分隔符,分片后进行分析处理
grep:进行字符串查找
上述命令的意思是,使用tshark来读取Lab5-1这个文件的内容,并且使用grep这款工具来匹配文件中是否包含有GET字符的数据包。
用命令行编辑命令进行性能调优的好处是编辑好了的命令可以保存并反复使用,性能调优主要是对Summary(概述信息)、Service Response Time(服务响应时间)以及Expert Info Composite(专家信息整合)的内容进行分析。
比如Summary可以通过capinfos进行查询(注意我已经将Lab5-1.pcapng放在了Wireshark目录中):
而如果想要获取Service Response Time的情况,则需要视不同的协议而定。比如对于NFS(网络文件系统)协议可以使用以下命令:
上述命令中的-n表示禁止所有地址名字解析(默认为允许所有);-q设置为标准输出(常用于统计);-z表示设置统计参数。
而对于CIFS协议,只要把上述命令中的双引号里面的内容改为“smb,srt”即可:
tshark输出的分析文本大多可以直接写入分析报告里面,而Wireshark却无法生成这样的报告。比如,我想统计每一秒里面CIFS操作的Service Response Time,那么可以执行以下命令:
如果将这个结果导入到Excel里面,就可以生成各种报表。
命令行往往比图形界面快得多。比如现在有一个捕获文件,里面有众多的数据包,但是我只对IP地址为74.125.23.102的数据包感兴趣,如果使用 Wireshark操作的话,需要首先打开捕获文件,再利用ip.addr==74.125.23.102进行筛选,最后保存结果。其实这三个步骤还是比 较费时的。可是如果使用tshark就只需要以下一条命令就可以了:
tshark –r Lab5-1.pcapng –Y “ip.addr==74.125.23.102” –w Lab5-4.pcapng
这样,生成的Lab5-4.pcapng文件中就会只包含有IP地址为74.125.23.102
的数据包了
命令行的常用功能
如果想统计重传的状况,则需要用到tcp.analysis.retransmission
命令:
如果想查看乱序的情况,则只需要将retransmission改为out_of_order
即可。
我们在之前的课程中讨论过会话窗口,那么我们利用tshark也可以方便地查看会话信息。利用”conv,xxx
”就可以做到。其中的xxx可以是tcp、udp或者ip。比如查看TCP的会话信息:
如果我们遇到了一个非常大的捕获文件,使用tshark无法打开该怎么办?那么此时就需要将该文件切分
成多个,可以利用editcap
来实现:
editcap Lab5-1.pcapng output.pcapng –i 4
上述命令可以把Lab5-1.pcapng这个文件以4秒
为间隔进行拆分。