💻 第九章 通过七个简单的实验理解TCP/IP网络
📄 一句话概括

同网段投递要知道对方的 MAC——ARP 用【广播问、单播答】查到对应关系记进 ARP 表;arp -a 现场看,IP 与 MAC 的分工就此对账。

📝 本节和前面几节的关系

七个实验收尾:把前两节的两位主角请到同一张桌上——ARP 表就是 IP 与 MAC 的对照账本。

一、为什么两个地址都要

IP 管全局终点:跨多少网络都不变,指明最终去哪; MAC 管本段下一站:每经过一台路由器就换一个新 MAC,指明这一程交给谁; 所以发每个包都要回答两个问题:终点 IP 是谁?下一跳 MAC 是谁?——前者的账本在路由表(9.5),后者的账本就是 ARP 表。

二、ARP 的问法

发包前查 ARP 表没有目标 IP 的记录,就广播喊话:【谁是 192.168.1.1?请告诉 192.168.1.100】——网段里每台都听得到; 只有本主单播应答:【我是,我的 MAC 是……】——问路靠广播,答话一对一; 学到的对应记进 ARP 表并带时效:过期作废重问,防止网卡换了表还记旧账。

三、实验怎么做

跑 arp -a:逐行列出 IP、MAC、类型(动态/静态); 先 ping 一下网关再跑 arp -a,就能看到网关的对应刚被记进去; 23 课 6.4 讲过:包每过一跳就【拆旧帧、ARP 问新门牌、封新帧】——本表就是那个动作的现场。

四、动手 Demo:ARP 广播问单播答

模拟一次 ARP 询问,把学到的 IP-MAC 对应记进表里。

arp = {}
print("广播: 谁是 192.168.1.1? 告诉 192.168.1.100")
arp["192.168.1.1"] = "A4-BB-6D-00-00-01"
print("单播答: 我是 192.168.1.1, MAC", arp["192.168.1.1"])
print("ARP 表:", arp)

实跑输出:

--------------------------------------------------------------------
实验 7——查看 IP地址和 MAC地址的对应关系
--------------------------------------------------------------------

包要送到网关, 还得知道网关的 MAC——ARP 负责问出来:

    [广播问]  全网喊: 谁是 192.168.1.1? 请告诉 192.168.1.100
    [单播答]  网关悄悄回: 192.168.1.1 是我, MAC 是 A4-BB-6D-00-00-01

    学到的对照记进 ARP 表(有时效, 过期重问), arp -a 查看:

  IP 地址           MAC 地址               类型
  ----------------------------------------------
  192.168.1.1       A4-BB-6D-00-00-01      动态
  192.168.1.100     本机自己的网卡 MAC     --

IP 与 MAC 的分工对账:
    跨网段送信: IP 指出全局终点(不变); MAC 指出本段下一站(每跳一换)。
    所以叫【门牌是 IP, 身份证是 MAC】——9.9 用层级模型把分工收拢。

广播是【全宿舍楼喊一嗓子】,单播是【当事人悄悄回话】——一喊一答,账本到手。 【⚠️ 2026 现状】ARP 只信【谁答得快】,无验证机制——局域网里的 ARP 欺骗攻击正是钻这个空子,19 课安全课有对策。

30 秒实验

  1. 先 ping 网关再跑 arp -a,找出网关 IP 对应的 MAC。
  2. 用【门牌与身份证】的比喻,向别人解释 IP 与 MAC 谁变谁不变。

常见误区

  1. 以为 ARP 是跨网段的协议——它只管本网段,跨网段问的是网关的 MAC。
  2. 以为 ARP 表永久有效——条目带时效,过期重问,网卡换 MAC 也换。
自测三问(点开对答案) 1. ARP 解决什么问题? —— 已知同网段目标的 IP,查它的 MAC。 2. 问与答各用什么方式? —— 广播问、单播答。 3. 一个包在路上,IP 和 MAC 哪个变? —— IP(终点)不变,MAC(本段下一站)每跳一换。

相关笔记