ARP 协议详解

本贴最后更新于 1501 天前,其中的信息可能已经沧海桑田

ARP 协议

地址解析协议,即 ARP(Address Resolution Protocol),是根据 IP 地址获取物理地址的一个 TCP/IP 协议。主机发送信息时将包含目标 IP 地址的 ARP 请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该 IP 地址和物理地址存入本机 ARP 缓存中并保留一定时间,下次请求时直接查询 ARP 缓存以节约资源。地址解析协议是建立在网络中各个主机互相信任的基础上的,网络上的主机可以自主发送 ARP 应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机 ARP 缓存;由此攻击者就可以向某一主机发送伪 ARP 应答报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个 ARP 欺骗。ARP 命令可用于查询本机 ARP 缓存中 IP 地址和 MAC 地址的对应关系、添加或删除静态对应关系等。

简单的来说 arp 协议就是根据 ip 地址获取 mac 地址。

image.png

以太网帧格式

不管上层是什么协议什么应用,到了数据链路层都是通过以太网发送的,我们先看看以太网帧格式

所以我们想要进行网络传输一定要知道目的方的 mac 地址,mac 地址是唯一的。这时候就需要用到 arp 协议通过 ip 地址得到 mac 地址。

image.png

image.png

ARP 报文格式

image.png

假设自己的 mac 地址为 00:0c:29:0a:c4:c1 IP 为 192.168.1.25

想获取 192.168.1.33 的 mac 地址 00:03:21:0a:b4:a1

在发送 arp 请求的时候 由于不知道目的地址的 mac 地址,所以 arp 报文格式中的以太网目的地址需要填充为

00:00:00:00:00:00

以太网目的地址 以太网源地址 协议类型 发送端以太网地址 发送端 IP 地址 目的以太网地址 目的 IP 地址
00:00:00:00:00:00 00:0c:29:0a:c4:c1 0806 00:0c:29:0a:c4:c1 192.168.1.25 00:00:00:00:00:00 192.168.1.33

然后再当前网段局域网中广播此 arp 包,每台主机都会对比目的地址 ip,如果对不上就丢弃此 arp 包,如果对上了就发送 arp 回包,格式一样。

192.168.1.33 这台主机的 arp 回包

以太网目的地址 以太网源地址 协议类型 发送端以太网地址 发送端 IP 地址 目的以太网地址 目的 IP 地址
00:0c:29:0a:c4:c1 00:03:21:0a:b4:a1 0806 00:03:21:0a:b4:a1 192.168.1.33 00:0c:29:0a:c4:c1 192.168.1.25

33 发送的 arp 回包也将在局域网内广播,对不上 ip 的主机就会丢弃此 arp 包,192.168.1.25 收到 arp 回报后就得到了 33 的 mac 地址,将其填充到以太网帧的 mac 头部进行网络传输。

如果经过多个路由器的话,我们还需要配合路由表进行工作,这个在路由协议的时候再说。

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...