IP 会变,MAC 不变
同一台笔记本,在家是 192.168.1.5,到公司变成 10.2.8.33——IP 是逻辑地址,跟着网络环境走。而 MAC 地址 48 位,烧在网卡里全球唯一,走到哪都不变。为什么要有两套地址?因为分工不同:IP 负责端到端的路径规划(跨城市怎么走),MAC 负责一跳之内的实际投递(这一站交给谁)。快递单上的收货地址是 IP,驿站扫码认的取件码是 MAC。
ARP:喊一嗓子问门牌
知道对方 IP,要把帧交给对方 MAC,中间隔一次查询——ARP 协议。流程简单粗暴:广播提问,单播回答。
$ arp -a
? (192.168.1.1) at a4:7b:2c:11:22:33 on eth0 ← 网关的 MAC
? (192.168.1.103) at f0:18:98:aa:bb:cc on eth0 ← 同事电脑
// ARP 请求(广播帧,全子网都收得到):
// 谁是 192.168.1.1?请告诉 192.168.1.5(我的 MAC 是 xx)
// ARP 应答(单播):
// 我是 192.168.1.1,我的 MAC 是 a4:7b:2c:11:22:33
// 查到的映射缓存起来(几分钟过期),不会每次发包都喊排查网络时 arp -a 很好用:网关条目缺失或不完整,说明二层不通——网线、交换机、VLAN 划分的问题,跟 IP 配置无关。
一个包的封装与拆封
应用数据往下发,每过一层包一层信封,对端收到再逐层拆开——这就是封装:
┌────────────────────────────────────────────────────────┐
│ 以太网帧头 │
│ 源 MAC: f0:18:98:aa:bb:cc 目标 MAC: a4:7b:2c:11:22:33│
│ ┌──────────────────────────────────────────────────┐ │
│ │ IP 头 │ │
│ │ 源 IP: 192.168.1.5 目标 IP: 192.168.1.1 │ │
│ │ ┌────────────────────────────────────────────┐ │ │
│ │ │ TCP 头:源端口 52333 → 目标端口 443 │ │ │
│ │ │ ┌──────────────────────────────────────┐ │ │ │
│ │ │ │ 应用数据(TLS 记录 / HTTP 报文) │ │ │ │
│ │ │ └──────────────────────────────────────┘ │ │ │
│ │ └────────────────────────────────────────────┘ │ │
│ └──────────────────────────────────────────────────┘ │
└────────────────────────────────────────────────────────┘
接收方按相反顺序拆:每一层只读自己的头,干自己的事跨网段时,目标 MAC 填谁
这是最容易被面试官追问的点。主机发现目标 IP 不在自己子网(拿子网掩码一算便知),就把帧交给默认网关——注意:IP 头里的目标地址始终是最终目的地,但帧的目标 MAC 填的是网关的 MAC。网关收到后拆掉帧头,查自己的路由表,重新封装,把目标 MAC 换成下一跳的。每一跳 MAC 都在换,IP 头里源和目标从头到尾不变(NAT 场景除外)。
ARP 欺骗:局域网的暗箭
ARP 应答不验证身份,谁喊都信——这给攻击留了门:攻击者不断广播假 ARP 应答,谎称网关 IP 对应自己的 MAC,受害机器的流量就先流经攻击者(中间人),再转发给真网关。防御思路:交换机开动态 ARP 检测、关键机器静态绑定网关 MAC。日常自查:同一台网关的 MAC 在 arp -a 里突然变了,警惕。下一篇进入重头戏:TCP 连接是怎么建立的,为什么偏偏握手三次。
评论 (0)