首页 > 其他分享 >图解地址解析协议ARP

图解地址解析协议ARP

时间:2022-11-25 13:37:54浏览次数:41  
标签:ARP 解析 主机 硬件 地址 IP 图解 以太网

因为时间的关系,昨天的 ARP 推文只写了 ARP 缓存部分,所以今天补充 ARP 工作的原理以及 ARP 帧格式和 ARP 的四种典型情况。

ARP 工作原理

假设有一台主机想要向本地局域网上的另一台目标主机发送 IP 分组时,首先会在本地主机的 ARP 高速缓存中查询是否有目标主机的 IP 地址,如果有该 IP 地址对应的条目,则可以直接查出其 MAC 地址,写入 MAC 帧,然后通过局域网将该帧发送给对应 MAC 地址的主机上。

图解地址解析协议ARP_字段

如果没有,则先通过广播 ARP 请求分组(如上图),在获得目标主机的 ARP 响应分组后(如下图),将目标主机的 MAC 地址写入 ARP 高速缓存,建立目标主机的 IP 地址到 MAC 地址的映射关系。注意:ARP 请求分组是广播发送的,但 ARP 响应分组是普通的单播。

图解地址解析协议ARP_数据_02

当然,ARP 只是解决同一个局域网上的主机或路由器的 IP 地址和 MAC 地址的映射问题的。如果所要找的主机和源主机不在同一个局域网上,那么就要通过 ARP 找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络,剩下的工作就由下一个网络来做。

ARP 帧格式

图解地址解析协议ARP_字段_03

由图可见,前 ​​14​​ 个字节是 MAC(以太网)头部 ,其余部分由 ARP 协议定义。ARP 帧的前 ​​8​​​ 个字节是通用的,剩余部分用于将 IPv4 协议映射到 ​​48​​ 位的以太网地址。

首先让我们看看以太网头部,第一个字段是 ​​DST​​ 即 目的以太网地址 ,第二个字段是 ​​SRC​​ 即 源以太网地址 。这里需要注意一点,对于一个 ARP 请求来说,目的地址字段填充的是以太网地址 ​​ff:ff:ff:ff:ff:ff​​ ,即以太网广播地址,这样在同一个广播域中的每个接口都能收到该帧。第三个字段是 长度或类型 ,此字段占据 ​​2​​​ 字节大小,对于 ARP 请求或响应该字段的值一定为 ​​0x0806​​ 。

接下来的 4 个字段指定了最后 4 个字段的类型和大小 [RFC5494]。

硬件类型字段 指出硬件地址类型。对于以太网,硬件类型字段值为 ​​1​​ 。

协议类型字段 指出映射的协议地址类型。对于 IPv4 ,协议类型字段的值为 ​​0x800​​ 。

硬件大小字段 指出硬件地址的字节数。对于以太网中使用 IPv4 地址的 ARP 请求或响应,硬件大小字段的值为 ​​6​​ 。

协议大小字段 指出协议地址的字节数。对于以太网中使用 IPv4 地址的 ARP 请求或响应,协议大小字段的值为 ​​4​​ 。

操作码字段(Op) 指出该报文所执行的操作。当 ​​Op = 1​​​ 时,该报文为 ​​ARP 请求报文​​​ ;当 ​​Op = 2​​​ 时,该报文为 ​​ARP 响应报文​​​ ;当 ​​Op = 3​​​ 时,该报文为 ​​RARP 请求报文​​​ ;当 ​​Op = 4​​​ 时,该报文为 ​​RARP 响应报文​​ 。

接下来的字段指出了发送方和目的的硬件地址和协议地址。

发送方硬件地址字段 指出了发送方的以太网 MAC 地址。

发送方协议地址字段 指出了发送方的 IPv4 地址。

目的硬件地址字段 指出了目的地的以太网 MAC 地址。

目的协议地址字段 指出了目的地的 IPv4 地址。

接下来是 填充字段 ,当要发送一个 ARP 请求时,除了目的硬件地址设为 ​​0​​ 之外,其他字段都需要进行填充。

ARP 的 4 种典型情况总结:

  1. 发送方是主机,要把 IP 数据报发送到本网络上的另一个主机。这时用 ARP 找到目的主机的硬件地址。
  2. 发送方是主机,要把 IP 数据报发送到另一个网络上的一个主机。这时用 ARP 找到本网络上的一个路由器的硬件地址,剩下的工作由这个路由器来完成。
  3. 发送方是路由器,要把 IP 数据报转发到本网络上的一个主机。这时用 ARP 找到目的主机的硬件地址。
  4. 发送方是路由器,要把 IP 数据报转发到另一个网络上的一个主机。这时用 ARP 找到本网络上的一个路由器的硬件地址,剩下的工作由这个路由器来完成。

参考文献:

[1] Fall, K. R., and Stevens, W. R. TCP/IP详解 卷1:协议. Translated by 吴英, 张玉 and 许昱玮, 2nd ed., 机械工业出版社, 2016. 

[2] 谢希仁, 计算机网络, 8th ed., 电子工业出版社, 2021.

[3] J. Arkko, C. Pignataro, "IANA Allocation Guidelines for the Address Resolution Protocol (ARP)" RFC 5494, April 2009.




标签:ARP,解析,主机,硬件,地址,IP,图解,以太网
From: https://blog.51cto.com/u_15891283/5886561

相关文章

  • ARP 缓存
    我们知道,网络层使用的是IP地址,而在实际网络的链路上传送数据帧时,最终还是必须使用链路层的MAC地址。所以,在链路上传送数据帧时只知道IP地址是不够的,我们还需要知道主......
  • 图解IPv4数据报格式
    上图给出了IPv4数据报的格式。在IP数据报中,最高有效位在左侧且编号为​​0​​​,一个​​32​​​位值的最低有效位在右侧且编号为​​31​​​。一个​​32​......
  • 图解计算机数据大小以及字节存储顺序
    数据大小每台计算机都有这样一个称为字(word)的数据单位,它用来表示该计算机一次性处理事务的固定长度。一个字的位数称之为字长(wordsize),是用来指明指针数据的标称大......
  • 图解计算机信息的表示
    大家都知道在计算机中信息都是用​​0​​​和​​1​​来表示的。大多数计算机使用8位(bit)即1字节(Byte)大小的块作为最小的可寻址的内存单元。大部分现代系统......
  • 图解子网掩码
    在上一次图解子网划分中,我们已经讲到了如何把IP地址进一步划分为子网号和主机号,但在网络中要如何识别哪些位是网络号,哪些位又是主机号呢?这里就要使用子网掩码了。子网掩码......
  • 图解子网寻址
    IP地址分为五类,单播地址有三类。随着网络的发展,如果都为接入Internet的新网段分配一个新网络号,例如一个A类地址,网络号只有​​8​​​位,剩余​​24​​位都是主机......
  • 图解广播地址
    广播地址(BroadcastAddress)是专门用于向网络中所有设备进行发送的网络地址。发送到广播地址的消息可以被所有网络连接的主机接收。而多播地址是用于向特定的一组设备进......
  • 解析负载均衡原理
    不能狭义地理解为分配给所有实际服务器一样多的工作量,因为多台服务器的承载能力各不相同,这可能体现在硬件配置、网络带宽的差异,也可能因为某台服务器身兼多职,我们所说的“均......
  • Spring的BeanDefinition定义、BeanDefinitionRegistry注册中心及解析原理
    BeanDefinition定义Bean的定义信息是Spring容器的一个核心概念,核心接口是BeanDefinition。Spring容器启动的过程中,会将Bean解析成Spring内部的BeanDefinition结构。不管......
  • 温故知新,CSharp遇见线程安全集合(ConcurrentStack),后进先出(Last in, First out)
    ConcurrentStack特点线程安全后进先出(Lastin,Firstout)定义它privatestaticreadonlyConcurrentStack<string>_stack=newConcurrentStack<string>();......