ARP协议详解(网络层)

ARP协议(网络层)


1.MAC地址

在介绍ARP协议之前需要先介绍 MAC 地址。什么是 MAC 地址?

MAC地址全程为:**媒体访问控制地址(Media Access Control Address)**如果说,互联网中每一个资源都由 IP 地址唯一标识(IP 协议内容),那么一切网络设备都由 MAC 地址唯一标识。

在这里插入图片描述

可以理解为 MAC 地址为每个网络设备的唯一身份证号,而IP地址是一个不重复的定位坐标。就好像对于张三,MAC地址就相当于他的身份证号,而 IP 地址相当于 张三地址为:北京市朝阳区… MAC 地址也有一些别称,如 LAN 地址、物理地址、以太网地址等。

还有一点要知道的是,不仅仅是网络资源才有 IP 地址,网络设备也有 IP 地址,比如路由器。但从结构上说,路由器等网络设备的作用是组成一个网络,而且通常是内网,所以它们使用的 IP 地址通常是内网 IP,内网的设备在与内网以外的设备进行通信时,需要用到 NAT 协议(之后也会介绍到)

MAC 地址具有可携带性、永久性,身份证号永久地标识一个人的身份,不论他到哪里都不会改变。而 IP 地址不具有这些性质,当一台设备更换了网络,它的 IP 地址也就可能发生改变,也就是它在互联网中的定位发生了变化。

最后,MAC 地址有一个特殊地址:FF-FF-FF-FF-FF-FF(全 1 地址),该地址表示广播地址


2.ARP 协议工作原理

在讲 ARP 工作原理之前,我们又要先讲一个概念叫做:ARP表

ARP表

在局域网内,每个网络设备内部都维护着一张 ARP 表,ARP表记录的是一种 IP 地址和 MAC 地址的映射关系,它通常是以三元组的形式:<IP,MAC,TTL>,其中 IP 和 MAC 也就是一组映射关系,TTL 表示过期时间,典型值为 20 分钟,也就是当超过这个 TTL 后,这组条目就会被丢弃。

接下来讨论 ARP 的工作原理:


ARP 的工作原理将分两种场景讨论:

  1. 同一局域网内的 MAC 寻址
  2. 从一个局域网到另一个局域网中的网络设备的寻址

2.1 同一局域网内的 MAC 地址

想象一个场景,主机A (IP:137.196.7.23)想要发送数据报给同一局域网下的主机 B(IP:137.196.7.14) 那么它通过 ARP 协议查询主机 B 的 MAC 地址将通过以下步骤:

注意:使用 ARP 协议是因为主机A 只知道主机 B 的 IP 地址,而并不知道主机 B 的 MAC 地址,而 ARP 协议就是为了解决这个问题的

1.主机 A 先查询自己维护的 ARP 表,发现并没有主机 B 的 MAC 地址(查询的是映射关系,也就是在 ARP 表中查不到主机 B 的 IP 地址)

注:如果主机 A 的 ARP 表中存有 主机 B 的构造信息,那么它就无需广播查找,直接发送给主机 B 数据报即可。

2.主机 A 就构造了一个 ARP 查询分组,并将其广播到自己所在的局域网进行问询

ARP 分组是一种特殊报文,ARP 分组有两类,一种是查询分组,另一种是响应分组,它们具有相同的格式,均包含了发送和接收的 IP 地址、发送和接收的 MAC 地址。当然了,查询分组中,发送的 IP 地址,即为主机 A 的 IP 地址,接收的 IP 地址即为主机 B 的 IP 地址,发送的 MAC 地址也是主机 A 的 MAC 地址,但接收的 MAC 地址绝不会是主机 B 的 MAC 地址(因为这正是我们要问询的!),而是一个特殊值——FF-FF-FF-FF-FF-FF,之前说过,该 MAC 地址是广播地址,也就是说,查询分组将广播给该局域网内的所有设备。

3.处于局域网内的所有网络设备在接收到查询分组后就会比较查询分组上的 IP 地址是否为自身的 IP 地址,如果是就代表查询分组传到了主机 B ,不是那么网络设备就会丢弃之。

4.主机 B 在接收到了查询分组后,验证是对自己的查询后就会构造一个 ARP 响应分组,将自身的 IP 地址和 MAC 地址填入,只不过这时它的目标主机就只有一个——主机 A ,于是主机 B 在自己的 ARP 表中构造一条主机 A 的 IP 地址和 MAC 地址的映射关系。然后将响应分组发送给主机 A ,

注:主机 B 需要先将主机 A 的 IP 地址和 MAC 地址添加到自己的 MAC 地址表,这样才可以根据主机 A 的 IP 地址和 MAC 地址的映射信息发送给主机 A 响应分组。

ARP 响应分组具有和 ARP 查询分组相同的构造,不同的是,发送和接受的 IP 地址恰恰相反,发送的 MAC 地址为发送者本身,目标 MAC 地址为查询分组的发送者,也就是说,ARP 响应分组只有一个目的地,而非广播。

5.主机 A 在接收到了相应分组后,提取主机 B 的 IP 地址和主机 MAC 地址,构造映射信息后添加进自身的 ARP 表。

在这里插入图片描述

其实也就是在一个小组中,A 不知道 B 的名称,但是知道 B 的手机号码。

  • 于是 A 就挨个问小组中的每个人:“这个手机号码是你的吗?”
  • 每个小组成员就检查一下这个手机号码,看看是不是自己的手机号码。
  • 直到 A 最终找到了 B ,于是 B 就看了一下手机号码,说:“没错,是我的。”同时, B 也将主机 A 的号码加到自己的手机号码簿上,并记录这个就是 A 的号码。然后 回答 A 说自己叫什么名称。
  • A 知道了 B 的名称 后就将 A 的名称和号码记录到自己的手机号码簿上,之后开始跟 B 聊天…

总结:ARP 协议是一个广播问询,单播响应协议。


2.2.从一个局域网到另一个局域网中的网络设备的寻址

更复杂的情况就是主机 A 和主机 B 处于不同的子网当中,一般的情况:它们的子网是由一台路由器相连。

注:在一般情况下,我们说一个 IP 地址和一个 MAC 地址,实际上指得是端口。一台路由器具有多个端口,每个端口都连接着一台网络设备,所有它的每个端口其实都在维护着一张 ARP 表,并不是一台路由器只有一张 ARP 表。

现在,让我们来看下在主机 A 在自己的子网下查询不到主机 B 之后到底会发生什么呢?

整个步骤是按照如下顺序的:

1.主机 A 查询自身的 ARP 表,期望找到目标路由器在自身子网的接口的 MAC 地址

目标路由器指的是,根据目的主机 B 的 IP 地址,分析出 B 所在的子网,能够把报文转发到 B 所在子网的那个路由器。

2.主机 A 没找到后通过 ARP 协议构造查询分组,在自己的子网下进行广播查询,因为这个过程与同一局域网下的 MAC 寻址是一样的,所有不在赘述

3.主机 A 在得到目标路由器在自身子网的接口的 MAC 地址后,先构造 IP 数据报,之后通过单播的方式发送数据链路帧给该接口。其中源 MAC 地址是 A 的 MAC 地址,目的 MAC 地址是本子网内与路由器连接的接口的 MAC 地址(也就是该接口的地址)

4.目标接口接收到了主机 A 发过来的链路层帧,解析,根据目的 IP 地址,查询转发表,将该 IP 数据报转发到与主机 B 所在子网相连的接口上。

此时该查询分表已从主机 A 所在子网转移到主机 B 所在的子网下了。

5.目标路由器接口查询自身维护的 ARP 表,期望找到 主机 B 的 MAC地址。

6.目标路由器接口如未能找到主机 B 的 MAC 地址,将采用 ARP 协议,广播问询,单播响应,获取到主机 B 的 MAC 地址。

7.目标路由器接口将对 IP 数据报重新封装成链路层帧,目标 MAC 地址为主机 B 的 MAC 地址,单播发送,直到目的地。

在这里插入图片描述


转自:ARP 协议详解(网络层))

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值