以太网与 IEEE 802.3

以太网是 3.5.2 那套 CSMA/CD 的实际宿主,也是整个第 3 章命题最密的一节:MAC 地址多长、帧格式的每一个字段、46 字节从哪来、为什么不需要结束定界符、高速以太网还用不用 CSMA/CD——每一条都单独考过。

这些内容看起来零散,其实都从两个设计决定里长出来:以太网选择了”尽最大努力交付”,以及它最初是一条共享的半双工总线。

机制

以太网与 802.3 是什么关系

以太网规约的第一个版本 DIX V1 由 DEC、Intel 和 Xerox 联合提出,之后修改为第二版 DIX Ethernet V2,这是世界上第一个局域网产品的规约。IEEE 802.3 工作组在此基础上制定了第一个 IEEE 的以太网标准 802.3。严格说,以太网指符合 DIX Ethernet V2 标准的局域网,但两者差别很小,通常把 802.3 局域网直接称为以太网。

两项简化措施:以太网为什么不可靠

以太网为简化通信采取了两项措施(2012 年考过”以太网 MAC 协议提供的服务类型”)。第一,采用无连接的工作方式,既不对发送的数据帧编号,也不要求接收方发回确认,即尽最大努力交付,提供的是不可靠服务,差错的纠正由高层完成。第二,发送的数据都使用曼彻斯特编码,每个码元中间出现一次电压转换,接收方利用这个转换就能方便地提取位同步信号。

第一项决定了以太网的服务性质:收到有错的帧只是丢弃,不重传、不通知——重传是 TCP 的事,见 第 5 章。王道 3.6.6 第 12 题的解析也是这个意思:网卡收到帧后发现目的 MAC 地址不是自己,直接丢弃,不需要向网络层报告错误。

传输介质与网卡

以太网常用的传输介质有四种:粗缆、细缆、双绞线和光纤。

标准介质编码拓扑最大段长最多节点
10BASE5同轴电缆(粗缆)曼彻斯特总线形500m100
10BASE2同轴电缆(细缆)曼彻斯特总线形185m30
10BASE-T非屏蔽双绞线曼彻斯特星形100m2
10BASE-F光纤对(850nm)曼彻斯特点对点2000m2

名字的读法是固定的:10 指速率 10Mb/s,BASE 指基带以太网,其后的 5 或 2 指单段最大距离不超过 500m 或 185m,T 指双绞线,F 指光纤。

计算机通过主板上的一块网络适配器(Adapter,也称网络接口卡 NIC)连接局域网。适配器上装有处理器和存储器。它与局域网之间用电缆或双绞线以串行方式通信,与计算机之间则通过 I/O 总线以并行方式通信,所以它的一项重要功能是串并转换。除此之外,它还负责与介质的物理连接和电信号匹配、帧的发送与接收、帧的封装与拆封、介质访问控制、数据的编码与解码以及数据缓存。适配器收到正确的帧时,用中断通知计算机,并把数据交给协议栈中的网络层;计算机要发送 IP 数据报时,协议栈把数据报交给适配器,由它组帧后发到局域网。适配器的功能横跨物理层和数据链路层(王道 3.6.6 第 6 题)。

MAC 地址

IEEE 802 标准为局域网规定了一种 48 位的全球地址,固化在适配器的 ROM 中,称为物理地址或 MAC 地址。MAC 地址长 6 字节(2013 年考过),一般写成用连字符或冒号分隔的 12 个十六进制数,如 02-60-8c-e4-b1-21;高 24 位为厂商代码,低 24 位为厂商自行分配的适配器序列号。

MAC 地址属于适配器,而不属于计算机。一台计算机只要不更换适配器,不管地理位置如何变化,MAC 地址都不会变;反过来,路由器同时连接两个网络,就需要两个适配器和两个 MAC 地址——MAC 地址标识的其实是”路由器的某个接口”。

适配器每收到一个 MAC 帧,先用硬件检查帧的目的地址,只收下三种”发往本站的帧”:单播帧(目的地址与本站 MAC 地址相同)、广播帧(全 1 地址)、多播帧(发送给本局域网上一部分站点),其余一律丢弃。

MAC 帧格式

以太网 MAC 帧有 DIX Ethernet V2 和 IEEE 802.3 两种格式,最常用的是 V2:

字段长度说明
前导码8B7B 前同步码(1010…10)+ 1B 帧开始定界符(10101011);物理层插入,不计入帧长
目的地址6B帧在局域网上的目的适配器的 MAC 地址
源地址6B帧的源适配器的 MAC 地址
类型2B数据字段应交给哪个上层协议处理,如网络层的 IP
数据46~1500B承载上层 PDU,如 IP 数据报
FCS4B32 位 CRC,检验目的地址到数据字段,不检验前导码

首部 14 字节、尾部 4 字节,合计 18 字节(首部和尾部长度 2010、2011 年考过;目的地址与源地址的含义 2018 年考过)。帧格式上的每一个数字都有来由:

数据字段下限 46 字节从 CSMA/CD 来。 CSMA/CD 要求帧长至少 64 字节,否则一个短帧发完了冲突信号还没传回来,发送方检测不到冲突。扣掉首部和尾部 18 字节,数据字段至少 字节。IP 数据报少于 46 字节时,MAC 子层在数据字段后面加一个整数字节的填充字段,保证帧长不小于 64 字节(2012 年考过”分析 IP 首部判断以太网帧是否需要填充”)。

数据字段上限 1500 字节就是以太网的最大传输单元(MTU)。 IP 数据报超过 1500 字节就必须分片,而分片是网络层的事,见 4.2.1 IPv4 分组与分片。

以太网帧不需要帧结束定界符。 以太网传送帧时各帧之间必须有一定的间隙,接收方只要找到帧开始定界符,其后连续到达的比特流就都属于同一个帧。实际上这里用了违规编码法的思想:曼彻斯特编码每个码元中间都有一次电压跳变,发送方发完一帧后,网络接口上的电压不再变化,接收方由此找到帧的结束位置,往前数 4 字节就是 FCS,从而确定数据字段在哪里结束。

802.3 帧与 V2 帧只差一个字段:802.3 用”长度”替代了 V2 帧中的”类型”,指出数据字段的长度。两种机制在实践中可以并存,办法是看这个字段的数值——802.3 数据字段最大为 1500 字节,所以长度值不超过 1500,于是 1501~65535 的值可用于类型标识。

高速以太网

速率达到或超过 100Mb/s 的以太网称为高速以太网:

100BASE-T吉比特以太网10 吉比特以太网
速率100Mb/s1Gb/s10Gb/s
介质双绞线双绞线或光纤双绞线或光纤
通信方式半双工和全双工半双工和全双工只有全双工
CSMA/CD仅半双工时使用仅半双工时使用不使用

100BASE-T(快速以太网)是在双绞线上传送 100Mb/s 基带信号的星形拓扑以太网,2019 年考过它使用的传输介质。它仍使用 CSMA/CD 协议,但可以工作在全双工方式下而无冲突发生,因此全双工时不使用 CSMA/CD。帧格式仍是 802.3 规定的格式,保持最短帧长不变,但把一个网段的最大长度减小到 100m;帧间最小间隔从 9.6μs 改为 0.96μs。

吉比特以太网(千兆以太网)允许在 1Gb/s 下以全双工和半双工两种方式工作,使用 802.3 规定的帧格式,用双绞线或光纤作为传输介质;半双工方式下使用 CSMA/CD,全双工方式下不使用;与 10BASE-T 和 100BASE-T 向后兼容。

10 吉比特以太网的帧格式与 10Mb/s、100Mb/s、1Gb/s 以太网完全相同,还保留了 802.3 规定的最小帧长和最大帧长,以便升级和向后兼容。它只工作在全双工方式,不存在争用问题,当然也不使用 CSMA/CD。

三者遵循同一条规律:提速改变的是速率和距离,帧格式不变;是否运行 CSMA/CD 只取决于是否半双工,与速率无关。

计算模板:以太网帧要不要填充、要不要分片

设交给 MAC 子层的 IP 数据报总长为 字节:

的范围以太网的处理帧长(不含前导码)
数据字段后填充 字节64B
直接封装
以太网不处理,由 IP 在网络层分片每片各自封装

插入 VLAN 标签的 802.1Q 帧首部多 4 字节,数据下限变为 42 字节、最大帧长变为 1522 字节,见 3.6.4。

例:一个不携带数据的 TCP 确认报文段,IP 数据报总长 B。,需要填充 字节,帧长 B。IP 首部里的总长度字段仍是 40:填充字节属于以太网帧,不属于 IP 数据报,接收方的 IP 靠自己首部的总长度字段剥掉填充。所以题目给出一个以太网帧的十六进制内容、问 IP 数据报多长时,要读 IP 首部的总长度,不能拿帧长减 18。

边界

以太网在交换方式上属于分组交换。 这是站在 1.1.4 交换方式的角度看的:以太网以帧为单位存储、转发,帧的数据部分有 1500 字节的上限。

错题复盘:以太网在交换方式上属于分组交换

王道 3.6.5 第 5 题:就交换技术而言,以太网采用的是(A. 分组交换技术 B. 电路交换技术 C. 报文交换技术 D. 混合交换技术)。答案 A。

源端用户的较长报文需要分为若干数据块,这些数据块在各层还要加上相应的控制信息,在网络层叫分组,在数据链路层就是以太网的帧。帧的数据部分有固定的最大长度,这正是分组交换区别于报文交换的特征。

“最大段长”是无中继时一段介质的长度,不是整个网络的跨度。同轴电缆有粗缆 500m 和细缆 185m 两种,题目问”不能超过”时取上限。

错题复盘:802.3 同轴电缆无中继最大长度取粗缆的 500m

王道 3.6.5 第 14 题:IEEE 802.3 规定,若采用同轴电缆作为传输介质,在无中继的情况下,介质的最大长度不能超过(A. 500m B. 200m C. 100m D. 50m)。答案 A。

10BASE5 粗缆每段最长 500m,10BASE2 细缆每段最长 185m,两者都是同轴电缆,“不能超过”问的是上限。B 的 200m 来自把 10BASE2 的”2”直读成 200m,而这个”2”只是 185m 的近似。

光纤以太网和交换式以太网都不跑 CSMA/CD。 CSMA/CD 只在共享信道 + 半双工时才有意义。集线器连接的以太网一定工作在半双工;交换机连接的以太网半双工、全双工都可以;而一根光纤线内部至少有两条光纤,收发各用一条,天然全双工。

错题复盘:光纤以太网是全双工的,不使用 CSMA/CD

王道 3.6.5 第 9 题:关于用光纤连接的以太网和用双绞线连接的以太网,错误的是(A. 用集线器连接的双绞线以太网一定工作在半双工状态 B. 用交换机连接的双绞线以太网可以工作在全双工状态 C. 光纤以太网主要用于支持点对点通信,目的是扩大以太网的覆盖范围 D. 光纤以太网也可以选用 CSMA/CD 协议)。答案 D。

光纤主要用来扩大以太网的覆盖范围,用于中继设备之间的点对点传输,通常不直接连接终端,所以 C 正确。一根光纤线内部至少包含两条光纤,实现全双工通信,没有冲突可检测,因此光纤以太网不采用 CSMA/CD。

判据只有一条:有没有共享的半双工信道。有,才可能用 CSMA/CD;没有,就一定不用。

曼彻斯特编码只属于 10Mb/s 以太网。 表中四种 10Mb/s 标准都用曼彻斯特编码;高速以太网改用其他编码方式(教材未展开),所以”吉比特以太网采用曼彻斯特编码”是错的。

错题复盘:吉比特以太网既用光纤也用双绞线,也不用曼彻斯特编码

王道 3.6.5 第 18 题:关于吉比特以太网,错误的是(A. 支持流量控制机制 B. 采用曼彻斯特编码,利用光纤进行数据传输 C. 数据的传输时间主要受线路传输延迟的制约 D. 同时支持全双工模式和半双工模式)。答案 B。

王道的解析抓的是介质:吉比特以太网的物理层有 IEEE 802.3z 和 802.3ab 两个标准,前者用光纤通道,后者用 4 对 5 类 UTP,并非只用光纤。另外,曼彻斯特编码只出现在 10Mb/s 那张表里。B 同时错了两处。

以太网的 64 字节最短帧与 PPP 的 0 字节下限是一组对照。 PPP 用于点对点链路,不存在冲突,也就没有最短帧长的限制,信息段为 0~1500 字节,见 3.7.2。

口径差异:今天的以太网与教材模型

教材口径:以共享信道、半双工、CSMA/CD 为基本模型;高速以太网”半双工时仍使用 CSMA/CD”。

工程口径:今天的以太网几乎全是交换机逐端口直连、全双工,CSMA/CD 实际上不再运行。用 Wireshark 抓以太网帧时通常看不到前导码和 FCS,它们由网卡硬件处理后丢弃。类型字段的常见值是 0x0800(IPv4)、0x0806(ARP)、0x86DD(IPv6)。

考试一律按教材口径作答。

对照速查

数字含义
6B(48 位)MAC 地址长度;高 24 位厂商代码、低 24 位序列号
8B前导码 = 7B 前同步码 + 1B 帧开始定界符,不计入帧长
18B首部 14B + 尾部 4B
64B最短帧长(来自 CSMA/CD)
46B最短数据字段
1500B最长数据字段 = 以太网 MTU
1518B最长帧长
500 / 185 / 100 / 2000m10BASE5 / 10BASE2 / 10BASE-T / 10BASE-F 最大段长
说法对错
以太网 MAC 协议提供无连接、不可靠的服务✅(2012)
以太网帧需要帧结束定界符❌
FCS 的检验范围包括前导码❌
100BASE-T 在全双工方式下使用 CSMA/CD❌
10 吉比特以太网支持半双工❌
高速以太网改变了 MAC 帧格式❌
路由器连接两个网络只需一个 MAC 地址❌(两个适配器、两个 MAC 地址)

考点

  • 以太网两项简化:无连接、不可靠(2012);曼彻斯特编码
  • MAC 地址 6 字节(2013);路由器每个接口一个 MAC 地址
  • 帧格式:目的 6 + 源 6 + 类型 2 + 数据 46~1500 + FCS 4(2010、2011、2018)
  • 46 = 64 − 18,不足 46 字节要填充(2012);超过 1500 字节由 IP 分片
  • 不需要帧结束定界符(帧间隙 + 违规编码思想)
  • 高速以太网:帧格式不变;仅半双工时用 CSMA/CD;10G 只有全双工;100BASE-T 用双绞线(2019)

链接