第1关:抓取Ethernet包
任务描述
本关任务:在 Wireshark 下抓取 Ethernet 包。
相关知识
为了完成本关任务,你需要掌握:
- Ethernet 帧结构;
- 学会抓取一组以太帧结构。
以太帧类型
以太帧有很多种类型。不同类型的帧具有不同的格式和 MTU 值。但在同种物理媒体上都可同时存在。
- 以太网第二版或者称之为 Ethernet II 帧,DIX 帧,是最常见的帧类型。并通常直接被 IP 协议使用;
- Novell 的非标准 IEEE 802.3 帧变种;
- IEEE 802.2 逻辑链路控制(LLC) 帧;
- 子网接入协议(SNAP)帧。
Ethernet帧格式
以太网中大多数的数据帧使用的是 Ethernet II 格式:
Ethernet II 类型以太网帧的最小长度为 64 字节(6+6+2+46+4),最大长度为 1518 字节(6+6+2+1500+4)。其中: (1)前 12 字节分别标识出发送数据帧的源节点 MAC 地址和接收数据帧的目标节点 MAC 地址; (2)接下来的 2 个字节标识出以太网帧所携带的上层数据类型,如 16 进制数0x0800
代表 IP 协议数据,16 进制数0x86dd
代表 IPv6 协议数据,16 进制数0x809B
代表 AppleTalk 协议数据,16 进制数0x8138
代表 Novell 类型协议数据等; (3)在不定长的数据字段(Data):其长度是 46 至 1500 字节; (4)4 个字节的帧校验序列(Frame. Check Sequence,FCS),采用 32 位 CRC 循环冗余校验对从“目标 MAC 地址”字段到“数据”字段的数据进行校验。
IEEE 802.3 帧格式:
各字段说明如下: (1)D-MAC && S-Mac:分别表示标识目标地址和源地址。它们均为 6 个字节长。如果传输出去的目标地址第一位是 0,则表示这是一个普通地址;如果是 1, 则表示这是一个组地址。 (2)Length / Type :通常这个字段用于指定报文头后所接的数据类型。通常使用的值包括:IPv4(0x0800
), IPv6(0x86DD
), ARP(0x0806
)。 而值0x8100
代表一个 Q-tagged 帧(802.1q)。通常一个基础的以太网帧长为 1518 字节,但是更多的新标准把这个值扩展为 2000 字节。 (3)MAC Client Data: 数据主体,由 LLC、SNAP 及 Data 构成。最小长度为 48 字节(加上帧头 12 字节,CRC4 字节刚好 64 字节), 当数据主体小于 48 字节时,会添加 pad 字段。选取最小长度是出于冲突检测的考虑(CSMA/CD)。而数据字段最大长度为 1502 字节。
IEEE 802.2 LLC的头构成: (a)DSAP 目的服务访问字段,1 字节长,指明帧的目的上层协议类型; (b) ASAP 源服务访问字段,1 字节长,指明帧的源上层协议类型; (c) control 控制 1 字节或者 2 字节,长度要看被封装的 LLC 数据类型,是 LLC 数据报(类型1)1 字节,LLC 对话的一部分(类型2)2 字节。
类型1 表明是无连接的,不可靠的 LLC 数据报,控制字段用0x03
指明;类型 2 表明是面向连接可靠的 LLC 会话。 (4)FCS(Frame Check Sequence):也叫 CRC(Cyclic Redundancy Check),CRC 是差错检测码,用来确定接收到的帧比特是否正确。
IEEE 802.3 SNAP
虽然 IEEE 802.3 是标准,但没有被业界采用。以太网 II 已成事实标准。于是 IEEE