计算机网络第四章——地址解析协议ARP

地址解析协议ARP

ARP 作用:

从网络层使用的 IP 地址,解析出在数据链路层使用的硬件地址。

ARP的报文格式和帧格式

ARP报文

  • ARP是一个独立的三层协议,所以ARP报文在向数据链路层传输时不需要经过IP协议的封装,而是直接生成自己的报文,其中包括ARP报头,到数据链路层后再由对应的数据链路层协议(如以太网协议)进行封装。ARP报文分为ARP请求和ARP应答报文两种。
    计算机网络第四章——地址解析协议ARP_第1张图片

  • 硬件类型:占2字节,表示ARP报文可以在哪种类型的网络上传输,值为1时表示为以太网地址。

  • 上层协议类型:占2字节,表示硬件地址要映射的协议地址类型,映射IP地址时的值为0x0800。

  • MAC地址长度:占1字节,标识MAC地址长度,以字节为单位,此处为6。

  • IP协议地址长度:占1字节,标识IP地址长度,以字节为单位,此处为4。

  • 操作类型:占2字节,指定本次ARP报文类型。1表示ARP请求报文,2表示ARP应答报文。

  • 源MAC地址:占6字节,表示发送方设备的硬件地址。

  • 源IP地址:占4字节,表示发送方设备的IP地址。

  • 目的MAC地址:占6字节,表示接收方设备的硬件地址,在请求报文中该字段值全为0,即00-00-00-00-00-00,表示任意地址,因为现在不知道这个MAC地址。

  • 目的IP地址:占4字节,表示接收方设备的IP地址。

ARP帧

  • ARP报文并不是直接在网络层上发送的,它还是需要向下传输到数据链路层,所以当ARP报文传输到数据链路后,需要再次进行封装。以以太网为例,ARP报文传输到以太网数据链路层后会形成ARP帧。它就是在ARP报文前面加了一个以太网帧头。
    计算机网络第四章——地址解析协议ARP_第2张图片
    以太网帧头中的三个字段说明如下:
    • 目的MAC地址:占6字节,如果是ARP请求帧,因为它是一个广播帧,所以要填上广播MAC地址—FF-FF-FF-FF,其目标是网络上的所有主机
    • 源MAC地址:占6字节,这是发送ARP帧的节点MAC地址。
    • 帧类型:占2字节,这里用来标识帧封装的上层协议,因为本帧的数据部分是ARP报文,所以直接用ARP的协议号0x0806表示即可。

ARP 的工作原理

计算机网络第四章——地址解析协议ARP_第3张图片

  • 当主机 A 欲向本局域网上的某个主机 B 发送 IP 数据报时,就先在其 ARP 高速缓存中查看有无主机 B 的 IP 地址。

  • 如有,就可查出其对应的硬件地址,再将此硬件地址写入 MAC 帧,然后通过局域网将该 MAC 帧发往此硬件地址。

  • 如没有, ARP 进程在本局域网上广播发送一个 ARP 请求分组。收到 ARP 响应分组后,将得到的 IP 地址到硬件地址的映射写入 ARP 高速缓存。

  • 具体过程:

    • 1)主机A首先查看自己的ARP表(它是一个IP地址与MAC地址的映射表),确定其中是否包含有主机B的IP地址和对应的MAC地址。如果找到了对应B的MAC地址,则主机A直接利用ARP表中的MAC地址对IP数据包进行帧封装,并将数据包发送给主机B
    • 2)如果主机A在ARP表中找不到对应的MACA地址,则先缓存该数据报文,然后以广播方式(目的MAC地址为广播MAC地址—FFFFFF,任一同网段的节点均可收到)发送一个ARP请求报文。ARP请求报文中的发送端(源)IP地址和发送端MAC地址分别为主机H1的IP地址(209.0.0.5)和MAC地址(00-00-C0-15-AD-18),目的IP地址和目的MAC地址为主机H2的IP地址(209.0.0.6)和全0的MAC地址。因为ARP请求报文是以广播发方式发送,所以该网段上的所有主机都可以接收到该请求包,但只有其IP地址与目的IP地址一致的主机H2会对该请求进行处理
      3)主机B将ARP请求报文中的发送端(即主机A)的IP地址和MAC地址存入自己的ARP表中。然后以单播方式向主机A发送一个ARP响应报文,应答报文中就包含了自己的MAC地址,也就是原来在请求报文中要请求的目的MAC地址。
      4)主机A在收到来自主机B的ARP响应报文后,将主机B的MAC地址加入到自己的ARP表中以用于后续报文的转发,同时将原来缓存的IP数据包再次修改(在“目的MAC地址”字段填上主机B的MAC地址)后发送出去。
  • 如果两主机不在同一,它们之间又是如何通信的呢?(H1发送到H3)具体步骤如下:

    • 如果主机A不知道网关的MAC地址(也就是在主机A的ARP表中没有网关对应的MAC地址表项),则主机A先在本网段中发出一个ARP请求广播,ARP请求报文中的目的IP地址为网关IP地址,代表其目的就是想获得网关的MAC地址。如果主机A已知网关的MAC地址,则略过此步。其他过程大致同A发给B。
      计算机网络第四章——地址解析协议ARP_第4张图片

ARP映射表(缓存表)

  • 动态ARP表项
    • 由ARP协议通过ARP报文自动生成和维护
    • 可以被老化,可以被新的ARP报文更新,可以被静态ARP表项所覆盖
    • 当到达老化时间或接口关闭时会删除相应的动态ARP表项
  • 静态ARP表项
    • 通过手工配置(通过对应设备的IP地址与MAC地址绑定命令进行)和维护
    • 不会被老化,也不会被动态ARP表项覆盖。
    • 分类:短静态ARP表项和长静态ARP表项
  • 如何查看 arp -a

ARP 高速缓存的作用

  • 存放最近获得的 IP 地址到 MAC 地址的绑定,以减少 ARP 广播的数量。
  • 为了减少网络上的通信量,主机 A 在发送其 ARP 请求分组时,就将自己的 IP 地址到硬件地址的映射写入 ARP 请求分组。
  • 当主机 B 收到 A 的 ARP 请求分组时,就将主机 A 的这一地址映射写入主机 B 自己的 ARP 高速缓存中。这对主机 B 以后向 A 发送数据报时就更方便了。(A广播出去,所有)

ARP解决的问题

  • ARP 是解决同一个局域网上的主机或路由器的 IP 地址和硬件地址的映射问题。
  • 如果所要找的主机和源主机不在同一个局域网上,那么就要通过 ARP 找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络。剩下的工作就由下一个网络来做。
  • 从 IP 地址到硬件地址的解析是自动进行的,主机的用户对这种地址解析过程是不知道的。
  • 只要主机或路由器要和本网络上的另一个已知 IP 地址的主机或路由器进行通信,ARP 协议就会自动地将该 IP 地址解析为链路层所需要的硬件地址

使用ARP的四种典型情况

计算机网络第四章——地址解析协议ARP_第5张图片

  • 主机发送给主机
  • 主机发送给路由器
  • 路由器发送给路由器
  • 路由器发送给主机

为什么不直接使用硬件地址进行通信

  • 由于全世界存在着各式各样的网络,它们使用不同的硬件地址。要使这些异构网络能够互相通信就必须进行非常复杂的硬件地址转换工作,因此几乎是不可能的事。
  • IP 编址把这个复杂问题解决了。连接到互联网的主机只需各自拥有一个唯一的 IP 地址,它们之间的通信就像连接在同一个网络上那样简单方便,因为上述的调用 ARP 的复杂过程都是由计算机软件自动进行的,对用户来说是看不见这种调用过程的。
  • 因此,在虚拟的 IP 网络上用 IP 地址进行通信给广大的计算机用户带来了很大的方便。
    计算机网络第四章——地址解析协议ARP_第6张图片
    Q1:H2的目的地址
    Q2:同一网络号
    Q3: 最多 3 次,最少0次
    如果R1->R2 为点对点通信,最多2次,最少0次(点对点通信无ARP)

你可能感兴趣的:(计算机网络)