什么是arp协议-什么是ARP协议

ARP,全名是地址解析协议,说白了就是互联网上负责“认人”的本地版身份证。在没上互联网的年代,咱们通信主要跑光纤要么铜线,数据包直接跟着光走,地址管得宽。但互联网早期全是 TCP/IP 协议,它只管如何把数据从 A 传到 B,根本不管 B 是哪位,也不知道 A 在哪个网段。
这时候,路由器就像个翻译官,查了字典,发现目标地址是陌生 IP,就赶紧把数据包扔回给负责这个网段的人,再由那个人再去问下一个路由器,直到所有路由器都说这路不通,最终把包扔进本地网关。
这时候,网关收到一堆乱码,却彻底不知道目标是哪位,便它傻乎乎地直接丢进主机里。结局呢,主机收到的是毫无意义的垃圾数据,出于接收方根本期待的是特定网段的数据包。 那 ARP 是如何把这一团乱麻给理顺的?ARP 就是解决“匿名”难题的。它本质上是个静态数据库,电子设备里存着本地的“邻居表”,也就是 ARP 表。
这个表里记录了:我的 IP 地址是哪位的 MAC 地址对应,老板的 IP 是张三的,同事的 IP 是李四的。
这个表是动态更新的,设备一开机,要么网络环境变了,这个表就会像洗脑一样被麻利刷新一遍。
比如你说“老板的 IP 是 192.168.1.100",他可能会睡待会儿,那你会把表记下来,等他醒来再改。
这个表里还有个倒腾的键,叫“广播地址”,用来敲门。 如何用这个表呢?当你想知道某个设备(比如那台 PC)具体用哪个 MAC 地址时,你没法直接查表,得用广播。你发一个 ARP 请求包,里面写着:嘿,有个设备叫 192.168.1.100,能不能告诉我他目前的 MAC 地址?这个请求包里填的是对方的 IP 地址,与此同时会与此同时发给局域网里所有能听到广播的设备,相当于在房间里大喊一声“哪位能告诉我哪位是老板的 MAC?”。 这时候,房间里的其他设备都会收到这个包。其中,那个想跟对方讲话的设备(比如你的手机要么电脑),会立马认出自己是哪位,然后把自己的 MAC 地址填进去回传。其他设备呢?它们除了自己,没人会知道您是哪位,故此它们只会回“未知”,要么干脆忽略,持续做其他事。 再回到那个被喊的小程序,它收到回复后,立马在自己的 ARP 表里把"192.168.1.100"和"00:11:22:33:44:55"这两个地址绑定在一起,赶明儿想访问就能直接调用这个 MAC 地址,不用反复切换路由了。整个过程就像你出门前做核酸,别看大家都挨着讲话,但那刹车的绝对保险,你不用等警察查完所有人再说,你自己就能找到那扇通往特定房间的门。 举个枯燥但典型的例子:假设你在公司,我是你同事张三,我的 IP 是 192.168.1.60,他的 IP 是 192.168.1.70。你正在传文件给张三,路由器正忙着把文件转收。
这时候,张三的电脑突然断网了,要么张三认定你 IP 变了,想重新连上内网。张三会广播一个 ARP 请求:“嘿,192.168.1.60 是哪位的?能不能告诉我他的 MAC 地址?”局域网里的所有设备都收到了。我作为局域网里的那个设备,会立马想起来自己是 192.168.1.60,然后回告:“我就是在,我的 MAC 是 AA:BB:CC:DD:EE:FF。”张三收到后,立马在表里记下了,赶明儿找我的门就指路了。 在深层网络里,这个过程还涉及更多细节。
要是 ARP 请求发到了下层设备,比如路由器,而路由器根本不知道目标是哪位,它只能先把包扔给网关。网关收到后,要是网关和路由器的路由表里确实有条目,直接转发;要是查路由表还是找不到,网关就把包扔给下一跳,直到找到入口点。
这时候 ARP 表就发挥了核心功能,它让网关知道:“嘿,目标 IP 的主机就在网关自己这,我直接转包给它就行。” 并且,ARP 表还负责防错和纠错。
要是之前记录的是 A,目前网络变了,实际变成了 B,但 ARP 表里还是 A,那下次发包就会乱套,数据包可能送到毛病的地方,要么被丢弃。
故此设备务必定期刷新这个表,要么一旦发现冲突,立马删除旧记录。
这就像你记电话号码本,要是哥们儿换了号,你立马把旧号码本撕掉,不然赶明儿打错电话就费事了。 从底层协议来看,ARP 是在 TCP/IP 模型里,位于网络层和传输层之间的“胶水”。它不是 TCP 的,TCP 负责如何把数据打包成三字节组和四字节组,如何纠错,如何保证不丢包。ARP 只管地址解析。TCP 可能让一个数据包进二层换机,ARP 负责告诉换机:“嘿,这个包要发给 hosts,hosts 到底用哪个 MAC 地址?” 对比一下,要是没有 ARP,数据包就是透明地滑过网络层,只负责转包,根本不知道行不通。有了 ARP,数据包有了明确的“收件人”和“门牌号”,网络传输效率瞬间提升,延迟下降。 自然,ARP 也有坑。ARP 欺骗(ARP Spoofing)是个常见攻击手段。黑客在局域网里挂一个假设备,伪造自己的 MAC 地址,然后广播“嘿,192.168.1.100 是我的”,其他设备就会把数据包发给假设备。
这时候,滥用 ARP 欺骗的人就能窃听所有经过的流量,就连把流量劫持篡改,彻底管住了局域网。
故此,现代网络都在用双 IP、DHCP Snooping 这些手段来防着这招。 再聊聊效率难题。局域网里的 ARP 请求都是广播寻址,这意味着每个设备都要看到 Request,然后都要回复。别看局域网里的设备数量不多,但广播包会占用带宽和 CPU 资源。
要是网络里有几百台设备,广播风暴就来了,性能就崩了。
故此,目前有些换机会开启 ARP 泛洪抑制要么基于 MAC 地址前缀的过滤,只准发请求的设备去问其他设备,其他设备直接忽略,这样既快又保险,还省资源。 还有,ARP 表的大小是有限的。
一般局域网里顶多只能存几百个 MAC 地址,超过这个数量,表就满了。
这时候设备就会用缓存机制,一旦查不到就直接用缓存里的旧值,直到网络环境变了,它才会重新学习新表。
这也是为啥设备重启后,网络可能暂时有点慢的缘由,出于它得重新学习。 总结一下,ARP 就是局域网里的“身份证互换机制”。它把 IP 这种地址转换成 MAC 这种硬件地址,建立了临时的映射表,让数据包能通过路由器准地找到目标设备。
没有它,互联网早期的数据包传输就是盲人摸象,充满了推测和浪费。它让网络从需求层层询问的迷宫,变成了能够直接对话的社区,别看间或会有点迟钝,但根本功能全有了。
文章版权声明:除非注明,否则均为 静秋号介绍 原创文章,转载或复制请以超链接形式并注明出处。
相关标签: