第 4 章 地址解析协议 地址解析协议
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
"世界总体上是一个丛林,而 Network+ 游戏贡献了许多动物"。
RFC 826
IPv4 网络的运行不仅需要在网络模型的不同层使用多种地址,还需要对这些地址进行解析。本章将介绍地址解析过程,举例说明现实世界中使用的信息传递方式,并深入分析与使用地址解析相关的潜在安全风险。
问题所在
绝大多数基于 IP 数据包的数据传输都以局域网为起点和终点。无论 IP 数据包是发送给同一局域网内的邻居,还是发送到世界的另一端,情况都是如此。第 3 章介绍了如何将 IP 数据包封装在局域网帧中,这些局域网帧对源节点和目的节点都使用第 2 层 MAC 地址。源 MAC 地址很容易确定。问题在于如何确定目的 MAC 地址。
在以太网作为局域网基础设施的情况下,在第 2 层使用发送者自己的 MAC 地址作为源,在第 3 层使用其 IP 地址作为源来构建帧。目的地 IP 地址(或至少名称)通常是已知的,因此只需确定目的地 MAC 地址。图 4-1是封装 ICMP 报文中显示的这些地址的数据包捕获回顾。

图 4-1. 寻址层
这是一个传输帧的示例,其中源 MAC 地址和目标 MAC 地址已事先确定。
技术
确定目标 MAC 地址的方法包括封闭式计算、表格查询和信息交换。描述以太网封装的 RFC 894 中列出了其中一些选项。
封闭式计算根据已知 IP 地址计算未知 MAC 地址。发送节点根据计算值在以太网帧中填写目标 MAC 地址。这种方法非常快捷,不需要外部资源或通信。它还允许对地址空间进行相当严格的控制。不过,它确实需要可配置的 MAC 地址和一定程度的管理,因为地址必须全部分配给不同的主机。
表查询可为每台主机提供 MAC 地址和相应 IP 地址的列表。这种方法也非常快捷,因为发送方只需在构建以太网帧之前查询表。不过,即使更换一块网卡,也必须更新所有表。
这些方法在速度上有优势,但管理监督繁重。必须对单个主机地址进行配置,并且必须将任何更改通知主机。因此,当今的网络(某些广域网连接除外)依赖于分布式方法或使用地址解析协议(或 ARP)的信息交换。与其他方法相比,信息交换确实会增加网络的额外流量,而且速度较慢。不过,它是完全自动化的,因此非常有吸引力。
协议说明
ARP 内置于每个节点的 IP 配置中。这意味着微软、Sun、谷歌以及开源社区的开发人员在开发操作系统时,都会将 ARP 的代码包含在内,以便在 IPv4 网络上运行。
ARP 的好处在于,对于基本操作而言,只定义了两个信息:ARP 请求和 ARP 回复。当主机必须找到目的地的 MAC 地址时,它将发送一个 ARP 请求,在此之前,节点会查阅其 ARP 表,并确定该地址实际上是未知的。
收到 ARP 请求信息后,目的地会发回一个 ARP 回复。基本上,ARP 请求会问:"能给我你的 MAC 地址吗?"而回复会说:"当然可以,就在这里。如果可以,主机绝不会拒绝。图 4-2显示了这种信息交换。

图 4-2. ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access