ARP详解

ARP地址解析协议详解

文章目录

  • ARP地址解析协议详解
  • 一、什么是ARP?
  • 二、ARP帧的格式
  • 三、ARP的基本工作流程
      • 1、当目的地址和发送方在同一网段
      • 2、当目的地址和发送方在不同网段


一、什么是ARP?

当一个应用层的数据在网络中传输时,会被逐步封装成链路层的帧,而帧是通过链路层的MAC地址进行定位传输的,那么一个初次通信的主机如何知道对方的MAC地址呢,这时候就需要ARP地址解析协议来获取对方的MAC地址,ARP是提供网络层地址(IP地址)到相关硬件地址(MAC)的映射。ARP工作在网络层

二、ARP帧的格式

ARP详解_第1张图片
1.在这个以太网帧的头部中,前两个字段分别是目的和源以太网的MAC地址,对于ARP请求,目的以太网地址为FF:FF:FF:FF:FF:FF的广播地址。在以太网帧中,对于ARP请求或者应答,2个字节的长度或者类型必须为0x0806。如果取值为0x0800的帧代表IP协议帧
2.长度/类型字段之后的前4个字节指定了最后4个字段的类型和大小。这些值由IANA来指定。主语硬件和协议用于描述ARP分组中的字段。例如:一个ARP请求询问协议(一般为IPV4地址)地址对应的硬件地址(一般为以太网MAC地址)。硬件类型字段指出硬件地址类型。对于以太网,该值为1.协议类型字段指出映射的协议地址类型。对于IPV4地址,该值为0x8000。对于下面一个字节的字段,硬件大小和协议大小分别指出硬件地址和协议地址的字节数。对于以太网中使用的IPV4地址的ARP请求或应答,他们的值分别是6和4。op字段指出该操作是ARP请求(值为1),ARP应答(值为2),RARP请求(3),或者RARP应答(4)。因为ARP请求和ARP应答的长度/类型字段是相同的,所以op这个选项是必须的
3.紧跟着的4个字段就是发送放的硬件地址(一般是以太网的MAC地址),发送方的协议地址(一般是IPV4协议地址),目的硬件地址,目的协议地址。需要注意的是这里存在着一些重复的信息:以太网的头部和ARP消息中都存在发送方的硬件地址。对于一个ARP请求,除了需要获取的目的硬件地址为0之外,其他字段都需要填充,当一个系统收到一个ARP请求,它填充自己的硬件地址,将两个发送方地址和两个接收方的地址互换,把op字段设置为2,然后发送生成的应答

三、ARP的基本工作流程

1、当目的地址和发送方在同一网段

  • 首先发送主机会查看目标主机和自己是否在同一网段中
  • 主机根据IP地址前缀和掩码信息判断出在同一子网,则封装一个ARP广播帧,这个帧的头部的目的MAC地址是FF:FF:FF:FF:FF:FF的广播地址(注意是头部中的目的MAC地址,而不是ARP消息中的目的MAC地址),同一广播域中的主机都可以收到这个广播帧。这包括运行任何协议的系统(IPV4或IPV6等),但不包括位于不同VLAN中的系统,因为VLAN划分了广播域。
  • 同一网段中的所有主机都会解析这一帧,如果发现这个帧中的目的IP地址就是自己时,就会以单播的形式响应。如果其他主机解析后发现不是发给自己的,则丢弃这个帧。
  • 这时接收的这个主机会记下发送方的IP地址到MAC地址的映射,以方便下次通信时使用

2、当目的地址和发送方在不同网段

  • 首先发送主机会查看目标主机和自己是否在同一网段中
  • 主机发现目的IP地址和自己不在一个子网中,所以这时候需要网关介入,主机会先发送一个广播帧来获取网关的MAC地址(假设此时主机并不知道主机的MAC地址),网关收到帧后会响应给主机自己的MAC地址
  • 主机收到网关的MAC地址后,又封装了一个带有目标IP的帧以单播的形式给网关
  • 网关收到这个帧后会解析其中的IP地址,根据自己的路由表来决定怎么转发这个包,网关会把源IP地址和源MAC地址改为自己的地址,目的IP不变来生成一个新的帧转发给下一跳
  • 经过一次或数次转发后这个数据包会到达所在的子网中,发送给对应的主机,主机响应一个帧来回应。

你可能感兴趣的:(笔记,网络,网络协议,macos)