26、地址解析协议(二)

在了解了ARP解析的过程之后,我们将进一步深入学习ARP的数据包,包括ARP请求和ARP响应。本节我们就介绍这两种数据包的格式,并使用ensp和wireshark进行演示。


帧封装ARP

在详细介绍ARP数据包的格式之前, 我们要从宏观的角度观察一下,也就是先从整个的ARP包的封装来看一下,ARP数据包处在一个什么样的地位:

通过上面的图片,我们明显可以看出这是一个以太网帧的封装格式,整个的ARP包作为帧的数据部分,这说明ARP数据包是封装在以太网帧中发送出去的。

回顾一下我们前面讲的ARP的功能,就是进行从IP地址到MAC地址的解析,通过广播ARP请求来获取到对方的MAC地址,那么我们就可以得知:

封装ARP请求包的以太网帧,因为是广播,所以它的目的MAC地址应该是“FF-FF-FF-FF-FF-FF”,源MAC地址应为源主机自己的MAC地址,协议类型应是ARP(因为封装的是ARP数据包嘛),FCS仍然是帧校验字段。


ARP数据包格式

首先我们给出ARP包的格式,然后我们逐一解释每个字段代表的含义:

首先看第一个字段,硬件类型,此字段的值指明了ARP包的发送方想知道的硬件接口的类型,一般情况下,值为1,表示以太网类型。

协议类型的值说明了要解析的地址类型,一般是“IP”,因为ARP的功能就是把IP地址解析为MAC地址嘛。

硬件地址长度,在这需要说明的是,硬件地址也就是我们所指的MAC地址,这两个概念是等同的,因为MAC地址是烧录固化在网卡上的,所以MAC地址也称硬件地址。所以,此字段是指明了MAC地址的长度有几个字节。一般MAC地址有48位,也就是6个字节,所以这个字段的值为6。

协议长度,指出的是IP地址的长度,IP地址有32位,也就是4个字节,所以这个字段值为4。

操作类型,操作类型的值就指明了此ARP包是一个什么类型的包。如果此字段的值位1,说明这个包是个ARP请求包,如果值为2,说明这是个ARP响应包

另外需要补充的是,操作类型的值还包括3和4,分别代表RARP的请求和响应。RARP是反向地址解析协议,用于把MAC地址解析成IP地址,但是这个协议已经很少用了


模拟器演示

在ensp软件上搭建一个模拟环境,PC1、PC2、PC3共三台主机连接到一个交换机上,用PC1和PC3进行通信。设置三台主机的IP地址分别为192.168.1.1、192.168.1.2、192.168.1.3。

PC1向PC3发送数据,PC1首先在自己的ARP缓存表中查看有没有PC3的IP与MAC地址的映射。我们在PC1输入arp -a 命令查看ARP缓存表:

可以看到,PC1的ARP缓存表是空的,因为三台主机都是刚刚启动,所以三台主机的ARP缓存都是空的, 也就是三台主机现在互相都不认识。

然后,PC1用ping命令:ping 192.168.1.3,同时打开wireshark软件进行数据包捕获:

此界面表示PC1已经ping通PC3,转到wireshark看捕获结果:

在这里,我是用了wireshark的显示过滤器,只显示了捕获到的ARP包,这样会让界面更干净一些。

我们可以看到,第一个ARP包的source(源地址)是192.168.1.1,也就是PC1,destination(目标地址)是broadcast,也就是广播,说明这个包是一个ARP请求;第二个ARP包的source是192.168.1.3,destination是192.168.1.1,说明这是PC3单播给PC1回复的ARP响应。

我们分别查看它们的内部详细结构:

PC1发出的ARP请求:

尤其要注意Opcode字段,也就是操作码的值为1,代表request(请求),目标MAC地址是一个广播地址。

PC3回复的ARP应答:

可以看到,ARP响应包的操作码的值已经变成了2,代表reply(应答)。

以上就是我们模拟器演示的结果,如果我们搭建的拓扑图不是三台主机连到一个交换机上,而是三台主机连到一个集线器上,也是可以的,因为ARP的原理是不变的,但是尤其对于一些初学网络的同学来说, 可能会造成一个错觉:因为集线器是不会隔离冲突域的,当集线器收到PC3发来的ARP响应包后,仍然会向其它所有主机都发出去,但其实数据包的目标MAC地址并不是广播地址,这就容易使我们造成响应包也是广播发送的错觉。


以上就是本节的全部内容,下一节我们把ARP应用到一个稍微复杂的环境中去,看看ARP代理的工作原理。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值