ARP:地址解析协议

一、简介

ARP(Address Resolution Protocol):地址解析协议,将 32位 的IP地址,解析为 48位 的物理地址

为什么需要ARP协议?

  • 网络接口都有物理地址,链路层的数据帧交换需要定位出mac地址是多少。
  • TCP/IP协议以IP地址作为基础,只知道目的主机的IP地址,内核(如以太网驱动)无法将数据帧发送给目的主机
  • ARP的作用:提供IP地址和MAC地址的动态映射关系

二、ARP报文解析

ARP:地址解析协议到底是什么?

解析:

数据项 长度(byte) 说明
destination/source addr 6/6 表示源/目的mac地址。如果mac地址每一位都为1,则表示 广播地址,当发送广播帧时,同一条cable上的所有物理网卡都会收到
frame type 2 定义帧类型,ARP类型(包括request和reply)为 0x0806
hard type 2 定义物理地址类型,如 值为1表示 Ethernet 类型
prot type 2 定义协议类型,如 值为 0x0800表示IP地址类型
hard size 1 定义物理地址大小,以太网地址为6
prot size 1 定义协议大小,IP地址为4
op 2 ARP request(值为1),ARP reply(值为2),RARP request(值为3),RARP reply(值为4)
sender Ethernet addr 6 发送者的mac地址
sender IP addr 4 发送者IP地址
target Ethernet addr 6 接收者的mac地址
target IP addr 4 接收者IP地址

二、流程及抓包

1、流程

ARP:地址解析协议到底是什么?

  1. FTP 客户端,调用 gethostbyname 函数,请求DNS解析,将域名解析为IP地址
  2. FTP 客户端调用TCP协议栈,和IP地址建立连接
  3. TCP 协议栈发送IP连接请求给目的主机
  4. 如果IP地址为本地连接网络,则IP报文可以直接发送给目的主机;如果IP地址为远端网络,则IP路由函数将IP报文发送给 下一跳路由器。这两种场景,IP报文都是发送给本地连接的路由器或主机
  5. ARP:将32位IP地址转化为48位物理地址,ARP请求广播到网络中。
  6. 在网络中发送 ARP request (如:who has 10.9.144.9? Tell 10.9.144.14)以太网帧,这个过程称为广播,是为了获取 目的IP 的mac地址,如上图中的虚线所示。
  7. 目的主机的以太网层接收到了广播之后,发现是在找自己,则发送 ARP Reply报文,告知FTP客户端mac 地址和ip地址的对应关系
  8. 发送者接收到 ARP reply,此时,已经知道了目的主机IP和mac地址的对应关系
  9. 发送IP报文给目的主机

2、抓包举例

本机ARP缓存如下:
ARP:地址解析协议到底是什么?

ping相同子网的IP地址
ARP:地址解析协议到底是什么?

wireshark抓包,ARP request 广播报文,目的mac地址为 00: 00: 00: 00: 00: 00;ARP reply报文回复mac地址为 00: ff: ca: 41: 0f: 16
ARP:地址解析协议到底是什么?

ARP:地址解析协议到底是什么?

三、命令及用法

1、查看本机ARP缓存:arp -a

  • 通常,超时时间为 20 分钟,超过该时间,则会删除ARP缓存

ARP:地址解析协议到底是什么?

2、arp -s 157.55.85.212 00-aa-00-62-c6-09

ARP:地址解析协议到底是什么?

3、删除arp缓存:arp -d
ARP:地址解析协议到底是什么?

四、问题

1、为什么有了IP地址,还需要ARP协议,转换IP地址和MAC地址?

因为在以太网协议中,数据传输依赖MAC地址,而非IP地址,因此需要ARP协议将IP地址转化为MAC地址。

五、参考文献

  1. 书籍《TCP/IP Illustrated, Volume 1: The Protocols, W. Richard Stevens.》
  2. RFC 826
  3. TCP/IP协议–ARP协议(有了IP地址为什么还需要ARP协议)

相关文章:

  • 2021-09-20
  • 2022-01-05
  • 2021-05-01
  • 2022-01-02
猜你喜欢
  • 2021-12-21
  • 2021-04-29
  • 2021-10-31
  • 2021-08-05
  • 2021-10-25
相关资源
相似解决方案