抓包详解ARP协议

ARP详解

网络100问之交换技术(壹)

在这里插入图片描述

实验拓扑

在这里插入图片描述

动作:在PC1上pingPC2

封装

分析报文的封装与解封装过程
1、首先,在PC1上要封装一个报文,此报文为ICMP,且是一个Type为8的Echo (ping)request

2、接下来,继续封装到IP层(加三层头),Sou IP为10.1.1.1 Des IP为10.1.1.2 Protocol为1 的ICMP报文(这里IP层说明了上层使用的是什么协议,本质上只做一个标明,并不关心上层是干什么的)

3、来到二层(Ethernet II 加二层头),进行MAC地址的封装,Type是0x0800(标明上层用的是IP协议),Sou MAC为本机的MAC地址,而Des MAC并不知道是多少,此时这个数据包就不能正常的完成封装,即丢弃

测试验证:

验证前,先查一下ARP表项(后面会解释)
在这里插入图片描述

在这里插入图片描述

可见,此时与分析一致,查看此时的ARP表项,可见多了一个PC2的IP与一个MAC地址的绑定,且类型为动态
在这里插入图片描述

继续说刚才报文丢弃后的动作,当封装到Ethernet II层时,发现无法得知Des MAC,那么就会触发一个动作,这个动作就是广播发送ARP报文

触发ARP

详解:

广播发送ARP报文是另一个封装的过程,下面边分析边抓包查看报文

1、PC1封装ARP报文,其中的内容如下;

Protocol Type:IPv4(0x0800) 表示发送方要映射的协议地址类型
Hardware Type:1表示硬件地址的类型,对于以太网,值为1
Opcode:1
1 ARP request
2 ARP reply
3 RARP request
4 RARP reply
Sender MAC :PC1的MAC
Sender IP :PC1的IP
Target MAC:Broadcast (ff:ff:ff:ff:ff:ff)
Target IP : PC2的IP

2、封装Ethernet II Sou MAC:本机的MAC Des MAC:全f(因为要二层广播) Type:0x0806(ARP)

3、封装到1层(进行串行化)

什么是串行化?

  • 二层的数据帧转换成一层的比特流(弱电信号),这个过程就叫做串行化;接口带宽越大,每秒就可以将更多的数据帧串行化比特流
  • 比如,10Mbit/s 表示每秒可以把10M的数据转换成数据流

在这里插入图片描述

解封装

此时这个报文会在二层广播发送给所有的设备,收到这个ARP请求的设备,开始解封装
比如此时,PC2收到这个报文开始进行解封装

1、将比特流转换成二层的数据帧,这一步叫做格式化

2、查看二层的目的MAC(注意:解封装只关注Destination),是否为自己,不是丢弃了;是,继续解封装;很明显,这个数据报文是一个广播报文,所以PC2是可以继续向上解封装的

3、撕掉二层的封装,打开ARP报文,看到其中Target IP是自己的IP,且是一个ARP requsest;很明显PC1是想要PC2的MAC地址的

此时,PC2就会在本地继续封装一个单播回应ARP包,用于回应PC1自己的MAC地址,让PC1在本地的ARP表项中添加PC2的MAC与IP的映射关系

见下图
在这里插入图片描述


猜你喜欢

转载自blog.csdn.net/qq_41959899/article/details/115310337