太强了,5幅图就拿下了ARP协议

简介: 在上一篇文章 别再恐惧 IP 协议 中, 我们了解到,网络层实现主机之间的通信,而链路层实现具体每段链路之间的通信。也就是说:只要在网络层确定了 IP 地址,就可以向这个目标地址发送 IP 数据报。然而,在底层数据链路层,进行实际通信时却有必要了解每个 IP 地址所对应的 MAC 地址。

前言

在上一篇文章 别再恐惧 IP 协议 中, 我们了解到,网络层实现主机之间的通信,而链路层实现具体每段链路之间的通信。也就是说:只要在网络层确定了 IP 地址,就可以向这个目标地址发送 IP 数据报。然而,在底层数据链路层,进行实际通信时却有必要了解每个 IP 地址所对应的 MAC 地址。

对于这段话不太了解的小伙伴强烈推荐翻看上篇讲解 IP 协议的文章 别再恐惧 IP 协议,有非常详细的解释和图例

那么,ARP 就是用来实现由 IP 地址到 MAC 地址转化的一个网络层协议,当然,还有一个 RARP 协议可以实现由 MAC 地址到 IP 地址的转化。两者原理都差不多,本文就以 ARP 协议为例进行讲解。

网络异常,图片无法展示
|

ARP 概要

ARP(Address Resolution Protocol )地址解析协议:实现由 IP 地址到 MAC 地址的转换。准确的来说,ARP 协议以目标 IP 地址为线索,用来定位下一个应该数据分包的网络设备对应的 MAC 地址。

以买车票为例:我们把数据链路层当成乘坐高铁从苏州到南京,再在南京转乘到北京,再在北京转乘到西藏的旅客,那么网络层就相当于每个车站的工作人员,在数据链路层每次转乘时,网络层为其购买了一张标有下一个 MAC 地址的车票。因此,即使旅客(数据链路层)不知道其最终目的地也没有关系,工作人员(网络层)会给你做出指引。

那么,ARP 协议做的事情就是在数据链路层每次换乘时,为其购买一张标有下一个 MAC 地址的车票

网络异常,图片无法展示
|

具体来说,网络层对数据链路层做出指引的过程称为路由控制,指引数据链路层的下一站是哪。为了将数据包发送给目标主机,所有主机和路由器都维护着一张路由控制表(Routing Table),该表记录着如下两个字段:

  • 1)IP 地址
  • 2)如果想要到达这个 IP 地址,在当前路由器,数据包的下一步应该是发送到哪个路由器

很不幸的是,路由控制表中记录的是这个数据包下一步应该发送到的 IP 地址,但是数据链路层进行通信的时候,它只认得 MAC 地址。所以,用来实现 IP 地址到 MAC 地址转换的 ARP 协议在此时就显得尤为重要。

ARP 的工作原理

那么 ARP 又是如何知道 MAC 地址的呢?

简单地说,ARP 是借助 ARP 请求与 ARP 响应两种类型的包确定 MAC 地址的。并且每个主机都有一个 ARP 高速缓存,里面有本局域网上的各主机和路由器的 IP 地址到 MAC 地址的映射表。

如下图所示,假定主机 A 向同一链路上的主机 B 发送 IP 数据报,已知主机 A 和主机 B 的 IP 地址,它们互不知道对方的 MAC 地址:

网络异常,图片无法展示
|

1)首先,主机 A 为了获得主机 B 的 MAC 地址,它会先去查询自己的 ARP 高速缓存中有没有主机 B 的相关记录;

2)如果主机 A 的 ARP 高速缓存中没有主机 B 的 IP 地址到 MAC 地址的映射,主机 A 就会通过广播的方式发送 ARP 请求包(该包携带自己的 IP 地址 和 MAC 地址 以及 目标主机的 IP 地址),表明自己想要获得主机 B 的 MAC 地址;

2) 由于广播请求可以被同一个链路上的所有主机或路由器接收,因此如果这条链路上某个主机或路由的 IP 地址与这个 ARP 请求包中包含的目标主机的 IP 地址相同,那么这个节点就将自己的 MAC 地址塞入 ARP 响应包中返回给主机 A;

网络异常,图片无法展示
|

当然,ARP 响应包是以单播的形式进行发送的,毕竟 ARP 请求包中已经包含了主机 A 的 IP 地址,所以主机 B 非常清楚这个响应包应该发送给谁。

大部分网络协议在设计的时候,都是保持极度克制的,不需要的交互就砍掉,能合并的信息就合并,能不用广播就用单播,以此让带宽变得更多让网络变得更快。

3)主机 A 在收到主机 B 发过来的 ARP 响应包后,向其 ARP 高速缓存中写入主机 B 的 IP 地址到 MAC 地址的映射。

网络异常,图片无法展示
|

当然,缓存是有一定期限的,超过这个期限,缓存的内容将被清空。这也使得即使 MAC 地址和 IP 地址的映射关系发生了变化,也依然能够正确的将数据包发送给目标地址。

本文就是愿天堂没有BUG给大家分享的内容,大家有收获的话可以分享下,想学习更多的话可以到微信公众号里找我,我等你哦。

相关文章
|
6月前
|
缓存 网络协议 安全
【网络工程师】<软考中级>解析协议ARP&路由协议RIP/OSPF/BGP
【1月更文挑战第27天】【网络工程师】<软考中级>解析协议ARP&路由协议RIP/OSPF/BGP
|
6月前
|
缓存 网络协议 网络架构
【计算机网络】第三章 数据链路层(MAC地址 IP地址 ARP协议)
【计算机网络】第三章 数据链路层(MAC地址 IP地址 ARP协议)
122 1
|
10天前
|
网络协议 安全 NoSQL
网络空间安全之一个WH的超前沿全栈技术深入学习之路(8-2):scapy 定制 ARP 协议 、使用 nmap 进行僵尸扫描-实战演练、就怕你学成黑客啦!
scapy 定制 ARP 协议 、使用 nmap 进行僵尸扫描-实战演练等具体操作详解步骤;精典图示举例说明、注意点及常见报错问题所对应的解决方法IKUN和I原们你这要是学不会我直接退出江湖;好吧!!!
网络空间安全之一个WH的超前沿全栈技术深入学习之路(8-2):scapy 定制 ARP 协议 、使用 nmap 进行僵尸扫描-实战演练、就怕你学成黑客啦!
|
1月前
|
缓存 网络协议 Linux
Python渗透测试之ARP毒化和协议应用
Python渗透测试之ARP毒化和协议应用
|
3月前
|
网络协议
用户态协议栈04-定时arp-table的实现
用户态协议栈04-定时arp-table的实现
|
3月前
|
缓存 网络协议
用户态协议栈02-arp reply实现
用户态协议栈02-arp reply实现
|
3月前
|
网络协议 安全 网络安全
ARP协议详解及其工作原理
【8月更文挑战第31天】
99 0
|
3月前
|
存储 缓存 监控
|
3月前
|
存储 缓存 网络协议
MAC协议原理与ARP协议
总结一下,MAC协议是控制同一网络媒介上多个设备的数据访问的规范,而ARP是解决局域网络中的IP地址到MAC地址的转换问题,以确保IP包能在本地网络上传输到正确的设备。尽管这两种协议服务于网络通信中的不同层面,但它们都是网络正常操作的基本要素,保证了数据能从一个设备准确无误地传递到另一个设备。
41 0
|
4月前
|
存储 缓存 网络协议
ARP 地址解析协议
ARP 地址解析协议
70 0
下一篇
无影云桌面