MHuiG

「看庭前花开花落,望天上云卷云舒」

ARP 协议

# ARP 协议

## ARP

`ARP`: 地址解析协议，用于已知一台设备 IP 地址时，获取对方的硬件地址信息，从而进行数据链路层的封装.

ARP 协议本身没有一个独立的协议号.

网络层协议.

数据发送之前发送数据帧，要有源目 MAC 地址.

RFC 826

## ARP 报文格式

`Hardware Type`: 硬件地址类型，以太网，值为 `1`.

`Protocol Type`: 协议地址类型，IP 协议，值为 `0x0800`.

`Hardware length`: MAC 地址长度，单位是字节，值为 `6`.

`Protocol length`: IP 地址长度，单位是字节，值为 `4`.

`Operation code`: 表示 ARP 报文的类型.

- `ARP Request`: 值为 `1`.
- `ARP Reply`: 值为 `2`.

`Source hardware address`: 源 MAC 地址.

`Source protocol address`: 源 IP 地址.

`Destination hardware address`: 目的 MAC 地址.

`Destination protocol address`: 目的 IP 地址.

Eternet_II Header 0x0806: ARP 协议

## ARP 缓存表

ARP 缓存表：用来存放 IP 地址以及 MAC 地址的对应关系.

    PC>arp -a

    Internet Address    Physical Address    Type

## ARP 工作过程

ARP 请求：源主机的 ARP 缓存表中不存在目的主机的 MAC 地址，此时源主机会发送 ARP Request 报文来请求目的主机的 MAC 地址，此数据帧中的目的 MAC 地址字段为广播.

ARP 响应：跟源主机处于同一个广播域的同一个设备都会收到广播形式的 ARP Request 报文，收到报文后，会查看 ARP 报文头部中的目的 IP 和自己是否一致.

如果相同，则目的主机会将 ARP Request 报文中的源 IP 地址和源 MAC 地址记录到自己的 ARP 缓存表中，并通过 ARP Reply 响应.

如果不同，记录 ARP 表项后，丢弃请求报文.

当源主机收到目的主机发来的 ARP Reply 报文后，会检查数据帧中的目的 MAC 和 ARP 中的 IP 地址是否为自己的 IP 地址和 MAC 地址，如果相同，源主机会将报文中的源 IP 地址和源 MAC 地址记录到自己的缓存表中.

## 免费 ARP

设备刚接入网络时 (刚拥有 IP 地址) 发送免费 ARP (无故 ARP).

用于检测 IP 地址冲突，主机主动使用自己的 IP 地址作为 ARP 中的目的 IP 地址使用，发送请求，正常情况下不会收到 ARP 响应，如果收到则表明网络中存在与自身 IP 地址重复的设备.

## ARP 代理

同一网段，不同物理网络上的计算机之间，可以通过 ARP 代理实现相互通信.

实现第一跳冗余. ARP 欺骗，存在安全问题，现在基本不用. ARP 常存在于以太网，存在局限性.

VRRP

ICMP协议

ICMP 协议 ICMP 协议 ICMPRFC 792 ICMP: 网络控制消息协议，协议号 1, 是一个网络层协议. 用于在网络中传递差错和控制消息的协议. ICMP 报文格式 TY...

传输层协议

传输层协议 传输层协议 什么是端到端端到端是网络连接。网络要通信，必须建立连接，不管多远，中间有多少设备，都必须在源和目的之间建立连接. 端到端是逻辑连接，这条路可能经过了很复杂的物理...

推荐阅读
交换网络基础 IP编址 数据转发过程 以太网帧结构 DHCP ICMP协议

留言区

Notes
数据通信网络
Are You A Robot?