一、以太网
1.1 以太网和 IEEE802 标准的关系
以太网
指一个标准,由 DEC 、 Intel 和 Xerox 公司在 1980 年共同发布的标准,第一个常见格式的以太网在目前被称为 10Mb 以太网
或共享以太网
,后来被 IEEE 采纳修改成了 802.3
标准。
这种网络的所有的站点都工作在一条共享的线路上,网络结构通常为:
二、 CSMA/CD 协议
传统以太网中的网络都连接在一个共享的线路上,从资源共享的角度来说,任何站点都可以在总线上发送和接收数据。而对于总线来说,一旦有站点在发送数据,总线资源就被占用。因此同一时刻只能允许一个站点发送数据,否则就会出现数据干扰无法正常通信。
因此,总线上就需要有一种能协调各站点数据发送的工作机制,来保证每一时刻只有一条线路发送数据,一旦有多个站点同时发送数据,应立即终止传输,这种工作机制在以太网中被称为载波监听多点接入/冲突检测 (CSMA/CD)
协议。改协议一共有三个部分:
- 「载波监听」:在发送数据之前,先监听线路上是否有数据传输,如果没有就发送数据,有则暂停传输。
- 「多点接入」:计算机以多点接入方式连接到一根总线上。
- 「冲突检测」:某一时刻线路空闲时,可能多个站点都在同时发送数据,此时就会导致数据发送冲突,应立即停止发送数据。
CSMA/CD 的工作模型详见:以太网中的 CSMA/CD 协议及二进制指数退避算法详解
CSMA/CD 协议这类型的访问方式更正式的名称为介质访问控制 (MAC)
协议,MAC 协议有多种,有基于竞争的协议 (CSMA/CD), 也有基于预先安排的协议 (例如规定每个站点的发送时间) 。
1.3 发展
随着以太网的发展,更快的以太网也逐渐出现,速度从 10Mb/s 到 100Mb/s 、 1000Mb/s 、 10Gb/s 甚至更高。原始的共享物理电缆逐渐被双绞线替代,基于竞争的 MAC 协议也变得不流行,网络逐渐由共享网络结构变成星形的网络拓扑结构,通过交换机连接成单独的线路。
二、以太网帧格式
原始的以太网由 Intel 等公司共同指定,这种格式被称为 DIX 格式或 Ethernet Ⅱ格式,由 IEEE 标准化后的 CSMA/CD 网络,被称为 802.3 。带 802 前缀的标准定义了局域网和城域网的工作过程,当前最流行的 802 标准包括 802.3(以太网)
和 802.11(WLAN/Wi-Fi)
,无线局域网通常使用 CSMA/CA(CA 是 「冲突检测」) 协议。
2.1 Ethernet Ⅱ帧格式
Ethernet Ⅱ的帧格式如图所示:
- [ ] 报头:8 个字节,前七个字节为 0,最后一个字节为 10101010,用于同步接收站。
- [ ] 目标地址:6 个字节,单播、多播或者广播。单播地址也叫个人、物理、硬件或 MAC 地址。广播地址为 0xFFFFFFFF 。
- [ ] 源地址:6 个字节,发送节点的单点广播地址。
- [ ] 以太类型:2 个字节,用来指出以太网帧内所含的上层协议。即帧格式的协议标识符。对于 IP 报文来说,该字段值是 0x0800 。对于 ARP 信息来说,以太类型字段的值是 0x0806 。
- [ ] 有效负载:46-1500 字节,包含一个上层写一单元 PDU,最大长度 1500 字节,由于以太网的冲突检测特性,至少是 46 个字节。如果上层协议数据单元长度少于 46 个字节,必须增补到 46 个字节。
- [ ] 校验:4 个字节,验证比特序列的完整性。
2.2 802.3 帧格式
以太网帧的开始是一个前导字段,通常为 0xAA
,随后是帧的起始分隔符 SFD
,SFD 固定值为 0xAB
。
- [ ] 前导:7 个字节,每个字节固定为
0xAA
。 - [ ] SFD:1 个字节,同步,固定值为
0xAB
。 - [ ] DST 和 SRC:6 个字节,分别表示
目的 MAC 地址
和源 MAC 地址
。 - [ ] 长度或者标签:多数情况下用于确定有效载荷的数据包类型,TCP/IP 网络中常见的值为:
IPv4(0x0800)
、IPv6(0x86DD)
和ARP(0x0806)
。0x8100
表示一个Q 标签
帧 (可携带 802.1q 标准的VLAN ID
) 。通常一个基础的以太网帧长为 1518 字节,但是更多的新标准把这个值扩展为 2000 字节。 - [ ] P/Q 标签:
虚拟局域网
和Qos
标签,具体的下面介绍。 - [ ] FCS:帧校验序列,也叫 CRC 校验/循环冗余校验,用于对帧进行完整性检查,详见:CRC 循环冗余校验的原理和实现
2.3 以太网帧长度
以太网帧头部不包含前导字段和帧起始分隔符,长度为:目的地址 (6)+源地址 (6)+类型 (2)+校验 (4)=18 字节。
以太网帧有限制最大长度和最小长度,最小为 64 个字节, 最大 1518 字节。
限制最小尺寸的原因是由于 CSMA/CD 中存在争抢期:以太网中的 CSMA/CD 协议及二进制指数退避算法详解,争抢期为 51.2μs,在这个时间段内刚好能通过的数据为 64 个字节,所以最小的尺寸为 64 字节。同时就要求上层数据字段 (有效载荷) 必需大于等于 48 个字节,除去以太网 18 个字节的首部。
最大长度 1518:以太网 MTU 限制为 1500 字节,加上首部 18 个字节所以最多为 1518 个字节。
三、使用 wireshark 抓取以太网数据包
评论