ARP!让网络自己解释清楚
摘要
一篇面向初学者的博客,介绍地址解析协议(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/)
相似文章
@NFTCPS: 你家 WiFi 到底有多少陌生设备在偷偷蹭网,你根本不知道。 Pi.Alert 这个开源小工具就干一件事:盯着你的 WiFi 和局域网,谁连进来、谁断开、谁的 IP 偷偷变了,全给你揪出来。 它用三招扫网络: arp-scan 直接嗅探 …
介绍开源工具 Pi.Alert,用于监控 WiFi/LAN 设备,检测陌生设备和变化,支持树莓派部署,并通过邮件通知。
@gengdaJ: https://x.com/gengdaJ/status/2086694377016131669
一篇面向AI时代用户的网络基础知识科普,通俗讲解IP、IPv4、IPv6、NAT等核心概念,并结合代理、VPN、本地模型等实际场景说明为何需要了解底层网络原理。
@shenxiankk:告诉你一件挺可怕的事:家里的 WiFi 路由器?可能没你想的那么安全。有一个开源工具……
介绍开源工具 Airgorah——一个用 Rust 编写、基于 Linux 的图形化 aircrack-ng 封装工具,可用于嗅探 WiFi 流量、识别设备、发起 deauth 攻击并抓取握手包破解密码,仅限在自己的网络上进行安全审计使用。
@AYi_AInotes: https://x.com/AYi_AInotes/status/2106639522586829094
一篇万字中文保姆级教程,详解 Claude 账号被封的风控机制(时区撕裂、WebRTC 泄漏、终端代理残留等),并给出四层防线与 11 步保号实操,附排查命令、住宅 IP 方案(IPEqual/IPRoyal/VPS)与退款路径。
@grgerwcwetwet: 终于找到一个能替代 Wireshark 的开源神器。 GitHub 3.7 万 Star 的 Sniffnet,把网络监控做成了普通人也能看懂的样子。 很多人打开 Wireshark 的第一反应都是: 看不懂,直接关闭。 而 Sniffn…
介绍开源网络监控工具 Sniffnet,可作为 Wireshark 的易用替代品,支持实时流量监控、过滤、PCAP 导入导出,界面友好,全平台支持。