在以太网链路上的数据包称作以太帧。以太帧起始部分由前导码和帧开始符组成。后面紧跟着一个以太网报头,以
MAC地址说明目的地址和源地址。帧的中部是该帧负载的包含其他协议报头的数据包(例如
IP协议)。以太帧由一个32位冗余校验码结尾。它用于检验数据传输是否出现损坏。
简介
在
以太网链路上的数据包称作以太帧。以太帧起始部分由前导码和帧开始符组成。后面紧跟着一个以太网报头,以
MAC地址说明目的地址和源地址。帧的中部是该帧负载的包含其他协议报头的数据包(例如
IP协议)。以太帧由一个32位冗余校验码结尾。它用于检验数据传输是否出现损坏。
结构
来自线路的二进制数据包称作一个帧。从物理线路上看到的帧,除其他信息外,还可看到前导码和帧开始符。任何物理硬件都会需要这些信息。
下面的表格显示了在以1500个
八比特组为
MTU传输(有些
吉比特以太网甚至更
高速以太网支持更大的帧,称作
巨型帧)时的完整帧格式。一个八比特组是八个位组成的数据(也就是现代计算机的一个字节)。
前导码和帧开始符
参见:Syncword
一个帧以7个字节的前导码和1个字节的帧开始符作为帧的开始。
快速以太网之前,在线路上帧的这部分的位模式是10101010 10101010 10101010 10101010 10101010 10101010 10101010 10101011。由于在传输一个字节时最低位最先传输(LSB),因此其相应的16进制表示为0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xD5。
10/100M 网卡(MII
PHY)一次传输4位(一个
半字)。因此前导符会成为7组0x5+0x5,而帧开始符成为0x5+0xD。1000M网卡(
GMII)一次传输8位,而10Gbit/s(XGMII) PHY芯片一次传输32位。 注意当以octet描述时,先传输7个01010101然后传输11010101。由于8位数据的低4位先发送,所以先发送帧开始符的0101,之后发送1101。
报头
报头包含源地址和目标地址的MAC地址,以太类型字段和可选的用于说明VLAN成员关系和传输优先级的
IEEE 802.1QVLAN 标签。
帧校验码
帧校验码是一个32位
循环冗余校验码,以便验证帧数据是否被损坏。
帧间距
主条目:en:Interframe gap
当一个帧发送出去之后,发送方在下次发送帧之前,需要再发送至少12个octet的空闲线路状态码。
以太帧类型
以太帧有很多种类型。不同类型的帧具有不同的格式和MTU值。但在同种物理媒体上都可同时存在。
所有四种以太帧类型都可包含一个IEEE 802.1Q选项来确定它属于哪个
VLAN以及他的
IEEE 802.1p优先级(
QoS)。这个封装由IEEE 802.3ac定义并将帧大小从64字节扩充到1522字节(注:不包含7个前导字节和1个字节的帧开始符以及12个帧间距字节)。
IEEE 802.1Q标签,如果出现,需要放在源地址字段和以太类型或长度字段的中间。这个标签的前两个字节是标签协议标识符(TPID)值0x8100。这与没有标签帧的以太类型/长度字段的位置相同,所以以太类型0x8100就表示包含标签的帧,而实际的以太类型/长度字段则放在Q-标签的后面。TPID后面是两个字节的标签控制信息(TCI)。(IEEE 802.1p 优先级(
QoS)和
VLANID)。Q标签后面就是通常的帧内容。
Ethernet II
以太 II 帧(也称作DIX以太网,是以这个设计的主要成员,DEC,
Intel和
Xerox的名字命名的。),把紧接在目标和源MAC地址后面的这个两字节定义为以太网帧数据类型字段。
例如,一个0x0800的以太类型说明这个帧包含的是
IPv4数据报。同样的,一个0x0806的以太类型说明这个帧是一个
ARP帧,0x8100说明这是一个IEEE 802.1Q帧,而0x86DD说明这是一个
IPv6帧。
当这个工业界的标准通过正式的
IEEE标准化过程后,在802.3标准中以太类型字段变成了一个(数据)长度字段。(最初的以太包通过包括他们的帧来确定它们的长度,而不是以一个明确的数值。)但是包的接收层仍需知道如何解析包,因此标准要求将IEEE802.2头跟在长度字段后面,定义包的类型。多年之后,802.3x-1997标准,一个802.3标准的后继版本,正式允许两种类型的数据包同时存在。实际上,两种数据包都被广泛使用,而最初的以太数据包在以太局域网中被广泛应用,因为他的简便和低开销。
为了允许一些使用以太II版本的数据报和一些使用802.3封装的最初版本的数据包能够在同一个以太网段使用,以太类型值必须大于等于1536(0x0600)。这个值比802.3数据包的最大长度1500byte (0x05DC)要更大。因此如果这个字段的值大于等于1536,则这个帧是以太II帧,而那个字段是类型字段。否则(小于1500而大于46字节),他是一个IEEE 802.3帧,而那个字段是长度字段。1500~1536(不包含)的数值未定义。
802.2 LLC
一些协议,尤其是为
OSI模型设计的,会直接在802.2 LLC层上操作。802.2 LLC层同时提供数据报和面向连接的网络服务。
802.2以太网变种没有在常规网络中普遍使用。只有一些大公司的没有与IP网络融合的Netware设备。以前,很多公司Netware网络支持802.2以太网,以便支持从以太网到IEEE 802.5令牌环网或
FDDI网络的透明桥接。当今最流行的数据包是以太网版本二,由基于IP协议的网络使用,将其以太类型设置为0x0800用于封装
IPv4或者0x86DD来支持
IPv6。
还有一个英特网标准来使用LLC/SNAP报头将IPv4封装在IEEE 802.2帧中。这几乎从未在以太网中实现过。(但在
FDDI以及
令牌环网,
IEEE 802.11和其他
IEEE 802网络中使用)。如果不使用SNAP,IP传输无法封装在IEEE 802.2 LLC帧中。这是因为
LLC协议中虽然有一种IP协议类型,却没有
ARP。IPv6同样可使用LLC/SNAP在IEEE 802.2以太网上传播,但,如同IPv4,它也绝少被这样使用。(尽管LLC/SNAP的IPv6数据包在IEEE 802网络中被使用)。
子网接入协议
通过检查802.2 LLC头,可以确定他是否后继一个SNAP头。LLC头包含两个附加的8位地址字段,在OSI模型术语中称作服务访问点(SAPs)。当源和目标SAP都设置为0xAA时,就会使用SNAP服务。SNAP头允许以太类型值被任何IEEE 802协议使用,即使支持的是私有协议ID空间。在IEEE 802.3x-1997中,IEEE 以太标准被修改为明确允许紧接着MAC地址的16位字段即可用于长度字段,也可用于类型字段。
Mac OS使用 802.2/SNAP 数据包来实现以太网上的
AppleTalk Novell raw 802.3
矮帧
矮帧是一个尺寸不及IEEE 802.3定义的最小长度64字节的以太网帧。可能的原因是以太网通讯冲突,数据不足,网卡错误或软件错误。