🔌 第二章 用电信号传输TCP/IP数据
📄 一句话概括

MAC 头三个字段:目的 MAC(下一跳设备)、源 MAC(本机网卡)、类型(0800 表示载荷是 IP 包)——48 比特出厂自带。

📝 本节和前面几节的关系

IP 信封写完;本篇写最外层信封——给下一跳的。

一、三个字段

目的 MAC=下一跳(通常是网关);源 MAC=本机网卡; 类型=0800(载荷是 IP)。

二、MAC 与 IP 的分工

IP 定终点(全程不变),MAC 定下一跳(每跳重写)—— 一个管战略一个管战术。

三、动手 Demo:MAC 头部

字段速览:

for f, e, u in [('目的 MAC','网关的 MAC','下一跳给谁'),
               ('源 MAC','本机网卡 MAC','谁发的'),
               ('类型','0800(IP)','载荷是 IP 包')]:
    print('%-9s %-16s %s' % (f, e, u))

实跑输出:

--------------------------------------------------------------------
MAC 头部
--------------------------------------------------------------------
  MAC 头三个字段:

  字段         例子             用途
  -------------------------------------------
  目的 MAC     网关的 MAC       下一跳给谁
  源 MAC       本机网卡 MAC     谁发的
  类型         0800(IP)         载荷是 IP 包
  -------------------------------------------

  MAC 地址 48 比特、网卡出厂自带;
  与 IP 的分工:IP 定终点,MAC 定下一跳。

MAC 地址前 3 字节是厂商标识(OUI)—— 看前缀能猜网卡厂商,教材也提了这个彩蛋。

30 秒实验

  1. ipconfig /all 看本机 MAC,前 3 字节查厂商。
  2. Wireshark 看一跳路由器前后的 MAC 变化。
  3. 想想 VPN 或 NAT 场景下 MAC 是否离开本网段(不会)。

常见误区

  1. 以为 MAC 写的是最终服务器——是下一跳设备。
  2. 以为 MAC 会穿越路由器——每跳重写,不出本网段。
自测三问(点开对答案) 1. MAC 头的目的地址是谁? —— 下一跳(通常网关)。 2. MAC 地址多少比特? —— 48 比特。 3. 类型 0800 表示什么? —— 载荷是 IP 包。

相关笔记