【网络】ARP 的工作原理

起序:文字篇幅略长,请读者耐心读下去。
原理:发送 ARP 广播报文,接收 ARP 单播应答。

一、概述

地址解析协议 ARP(Address Resolution Protocol),在实际应用中,它是为了解决 已经知道了一个机器(主机或路由器)的IP地址,需要找出其相应的硬件地址 这样的问题。

网络层使用的是 IP地址 ,但在实际网络的链路上传送数据帧时,最终还是必须使用该网络的 硬件地址。但 IP地址 和下面的网络的 硬件地址 之间由于格式不同而不存在简单的映射关系,因为

  • IP 地址:32 位
  • 硬件地址(MAC 地址):48 位

地址解析协议 ARP 解决这个问题的方法是在主机 ARP 高速缓存 中存放一个从 IP地址硬件地址 的映射表,并且这个映射表还经常动态更新(新增或超时删除)。


二、工作流程

每一台主机都设有一个 ARP高速缓存(ARP cache),里面有本局域网上的各主机和路由器的 IP地址硬件地址 的映射表,这些都是该主机目前知道的一些地址。

1、网络拓扑图

假设 主机 PC1主机 PC3 发送 HTTP 请求,会有两种 “心里活动”。

  1. 主机 PC1ARP 高速缓存 中存在 主机 PC3IP 地址硬件地址 的映射关系。
  2. 主机 PC1ARP 高速缓存 中不存在 主机 PC3IP 地址硬件地址 的映射关系。

在这里插入图片描述


2、存在

如果 主机 PC1 存在 主机 PC3IP 地址硬件地址 的映射关系。在发送 HTTP 请求 的时候,就会把这个 硬件地址 写入 MAC 帧,然后通过局域网把该 MAC 帧 发往此 硬件地址


3、不存在

主机 PC1ARP 高速缓存 中不存在 主机 PC3IP 地址硬件地址 的映射关系。

1)、发送 HTTP 请求

下面图片显示的就是 PC1 发送 HTTP请求PC3 在 MAC 层的 MAC 帧 格式,为了清晰了解 MAC 帧 格式,图片有对应关系。点赞谢谢。

在这里插入图片描述

注:此时的 PC1ARP 高速缓存 中还没有 PC3IP 地址MAC 地址 的映射关系,也就是说,这个 封装不成功,是无法发送到 PC3 的。


2)、发送 ARP 请求

这个时候就该 ARP 大显神威了,此时 ARP 的 “心里活动” 是:“你在一边等着,我把 MAC 地址 给你带回来”。

  • ARP 中的目的 MAC 地址 是未知的,所以是以 00:00:00:00:00:00 暂时填补空缺位置。
  • 帧头 中的 目的 MAC 地址 也是未知的,但是以 FF:FF:FF:FF:FF:FF 这个 广播地址 作为 目标 MAC 地址
  • ARP 请求分组的主要内容是:“我的 IP 地址192.168.1.1MAC 地址AA,我想知道 IP 地址192.168.1.3MAC 地址 是什么”。

在这里插入图片描述

注:从上方可分析得 ARP 是广播报文。


3)、交换机广播转发

交换机的主要工作是 转发,因为交换机是 二层设备 ,只会检查 帧头帧尾 ,当交换机知道 ARP 请求协议帧目的 MAC 地址12FF 时,就可以知道,这个报文是 广播报文

注:这里不细说 交换机的工作原理


4)、机器收到 ARP 请求

这里的 机器 有多种,这里只介绍两种,主机路由器

Ⅰ、主机
  • 主机 收到 ARP 请求报文 后,不是立即丢弃这个报文,而是先送到 主机 的网卡
  • 网卡检查出 目标 MAC 地址12FF,说明是给所有人的,自己也是所有人之一
  • 解封装 帧头帧尾 后,发现 帧头 中的 类型 字段的值是 0806,就会把 ARP 包头和 ARP 数据 交给 主机 的网络层的 ARP 协议 来处理这个数据
  • ARP 协议ARP 数据 中的 目的 IP 地址(192.168.1.3) 和自己的 IP 地址 匹配

匹配成功

请看第五步 - 5)、发送 ARP 响应

匹配失败

就会由 主机 PC2 的网络层的 ARP 协议 丢弃,而不是网卡进行丢弃。


Ⅱ、路由器

路由器 收到 ARP 请求报文 后,检查出 目标 MAC 地址12FF路由器三层设备 ,解封装 帧头帧尾 后,发现 帧头 中的 类型 字段的值是 0806,就会把 ARP 包头和 ARP 数据 交给 主机 的网络层的 ARP 协议 来处理这个数据。

问:路由器会不会转发(路由) ARP 报文

答:不会

  1. 路由器要路由的话,是需要检查 IP包头里面的 目标IP地址,再匹配路由表。而 ARP 报文 里是没有 IP 包头 的。
  2. ARP 是广播报文,路由器是不允许广播报文通过的

注:ARP 是出不了 网关 的,所以是内网协议(局域网协议)。


5)、发送 ARP 响应

ARP 响应分组的主要内容是:"我的 IP 地址192.168.1.3MAC 地址CC"。

在这里插入图片描述

6)、交换机单播转发

这时的 ARP 响应报文 有明确的 MAC 地址(AA),就会转发到 主机 PC1

7)、主机收到 ARP 响应

这一步和第五步(机器收到 ARP 请求)不一样,因为 交换机 在转发 ARP 响应 时,是以 单播 的通信方式。

主机 PC1 收到 ARP 响应后,先到达 主机 PC1 的网卡,解封装 帧头帧尾,把 ARP 包头和 ARP 数据 交给 主机 PC1 的网络层的 ARP 协议 来处理这个数据,就可以得到 目的 MAC 地址(CC)

同时 主机 PC1 会创建一个 ARP 高速缓存表

Internet 地址物理地址类型
192.168.1.3CC动态

可以在命令行窗口查看

# 查看 ARP 缓存
arp -a

8)、完善 HTTP 请求报文

这个时候就把 目的 MAC 地址(CC) 填写在 HTTP 请求报文帧目的 MAC 地址 的位置。

在这里插入图片描述
如果对您有帮助,点个赞再走吧。

  • 12
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

边扯边淡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值