Wireshark网络分析就这么简单:从一道面试题说起
Wireshark网络分析就这么简单:从一道面试题说起
1.实验环境配置
注:ensp在BpingA时,A发出的回复报文是通过网关发送而不是直接发送的,本书中显示的是直接发送的,大家可以改用两台真正的虚拟机进行实验,除了这点外,其余的没有啥问题可以凑活看看
实验环境:华为ENSP,抓包工具Wireshark
ENSP学习网址(想看看一下)
实验配置:
A主机mac:1056(为了方便只看后四位,后面也是如此表示)
B主机mac:20D8
网关mac:3d18
1 | 网关配置语句 |
2.理论分析
A ping B
A根据自己的子网掩码判断B是否和自己属于同一子网,用自己的子网掩码与B主机的IP地址做&运算,计算出B主机的网段也是192.168.26.0/24,所以在A看来B和A属于同一网段
A在VLAN发送ARP广播询问B的Mac地址
B主机由于和A主机处于同一个交换机的同一个VLAN,所以B主机会收到A发送的ARP广播,无论B如何配置其子网掩码或路由表
那B主机会这么处理:B主机并不会再去判断A主机是否于它处于同一个网段,而直接进行ARP的单播回复,将自己的MAC地址告诉A
只要VLAN的二层转发功能正常A就可以收到B的ARP回复,从而得知了B的Mac地址
A开始构建ICMP报文并发送给B
源IP:192.168.26.129 目标IP:192.168.26.3
源Mac:1056 目标Mac:20d8B收到A的ICMP报文,判断A是否与B处于同一网段
B通过自己的子网掩码判断出自己的网段是192.168.26.0/27,然后通过自己的子网掩码判断A主机的网段为192.168.26.128/27,于是B主机认为A主机和它并不处于同一个网段
B发送ARP广播询问网关的Mac地址
网关回复给B,B得知了网关的Mac地址,开始构建ICMP报文
源IP:192.168.26.3 目标IP:192.168.26.129
源Mac:20d8 目标Mac:3d18B发送给网关,网关转发给A,自此完成了一次ping通信操作
B ping A
B判断A是否是同一子网,用自己的子网掩码进行运算,发现不是同一子网
B使用ARP广播询问网关的的Mac地址,网关回复B它的Mac地址
B构建ICMP报文
源IP是192.168.26.3,目标IP是192.168.26.129
源MAC是20d8 目标MAC是网关的MACB发送ICMP报文给网关,网关发送给A
A判断B和A是否是同一子网,用自己的子网掩码进行运算,发现是同一子网
A发ARP广播询问B的Mac地址
B直接回复A它的Mac地址,不会判断是否在同一子网
A构建回复ICMP报文直接发送给B
源IP是192.168.26.129 目标IP是192.168.26.3
源MAC是1056,目标MAC是20d8
3.抓包分析
右键点击选择开始抓包就可以看A的包
A ping B
A主机的包
- 两个ARP,A询问B的Mac,B给A进行单播回复
- A构建ICMP报文并发送给B
- B询问网关Mac
- 前一条ICMP超时然后重新发送
- 网关询问A主机的Mac,A回复(如果前面网关已经ping过A的话就不会有这个情况)
- 后续就是正常的重复内容
B给A的ARP回复报文,源Mac就是B而不是网关,应该是走的二层交换机
这是B给A的ping回复报文,源Mac地址是网关而不是B
B主机的包
- A问B的Mac,B给回复
- 收到A的ICMP,判断是否一个子网
- 不是一个子网,ARP问网关,网关回复
- 多的ICMP请求报文都是超时重发的
- B发给网关网关发给A
可以看到目标Mac是网关而不是A
B ping A
B主机包
黑色的不必理会,是正常的网络流量,不是错误
- B广播问网关的地址,网关回复
- B封装ICMP报文
- 网关问A的Mac地址
- B收到A的回复ICMP报文
这是19条,B封装的ICMP报文,可以看到,先发给网关,网关进行转发
- 源IP是192.168.26.3,目标IP是192.168.26.129
- 源MAC是00:bb:bb:bb:bb:bb 目标MAC是网关的MAC
A主机包
- 网关问A主机A的Mac,A主机给网关回复
- A从网关收到B的ICMP报文,构建回复报文
- A直接将回复报文发送给B,不经过网关
第19条可以看到,ICMP请求报文由网关转发给A
3.关键点总结
1.B ping A的过程是B交给网关,网关交给A,A直接回复给B
2.ARP回复时不会进行是否在同一子网的判断