ARP!让网络自己解释清楚

Lobsters Hottest 新闻

摘要

一篇面向初学者的博客,介绍地址解析协议(ARP)如何把 IP 地址映射到 MAC 地址,并演示 arp-scan、Wireshark 和 ip neighbour 等工具的使用,顺带提及 ARP 欺骗与广播风暴等安全话题。

<p><a href="https://lobste.rs/s/mmvhup/arp_tell_your_network_explain_itself">评论</a></p>
查看原文
查看缓存全文

缓存时间: 2026/10/18 13:49

# ARP!让你的网络开口解释自己 来源:https://benjcal.space/blog/arp-tell-your-network-to-explain-itself 2026年10月17日·Ben Calderon 你好呀! 我从来记不住自己给局域网里的设备分配了什么 IP 地址,也不知道路由器给每个设备分配了哪个 IP。最近我在学习 ARP(地址解析协议,Address Resolution Protocol,https://en.wikipedia.org/wiki/Address_Resolution_Protocol)以及 `arp-scan` 这样的工具,忍不住想分享一下它有多酷! 上面就是 `arp-scan` 列出了我网络中每一台设备的 IP、MAC 地址,以及最有用的——厂商信息。下面来聊聊它的原理。 事情是这样的。在你的局域网中,想要向某台设备发送消息,你需要同时知道它的 IP 地址和 MAC 地址。你可能会问:为什么要两个地址呢?这个问题问得好,但完整回答会让这篇文章超出我预期的长度。最简短的回答是:网络交换机不说 IP。它只知道哪些设备(通过 MAC 地址标识)接在哪个端口上。当它收到一个(技术上叫帧,不过这里不展开)目标为某个 MAC 地址的数据包时,就把它转发到该设备所插的物理端口。就这样,这就是交换机绝大部分的工作。 话说回来,我敢打赌你也没打过 `ping AA:BB:CC:DD:EE:FF` 这样的命令。谁有那闲工夫啊!`ping` 只接受 IP 地址,那你的电脑怎么知道 192.168.88.140 的 MAC 地址呢?答案是:它会去问,字面意思上的"问"! 看看 Wireshark 里的这段对话: 虽然我只执行了一条 ping 命令,但之前先发生了一些通信,那就是 ARP。 整个过程是:我的电脑向网络中的所有人提问——*"嘿,谁是 192.168.88.140?"*这条消息是广播的,也就是说发给网络中的每一台设备。我的网络很守规矩,只有正确的接收者做了回应:我的 Xerox 打印机说,"我是 192.168.88.140,我的 MAC 地址是……"(如果你好奇源 MAC 地址从哪来的话,我的工作站用的是 AsRock 主板。)有了这些,我的电脑就有了发送 ping 所需的一切——数据包里同时包含 IP 和 MAC。 随着你的电脑不断与局域网中的其他设备通信,它会逐步建立一份已知邻居的列表。 在 Linux 上,你可以用 `ip neighbour show` 查看这份列表。如果你想亲眼看到电脑询问一个它不认识的邻居的 MAC 地址,可以用 `sudo ip neighbour flush all` 让它忘掉一切。 这个机制有一些有趣的后果。如果有个冒充者声称自己是 192.168.88.1 怎么办?好问题。去查查 ARP 欺骗(ARP spoofing)。😉 另外,每台设备都会收到那条广播消息。如果一台设备不停地发广播怎么办?去查查广播风暴(broadcast storm),对自己学到的东西负起责任!😎 这就是 ARP 的全部内容。下次觉得你的网络像个谜团时,直接问它就好了。 ←我搭了个博客却忘了写文章 (https://benjcal.space/blog/i-built-a-blog-and-forgot-to-write/)

相似文章

@AYi_AInotes: https://x.com/AYi_AInotes/status/2106639522586829094

X AI KOLs Timeline

一篇万字中文保姆级教程,详解 Claude 账号被封的风控机制(时区撕裂、WebRTC 泄漏、终端代理残留等),并给出四层防线与 11 步保号实操,附排查命令、住宅 IP 方案(IPEqual/IPRoyal/VPS)与退款路径。