Wireshark网络分析就这么简单:从一道面试题说起

1.实验环境配置

注:ensp在BpingA时,A发出的回复报文是通过网关发送而不是直接发送的,本书中显示的是直接发送的,大家可以改用两台真正的虚拟机进行实验,除了这点外,其余的没有啥问题可以凑活看看

实验环境:华为ENSP,抓包工具Wireshark

ENSP学习网址(想看看一下)

同网段与网关之间通信_哔哩哔哩_bilibili

实验配置:

image-20240527171326803

A主机mac:1056(为了方便只看后四位,后面也是如此表示)

B主机mac:20D8

网关mac:3d18

1
2
3
4
5
6
7
网关配置语句

sys
int vlan1
ip add 192.168.26.2

这时可以尝试一下 ping A和B看看通不通

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:20d8

  • B收到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:3d18

  • B发送给网关,网关转发给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是网关的MAC

  • B发送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.抓包分析

image-20240527160021667

右键点击选择开始抓包就可以看A的包

A ping B

A主机的包

image-20240527182019461

  1. 两个ARP,A询问B的Mac,B给A进行单播回复
  2. A构建ICMP报文并发送给B
  3. B询问网关Mac
  4. 前一条ICMP超时然后重新发送
  5. 网关询问A主机的Mac,A回复(如果前面网关已经ping过A的话就不会有这个情况)
  6. 后续就是正常的重复内容

image-20240527161237986

B给A的ARP回复报文,源Mac就是B而不是网关,应该是走的二层交换机

image-20240527160535195

这是B给A的ping回复报文,源Mac地址是网关而不是B

B主机的包

image-20240527160750968

  1. A问B的Mac,B给回复
  2. 收到A的ICMP,判断是否一个子网
  3. 不是一个子网,ARP问网关,网关回复
  4. 多的ICMP请求报文都是超时重发的
  5. B发给网关网关发给A

image-20240527161105833

image-20240527161118428

可以看到目标Mac是网关而不是A

B ping A

B主机包

黑色的不必理会,是正常的网络流量,不是错误

image-20240527182059384

  1. B广播问网关的地址,网关回复
  2. B封装ICMP报文
  3. 网关问A的Mac地址
  4. B收到A的回复ICMP报文

image-20240527172342767

这是19条,B封装的ICMP报文,可以看到,先发给网关,网关进行转发

  • 源IP是192.168.26.3,目标IP是192.168.26.129
  • 源MAC是00:bb:bb:bb:bb:bb 目标MAC是网关的MAC

A主机包

image-20240527172149130

  1. 网关问A主机A的Mac,A主机给网关回复
  2. A从网关收到B的ICMP报文,构建回复报文
  3. A直接将回复报文发送给B,不经过网关

image-20240527173320942

第19条可以看到,ICMP请求报文由网关转发给A

3.关键点总结

1.B ping A的过程是B交给网关,网关交给A,A直接回复给B

2.ARP回复时不会进行是否在同一子网的判断