以太网随笔记录
一、OSI七层模型
MAC属于七层模型中的数据链路层(DATA LINK)
二、MAC层 包格式
前导码、起始帧定界符 (SFD)、MAC 帧的目的地址和源地址、长度/类型字段(用于指示包含 MAC 客户端数据的后续字段的长度或协议类型)、包含填充(如果需要)的字段,以及包含循环冗余校验值的帧校验序列 (FCS) 字段,用于检测接收到的 MAC 帧中的错误。如果需要,添加扩展字段(仅适用于 1000 Mb/s 半双工操作)。在这些字段中,除了 MAC 客户端数据、填充和扩展字段外,所有字段都是固定大小的,这些字段可能包含由 MAC 的特定实现确定的最小值和最大值之间的整数个八位字节。
import:OCTER就是8bit,如 7 OCTERS就是表明PREAMBLE有8个字节的数据
(1)Preamble
Preamble 字段是一个 7 字节的字段,用于允许 PLS(PHYSICAL LAYER SIGNALING) 电路与接收到的数据包的定时达到其稳态同步
在一段数据开始之前,会首先发送Preamble,即7个0x55
In a LAN implementation, most of the Physical Layer components are allowed to provide valid output some
number of bit times after being presented valid input signals. Thus it is necessary for a preamble to be sent
before the start of data, to allow the PLS circuitry to reach its steady state. Upon request by
TransmitLinkMgmt to transmit the first bit of a new frame, PhysicalSignalEncap shall first transmit the
preamble, a bit sequence used for physical medium stabilization and synchronization, followed by the Start
Frame Delimiter. If, while transmitting the preamble or Start Frame Delimiter, the collision detect variable
becomes true, any remaining preamble and Start Frame Delimiter bits shall be sent. The preamble pattern is:
10101010 10101010 10101010 10101010 10101010 10101010 10101010
The bits are transmitted in order, from left to right. The nature of the pattern is such that, for Manchester
encoding, it appears as a periodic waveform on the medium that enables bit synchronization. It should be
noted that the preamble ends with a “0.”(Information comes from 4.2.5 Preamble generation)
(2)Start Frame Delimiter (SFD)
SFD字段是序列 10101011(D5)。它紧跟在前导码(Preamble)之后,MAC帧在SFD之后开始。
(3)Address
地址域包含目的地址和源地址
a) 每个地址字段的长度应为 48 位。
b) 第一位 (LSB) 是目的地址 地址类型指定位,目的地址标识为单地址或组地址。如果该位为 0,则表明该地址字段包含一个单地址。如果该位为 1,则表明地址字段包含一个组地址 。在 源地址 字段中,第一位保留并设置为 0。
c) 第二位应用于区分本地或全局管理的地址。对于全局管理地址,该位设置为 0。如果要在本地分配地址,则该位应设置为 1。
import:对于广播地址,该位也为 1
d) 每个地址字段的每个八位字节应首先传输最低有效位。
MAC子层地址有两种类型:
a) Individual Address
b) Group Address
与给定网络上的一个或多个站相关联的多目的地址。Group Address有两种:
- Multicast-Group Address(多播/组播 地址)
多播是一种点对多点的通信方式,其中一个或多个发送方同时发送数据包给一个特定的多播组地址,而接收方是加入该多播组的一组设备。多播组地址是一个特殊的IP地址范围,用于标识多播组。只有加入了相应多播组的设备才能接收到发送到该组的数据包。多播组的成员可以是不同的设备,它们可以位于不同的网络中。 - Broadcast Address(广播地址)
广播是一种点对全网的通信方式,其中一个发送方同时向网络中的所有设备发送数据包,以广播的方式进行传输。这意味着网络中的每个设备都能接收到广播消息,不论其是否有意接收该消息。
import:源地址字段不由MAC子层解释。MAC子层工作在数据链路层,主要负责在局域网内传输数据帧。MAC子层使用目标地址字段来确定接收方的物理地址,以便正确地将数据帧传递给目标设备。但对于源地址字段,MAC子层并不需要解释或处理它,因为它只是用于标识发送方的物理地址。源地址字段的解释和处理通常在网络层或更高层次进行。例如,在IP协议中,源地址用于标识发送方的IP地址,这个工作是在网络层进行的。源地址字段的解释和处理取决于所使用的网络协议和协议栈的层次结构。
(4)Length/Type
a) 如果该字段的值小于或等于1500(05DC十六进制),则Length/Type字段表示基本帧的后续MAC客户端数据字段中包含的Mac客户端数据字节个数(Length interpretation )
b) 如果该字段的值大于或等于1536(0600 十六进制),则 Length/Type 字段表示以太网类型
不管Length/Type是如何解释的,如果Mac客户端数据字段长度小于协议要求的最小长度,就会有填充字段加到Length/Type字段和FCS字段之间
(5)MAC Client Data
Mac客户端数据字段,有三种长度的数据帧类型
a) 1500 decimal—basic frames
最常见的是基础帧,最大长度为 1518字节
b) 1504 decimal—Q-tagged frames
用于特点场景的Q-tagged frames ,最大长度为 1522字节。IEEE 802.1Q VLAN协议用于实现虚拟局域网(VLAN)功能。它在以太网帧头部引入了一个额外的标记字段,称为VLAN标签或VLAN标识符。这个标记字段用于将以太网帧划分到不同的虚拟局域网中。因此,使用IEEE 802.1Q VLAN协议的帧类型称为Q-标记帧(Q-tagged Frames)。
c) 1982 decimal—envelope frames
Envelope Frames 最大长度为 2000(1518 + 482)字节,目的是允许包含高层封装协议所需的额外前缀和后缀。封装协议可以使用多达482个字节的空间。例如 IEEE 802.1 工作组(例如 Provider Bridges 和 MAC Security)定义的协议,ITU- T 或 IETF(例如 MPLS)
import:上述最大长度包括了除Preamble和SFD的其他字段
import:所有的Q-tagged frames都是envelope frames,但是envelope frames不一定是Q-tagged frames
(6)Pad
填充字段,如果小于MAC数据字段最小长度,就要填充,使其满足MAC数据字段最小长度
(7)Frame Check Sequence (FCS)
CRC32校验和,从起始帧之后开始计算
G(x) = x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x + 1
(8)Extension
扩展字段,不包含在FCS中,通常情况下,长度为0
三、传输顺序
除FCS以外,MAC帧,每字节首先传输最低有效位
四、无效的MAC帧
a) 帧长度与Length字段不一致
b) 不是8bit对齐的
c) CRC校验错误