4、以太网帧与ARP:从比特流到IP的桥梁
各位好,我是老赵。今天咱们聊一个抓包分析里绕不开的话题——以太网帧和ARP协议。
说实话,很多新手抓包时看到一堆MAC地址就头大。其实这东西没那么玄乎。你想想看,数据在网线上跑,靠的是MAC地址,不是IP地址。IP地址只是“门牌号”,真正把数据送到你手里的是“快递员”——MAC地址。
4.1 以太网帧结构:数据在网线上长什么样?
以太网帧,说白了就是数据在以太网上传输的“包装盒”。我刚开始学抓包时,看着Wireshark里那一串十六进制数,完全不知道在干嘛。后来拆开看,其实就几个部分。
| 字段 | 长度(字节) | 说明 |
|---|---|---|
| 前导码 | 7 | 同步时钟,实际抓包看不到 |
| 帧起始定界符 | 1 | 标识帧开始 |
| 目的MAC地址 | 6 | 接收方MAC |
| 源MAC地址 | 6 | 发送方MAC |
| 类型/长度 | 2 | 0x0800=IPv4,0x0806=ARP |
| 数据载荷 | 46~1500 | 上层协议数据(IP包等) |
| 帧校验序列 | 4 | CRC校验,检查数据是否损坏 |
4.2 MAC地址解析:48位的“身份证”
MAC地址,每个网卡出厂时烧录的全球唯一标识。6个字节,48位,用十六进制表示,比如 00:1A:2B:3C:4D:5E。
前3个字节是OUI(组织唯一标识符),代表厂商。比如 00:1A:2B 是某厂商的。后3个字节是厂商分配的序列号。
我记得有一次帮朋友排查网络不通。他两台电脑直连,IP配好了就是ping不通。我一看,MAC地址居然配成了一样的——他手动改了网卡MAC。嗯,这坑踩得有点冤。
4.3 ARP协议原理:IP怎么找到MAC?
ARP(地址解析协议),就是干这个活的。当主机A想给主机B发IP包,但不知道B的MAC地址时,就会发一个ARP请求。
流程很简单:
- A广播一个ARP请求:“谁的IP是192.168.1.2?告诉我你的MAC。”
- 同一广播域内所有主机都收到这个请求。
- 只有IP为192.168.1.2的主机B响应:“我是,我的MAC是00:1A:2B:3C:4D:5E。”
- A收到响应,把IP-MAC映射写入ARP缓存表。
ARP报文结构:
硬件类型:0x0001(以太网)
协议类型:0x0800(IPv4)
硬件地址长度:6
协议地址长度:4
操作码:1(请求)/ 2(响应)
发送方MAC:00:1A:2B:3C:4D:5E
发送方IP:192.168.1.1
目标MAC:00:00:00_00:00:00(请求时为全0)
目标IP:192.168.1.2
4.4 ARP抓包分析:用Wireshark看个明白
打开Wireshark,抓个包。你输入 arp 过滤,就能看到ARP报文。
我一般这样分析:
- 看操作码:1是请求,2是响应。
- 看目标MAC:请求时是全0,响应时是具体MAC。
- 看时间间隔:正常ARP请求间隔几秒到几分钟。如果每秒几十个,那就有问题。
举个例子,你ping一个不存在的IP,会看到连续发ARP请求,没人响应,最后超时。这就是“目标不可达”的底层原因。
4.5 ARP欺骗与防御:别让你的数据被“中间人”
ARP欺骗,说白了就是伪造ARP响应。攻击者冒充网关,告诉受害者“网关的MAC是我”。然后受害者的数据就全发给了攻击者。
攻击流程:
- 攻击者C发送伪造ARP响应给A:“网关192.168.1.1的MAC是C的MAC”。
- A更新ARP表,把网关MAC指向C。
- A发给网关的数据,全部经过C。
- C可以抓包、篡改、转发——这就是中间人攻击。
怎么防御?
- 静态ARP表:在关键设备上手动绑定IP-MAC。比如网关、服务器。
- DAI(动态ARP检测):交换机上开启,只允许合法的ARP报文通过。
- ARP防火墙:终端上装软件,检测异常ARP报文。
4.6 知识体系总览
下面这张图,把本章的核心逻辑串起来了。从以太网帧到ARP,再到欺骗与防御,一条线。
好了,这一章就到这。以太网帧和ARP,是抓包分析的基础中的基础。你只要把帧结构记熟,把ARP流程搞懂,后面分析TCP/IP就轻松多了。