三个窗口:
第一个窗口显示抓到的包的列表。
第二个窗口是对选中的包的解析,这个解析信息在包中数据是看不到的。
第三个窗口就是这个包的具体内容。wireshark 可以在捕获前筛选,也可以在捕获完成后过滤。
在上面绿色的筛选栏中输入 tcp 回车
即可筛选出所有采用 tcp协议 或者 上层协议是 tcp 的包。
输入 arp 回车
即可筛选出采用 arp 协议的包。
输入 空格 回车
即可显示所有的包的列表。
过滤器的技巧很多。
如:
- 1、过滤特定源地址的包,在过滤栏中输入:
ip.src==172.21.47.37 回车
即可,结果如下图: - 2、查看特定 mac地址 的包,在过滤栏里面输入:
eth.dst==10-7D-1A-2A-AB-22
,结果如下图: - 3、查找自己地址发出的 dns 的数据包
dns and ip.src==172.21.47.37 - 4、
ip.src==172.21.47.37 or ip.dest==172.21.47.37
词条规则筛选出特定源地址和目的地址的数据包。
此规则也等效于ip.host==172.21.47.37
- 5、过滤出以太网的广播帧,规则:
eth.dst==ff:ff:ff:ff:ff:ff
,示意图如下: - 源ip 和 源mac 一定对应。但是 目的ip 和 目的mac 不一定对应,因为arp协议。
以太网解决的是相邻节点的通信,而ip解决的是主机之间的通信。
数据包中没有看到以太网的FCS字段(帧尾)的原因?Wireshark抓到的数据包是网卡driver给上来的,网卡driver会把帧后面的4字节的FCS去掉, 不上传给tcp/ip协议栈, Wireshark自然就看不到了。
3、arp实验
查看本地arp缓存表:arp -a
通过 ipconfig -all
获取网关ip 为:172.21.47.254
,再从上面的 arp缓存表中获取 网关的mac。
arp -d
:清空本地arp缓存表。
过滤出本机mac地址发出的 arp数据包
规则:eth.src==10-7D-1A-2A-AB-22 and arp
icmp实验
- ping 操作默认会发送一个
包含32字节数据部分
的回送请求报文。
再加上 8字节 的 icmp报文头部,组成icmp报文,共 40 字节。
这 40 字节作为 ip数据报的数据部分,再加上 20字节(通常是20字节),组成一个完整的ip数据报。(再加上 14 字节 的以太网帧头 … ) - 也可以指定数据部分的长度:
ping addr / domain_name -l 指定字节数
如:ping www.baidu.com -l 3000
,这 3000 里面包含了 8字节 的icmp报文头部。因此 3000 和 上面的 32 含义不一样。 - ping 一个地址,有4个来回数据包的交互。
TCP 的三次握手和四次握手
- 三次握手建立连接
A 向 B 发出连接建立请求;B 回复并确认此报文;A再确认 B的确认;B收到A的确认后 连接建立。 - 四次握手释放连接(但是实际抓的包可能才三个,这种现象是协议开发者为了提高效率而做的有意的合并)
A 向 B 发出终止连接请求;B确认;B发送完要发送的数据后向A发出连接终止请求;A收到请求后向B发送确认;B收到确认后连接释放。