跳转到内容

以太网帧格式:修订间差异

维基百科,自由的百科全书
删除的内容 添加的内容
无编辑摘要
 
(未显示20个用户的27个中间版本)
第1行: 第1行:
{{expand language|1=en|page=|time=2019-08-27T20:15:11+00:00}}
在[[以太网]]链路上的数据包称作'''以太帧'''。以太帧起始部分由前导码和帧开始符组成。后面紧跟着一个以太网报头,以[[MAC地址]]说明目的地址和源地址。帧的中部是该帧负载的包含其他协议报头的数据包(例如[[IP协议]])。以太帧由一个32位[[冗余校验|冗余校验码]]结尾。它用于检验数据传输是否出现损坏。
{{refimprove|time=2019-08-27T20:15:11+00:00}}
{{noteTA
|G1=IT
}}
在[[以太网]]链路上的数据包称作'''以太帧'''。以太帧起始部分由前导码和帧开始符组成。后面紧跟着一个以太网报头,以[[MAC地址]]说明目的地址和源地址。帧的中部是该帧负载的包含其他协议报头的数据包例如[[IP协议]]。以太帧由一个32位[[冗余校验|冗余校验码]]结尾。它用于检验数据传输是否出现损坏。


==结构==
==结构==
来自线路的二进制数据包称作一个帧。从物理线路上看到的帧,除其他信息外,还可看到前导码和帧开始符。任何物理硬件都会需要这些信息。<ref group=note>前导码和帧开始符无法在[[嗅探|包嗅探]]程序中显示。这些信息会在OSI第1层被[[网卡]]处理掉,而不会传入嗅探程序采集数据的OSI第2层。也存在OSI物理层的嗅探工具以显示这些前导码和帧开始符,但这些设备大多昂贵,多用于检测硬件相关的故障。</ref>
来自线路的二进制数据包称作一个帧。从物理线路上看到的帧,除其他信息外,还可看到前导码和帧开始符。任何物理硬件都会需要这些信息。<ref group=note>前导码和帧开始符无法在[[嗅探|包嗅探]]程序中显示。这些信息会在OSI第1层被[[网卡]]处理掉,而不会传入嗅探程序采集数据的OSI第2层。也存在OSI物理层的嗅探工具以显示这些前导码和帧开始符,但这些设备大多昂贵,多用于检测硬件相关的故障。</ref>


下面的表格显示了在以1500个[[八位元组]]为[[最大传输单元|MTU]]传输(有些[[吉比特以太网]]甚至更高速以太网支持更大的帧,称作[[:en:jumbo frame|巨型帧]])时的完整帧格式。<ref group=note>前导码和帧开始符的位模式以位串的方式给出,最左的比特最先传输(''而非''以字节为单位,以太网传输最优先的位)。这个脚注与IEEE 802.3标准吻合。</ref> 一个八位元组是八个位组成的数据(也就是现代计算机的一个字节)
下面的表格显示了在以1500个[[八位元组]]为[[最大传输单元|MTU]]传输有些[[吉比特以太网]]甚至更高速以太网支持更大的帧,称作[[巨型帧]]时的完整帧格式。<ref group=note>前导码和帧开始符的位模式以位串的方式给出,最左的比特最先传输(''而非''以字节为单位,以太网传输最优先的位)。这个脚注与IEEE 802.3标准吻合。</ref> 一个八位元组是八个位组成的数据也就是现代计算机的一个字节


{| class="wikitable" style="text-align: center;"
{| class="wikitable" style="text-align: center;"
|+ 802.3 以太网帧结构
|+ 802.3 以太网帧结构
|-
|-
! 前导码 !! 帧开始符 !! MAC 目标地址 !! MAC 源地址 !! [[:en:802.1Q|802.1Q]] 标签 (可选) !! [[:en:Ethertype|以太类型]]或长度 !! 负载 !! [[冗余校验]] !! [[:en:Interframe gap|帧间距]]
! 前导码 !! 帧开始符 !! MAC 目标地址 !! MAC 源地址 !! [[:IEEE_802.1Q|802.1Q]] 标签 可选 !! [[Ethertype|以太类型]] !! 负载 !! [[冗余校验]] !! {{tsl|en|Interframe gap|帧间距}}
|-
|-
| 10101010 7个octet || 10101011 1个octet || 6 octets || 6 octets || (4 octets) || 2 octets || {{nowrap|46–1500 octets}} || {{nowrap|4 octets}} || 12 octets
| 10101010 7个octet || 10101011 1个octet || 6 octets || 6 octets || (4 octets) || 2 octets || {{nowrap|46–1500 octets}} || {{nowrap|4 octets}} || 12 octets
|-
|-
| colspan="2" | || colspan="6" style="background:#fdd;"| {{nowrap|64–1522 octets}} ||
| colspan="2" | || colspan="6" style="background:#fdd;"| {{nowrap|64–1522 octets}} ||
第22行: 第27行:
===前导码和帧开始符===
===前导码和帧开始符===
{{see also|Syncword}}
{{see also|Syncword}}
一个帧以7个字节的前导码和1个字节的帧开始符作为帧的开始。快速以太网之前,在线路上帧的这部分的位模式是10101010 10101010 10101010 10101010 10101010 10101010 10101010 10101011。由于在传输一个字节时最不重要的位最先传输(即低位最先传输),因此其相应的16进制表示为0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAB。<br />
一个帧以7个字节的前导码和1个字节的帧开始符作为帧的开始。快速以太网之前,在线路上帧的这部分的位模式是10101010 10101010 10101010 10101010 10101010 10101010 10101010 10101011。由于在传输一个字节时最低位最先传输(LSB),因此其相应的16进制表示为0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xD5。<br />


10/100M 网卡([[:en:Media Independent Interface|MII]] [[PHY]])一次传输4位(一个[[:en:nibble|半字]])。因此前导符会成为7组0x5+0x5,而帧开始符成为0x5+0xD。1000M网卡([[:en:Gigabit Media Independent Interface|GMII]])一次传输8位,而10Gbit/s([[:en:nibble|XGMII]]) PHY芯片一次传输32位。<!-- http://en.wikipedia.org/zhwiki/w/index.php?title=Ethernet&diff=182848085&oldid=182847778 --> 注意当以octet描述时,先传输7个01010101然后传输11010101。由于8位数据的低4位先发送,所以先发送帧开始符的0101,之后发送1101。
10/100M 网卡[[介质无关接口]] [[PHY]]一次传输4位一个{{tsl|en|nibble|半字節}})。因此前导符会成为7组0x5+0x5,而帧开始符成为0x5+0xD。1000M网卡({{tsl|en|Gigabit Media Independent Interface|GMII}})一次传输8位,而10Gbit/s({{tsl|en|nibble|XGMII}}) PHY芯片一次传输32位。<!-- http://en.wikipedia.org/zhwiki/w/index.php?title=Ethernet&diff=182848085&oldid=182847778 --> 注意当以octet描述时,先传输7个01010101然后传输11010101。由于8位数据的低4位先发送,所以先发送帧开始符的0101,之后发送1101。


===报头===
===报头===
第42行: 第47行:
*以太网第二版<ref group=note>第一版以太帧在早期以太网原型中使用,并使用8位MAC地址,从未在商业中使用</ref> 或者称之为Ethernet II 帧,DIX帧,是最常见的帧类型。并通常直接被IP协议使用。
*以太网第二版<ref group=note>第一版以太帧在早期以太网原型中使用,并使用8位MAC地址,从未在商业中使用</ref> 或者称之为Ethernet II 帧,DIX帧,是最常见的帧类型。并通常直接被IP协议使用。
*[[Novell]]的非标准[[IEEE 802.3]]帧变种。
*[[Novell]]的非标准[[IEEE 802.3]]帧变种。
*[[IEEE 802.2]] [[逻辑链路控制]] (LLC)
*[[IEEE 802.2]] [[逻辑链路控制]] (LLC)
*[[:en:Subnetwork Access Protocol|子网接入协议]](SNAP)
*[[子网接入协议]](SNAP)


所有四种以太帧类型都可包含一个IEEE 802.1Q选项来确定它属于哪个[[虚拟局域网|VLAN]]以及他的[[IEEE 802.1p]]优先级([[QoS]])。这个封装由[[IEEE 802.3ac]]定义并将帧大小从4字节扩充到1522字节(注:不包含7个前导字节和1个字节的帧开始符以及12个帧间距字节)
所有四种以太帧类型都可包含一个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]])和[[虚拟局域网|VLAN]] ID)。Q标签后面就是通常的帧内容。
IEEE 802.1Q标签,如果出现,需要放在源地址字段和以太类型或长度字段的中间。这个标签的前两个字节是标签协议标识符(TPID)值0x8100。这与没有标签帧的以太类型/长度字段的位置相同,所以以太类型0x8100就表示包含标签的帧,而实际的以太类型/长度字段则放在Q-标签的后面。TPID后面是两个字节的标签控制信息(TCI)(IEEE 802.1p 优先级[[QoS]]和[[虚拟局域网|VLAN]] ID)。Q标签后面就是通常的帧内容。


===Ethernet II===
===Ethernet II===
'''以太 II 帧''' (也称作'''DIX以太网''',是以这个设计的主要成员,[[迪吉多|DEC]],[[英特尔|Intel]]和[[施乐|Xerox]]的名字命名的。<ref>{{cite book |title=Drew Heywood's Windows 2000 Network Services |author=Drew Heywood |author2=Zubair Ahmad |publisher=Sams |year=2001 |isbn=0672317419 |page=53}}</ref>),把紧接在目标和源MAC地址后面的这个两字节定义为以太网帧数据类型字段。
'''以太 II 帧''' 也称作'''DIX以太网''',是以这个设计的主要成员,[[迪吉多|DEC]],[[英特尔|Intel]]和[[施乐|Xerox]]的名字命名的。<ref>{{cite book |title=Drew Heywood's Windows 2000 Network Services |author=Drew Heywood |author2=Zubair Ahmad |publisher=Sams |year=2001 |isbn=0672317419 |page=53}}</ref>,把紧接在目标和源MAC地址后面的这个两字节定义为以太网帧数据类型字段。


例如,一个0x0800的以太类型说明这个帧包含的是[[IPv4]]数据报。同样的,一个0x0806的以太类型说明这个帧是一个[[地址解析协议|ARP]]帧,0x8100说明这是一个IEEE 802.1Q帧,而0x86DD说明这是一个[[IPv6]]帧。
例如,一个0x0800的以太类型说明这个帧包含的是[[IPv4]]数据报。同样的,一个0x0806的以太类型说明这个帧是一个[[地址解析协议|ARP]]帧,0x8100说明这是一个IEEE 802.1Q帧,而0x86DD说明这是一个[[IPv6]]帧。


当这个工业界的标准通过正式的[[IEEE]]标准化过程后,在802.3标准中以太类型字段变成了一个(数据)长度字段。(最初的以太包通过包括他们的帧来确定它们的长度,而不是以一个明确的数值。)但是包的接收层仍需知道如何解析包,因此标准要求将IEEE802.2头跟在长度字段后面,定义包的类型。多年之后,802.3x-1997标准,一个802.3标准的后继版本,正式允许两种类型的封包同时存在。实际上,两种封包都被广泛使用,而最初的以太封包在以太局域网中被广泛应用,因为他的简便和低开销。
当这个工业界的标准通过正式的[[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(不包含)的数值未定义。<ref>IEEE Std 802.3-2005, 3.2.6</ref>
为了允许一些使用以太II版本的数据报和一些使用802.3封装的最初版本的数据包能够在同一个以太网段使用,以太类型值必须大于等于1536(0x0600)。这个值比802.3封包的最大长度1500byte (0x05DC)要更大。因此如果这个字段的值大于等于1536,则这个帧是以太II帧,而那个字段是类型字段。否则小于1500而大于46字节),他是一个IEEE 802.3帧,而那个字段是长度字段。1500~1536(不包含的数值未定义。<ref>IEEE Std 802.3-2005, 3.2.6</ref>


===802.2 LLC===
===802.2 LLC===
第63行: 第68行:
802.2以太网变种没有在常规网络中普遍使用。只有一些大公司的没有与IP网络融合的Netware设备。以前,很多公司Netware网络支持802.2以太网,以便支持从以太网到IEEE 802.5令牌环网或FDDI网络的透明桥接。当今最流行的封包是以太网版本二,由基于IP协议的网络使用,将其以太类型设置为0x0800用于封装[[IPv4]]或者0x86DD来支持[[IPv6]]。
802.2以太网变种没有在常规网络中普遍使用。只有一些大公司的没有与IP网络融合的Netware设备。以前,很多公司Netware网络支持802.2以太网,以便支持从以太网到IEEE 802.5令牌环网或FDDI网络的透明桥接。当今最流行的封包是以太网版本二,由基于IP协议的网络使用,将其以太类型设置为0x0800用于封装[[IPv4]]或者0x86DD来支持[[IPv6]]。


还有一个[[:en:Internet standard|英特网标准]]来使用LLC/SNAP报头将IPv4封装在IEEE 802.2帧中。<ref>RFC 1042</ref> 这几乎从未在以太网中实现过。(但在[[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网络中被使用)
还有一个[[互联网标准]]来使用LLC/SNAP报头将IPv4封装在IEEE 802.2帧中。<ref>RFC 1042</ref> 这几乎从未在以太网中实现过。但在[[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位字段即可用于长度字段,也可用于类型字段。
通过检查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 封包来实现以太网上的[[:en:AppleTalk|AppleTalk]] V2协议套件("EhterTalk")
[[Mac OS]]使用 802.2/SNAP 封包来实现以太网上的[[AppleTalk]] V2协议套件"EhterTalk"


===Novell raw 802.3===
===Novell raw 802.3===
Novell的"raw"802.3帧格式基于早期IEEE 802.3的工作。Novell以它作为起点来创建他自己的以太网上[[IPX]]协议的的第一个实现。他们没有使用LLC头,而是直接在长度字段后面开始IPX数据包。这不符合IEEE 802.3标准,但由于IPX的前两个字节一直是FF(而在IEEE 802.2 LLC中这种模式虽然理论上是可能的但实际上概率极其微小),实用中这种方式与其他以太实现共同存在。但须注意在一些早期的[[:en:DECnet|DECnet]]可能无法识别之。
Novell的"raw"802.3帧格式基于早期IEEE 802.3的工作。Novell以它作为起点来创建他自己的以太网上[[IPX]]协议的的第一个实现。他们没有使用LLC头,而是直接在长度字段后面开始IPX数据包。这不符合IEEE 802.3标准,但由于IPX的前两个字节一直是FF(而在IEEE 802.2 LLC中这种模式虽然理论上是可能的但实际上概率极其微小),实用中这种方式与其他以太实现共同存在。但须注意在一些早期的{{tsl|en|DECnet|}}可能无法识别之。


直到90年代中期,[[:en:Novell NetWare|Novell NetWare]]默认使用这个帧类型,而由于Netware曾如此流行,而那时IP还不是那么流行,在过去的一些时候,大多数的以太网上都运载着负载IPX的"raw" 802.3封包。直到Netware 4.10,当使用IPX时,Netware才默认使用IEEE 802.2和LLC(Nerware 帧类型Ethernet_802.2)
直到90年代中期,[[Novell NetWare]]默认使用这个帧类型,而由于Netware曾如此流行,而那时IP还不是那么流行,在过去的一些时候,大多数的以太网上都运载着负载IPX的"raw" 802.3封包。直到Netware 4.10,当使用IPX时,Netware才默认使用IEEE 802.2和LLC(Nerware 帧类型Ethernet_802.2)


==效率==
==效率==
第80行: 第85行:
<math>\text{Efficiency} = \frac{\text{Payload size}}{\text{Frame size}}</math>
<math>\text{Efficiency} = \frac{\text{Payload size}}{\text{Frame size}}</math>


当达到允许的最大负载值时可达到最高效率,对于无标签的以太网封包是<math>\frac{1500}{1538} = 97.53%</math>,而使用802.1Q VLAN标签时是<math>\frac{1500}{1542} = 97.28%</math>。
当达到允许的最大负载值时可达到最高效率,对于无标签的以太网封包是<math>\frac{1500}{1538} = 97.53\%</math>,而使用802.1Q VLAN标签时是<math>\frac{1500}{1542} = 97.28\%</math>。


由效率中可计算比特率:
由效率中可计算比特率:
第90行: 第95行:


==矮帧==<!--[[矮帧]] redirects here-->
==矮帧==<!--[[矮帧]] redirects here-->
矮帧是一个尺寸不及IEEE 802.3<!--或者IEEE 802.2?-->定义的最小长度64字节的以太网帧。可能的原因是以太网碰撞,数据不足,网卡错误或软件错误。<ref>{{cite web|title=Glossary of Terms - R (Zarlink Semiconductor)|url=http://www.zarlink.com/zarlink/hs/7805.htm}} 071227 products.zarlink.com{{Dead link|date=October 2010}}</ref>
矮帧是一个尺寸不及IEEE 802.3<!--或者IEEE 802.2?-->定义的最小长度64字节的以太网帧。可能的原因是以太网碰撞,数据不足,网卡错误或软件错误。<ref>{{cite web |title=Glossary of Terms - R (Zarlink Semiconductor) |url=http://www.zarlink.com/zarlink/hs/7805.htm |deadurl=yes |archiveurl=https://web.archive.org/web/20091026153948/http://www.zarlink.com/zarlink/hs/7805.htm |archivedate=2009-10-26 |accessdate=2011-03-01 }} 071227 products.zarlink.com</ref>


==Notes==
==注释==
<references group=note/>
<references group=note/>


==参考资料==
==参考资料==
<references/>
<references/>

{{Use dmy dates|date=October 2010}}
{{Ethernet}}


{{DEFAULTSORT:Ethernet Frame}}
{{DEFAULTSORT:Ethernet Frame}}
[[Category:乙太網路]]
[[Category:乙太網路]]

[[en:Encapsulation (networking)|封装]]
[[en:upper layer protocol|上层协议]]
[[id:Ethernet II]]
[[pt:DIX]]
[[sv:DIX]]

2022年8月26日 (五) 04:35的最新版本

以太网链路上的数据包称作以太帧。以太帧起始部分由前导码和帧开始符组成。后面紧跟着一个以太网报头,以MAC地址说明目的地址和源地址。帧的中部是该帧负载的包含其他协议报头的数据包(例如IP协议)。以太帧由一个32位冗余校验码结尾。它用于检验数据传输是否出现损坏。

结构

[编辑]

来自线路的二进制数据包称作一个帧。从物理线路上看到的帧,除其他信息外,还可看到前导码和帧开始符。任何物理硬件都会需要这些信息。[note 1]

下面的表格显示了在以1500个八位元组MTU传输(有些吉比特以太网甚至更高速以太网支持更大的帧,称作巨型帧)时的完整帧格式。[note 2] 一个八位元组是八个位组成的数据(也就是现代计算机的一个字节)。

802.3 以太网帧结构
前导码 帧开始符 MAC 目标地址 MAC 源地址 802.1Q 标签 (可选) 以太类型 负载 冗余校验 帧间距英语Interframe gap
10101010 7个octet 10101011 1个octet 6 octets 6 octets (4 octets) 2 octets 46–1500 octets 4 octets 12 octets
64–1522 octets
72–1530 octets
84–1542 octets

前导码和帧开始符

[编辑]

一个帧以7个字节的前导码和1个字节的帧开始符作为帧的开始。快速以太网之前,在线路上帧的这部分的位模式是10101010 10101010 10101010 10101010 10101010 10101010 10101010 10101011。由于在传输一个字节时最低位最先传输(LSB),因此其相应的16进制表示为0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xD5。

10/100M 网卡(介质无关接口 PHY)一次传输4位(一个半字節英语nibble)。因此前导符会成为7组0x5+0x5,而帧开始符成为0x5+0xD。1000M网卡(GMII英语Gigabit Media Independent Interface)一次传输8位,而10Gbit/s(XGMII英语nibble) PHY芯片一次传输32位。 注意当以octet描述时,先传输7个01010101然后传输11010101。由于8位数据的低4位先发送,所以先发送帧开始符的0101,之后发送1101。

报头

[编辑]

报头包含源地址和目标地址的MAC地址,以太类型字段和可选的用于说明VLAN成员关系和传输优先级的IEEE 802.1Q VLAN 标签。

帧校验码

[编辑]

帧校验码是一个32位循环冗余校验码,以便验证帧数据是否被损坏。

帧间距

[编辑]

当一个帧发送出去之后,发送方在下次发送帧之前,需要再发送至少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)和VLAN ID)。Q标签后面就是通常的帧内容。

Ethernet II

[编辑]

以太 II 帧 (也称作DIX以太网,是以这个设计的主要成员,DEC,IntelXerox的名字命名的。[1]),把紧接在目标和源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(不包含)的数值未定义。[2]

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帧中。[3] 这几乎从未在以太网中实现过。(但在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 V2协议套件("EhterTalk")。

Novell raw 802.3

[编辑]

Novell的"raw"802.3帧格式基于早期IEEE 802.3的工作。Novell以它作为起点来创建他自己的以太网上IPX协议的的第一个实现。他们没有使用LLC头,而是直接在长度字段后面开始IPX数据包。这不符合IEEE 802.3标准,但由于IPX的前两个字节一直是FF(而在IEEE 802.2 LLC中这种模式虽然理论上是可能的但实际上概率极其微小),实用中这种方式与其他以太实现共同存在。但须注意在一些早期的DECnet英语DECnet可能无法识别之。

直到90年代中期,Novell NetWare默认使用这个帧类型,而由于Netware曾如此流行,而那时IP还不是那么流行,在过去的一些时候,大多数的以太网上都运载着负载IPX的"raw" 802.3封包。直到Netware 4.10,当使用IPX时,Netware才默认使用IEEE 802.2和LLC(Nerware 帧类型Ethernet_802.2)。

效率

[编辑]

我们可以计算以太网的效率和比特率

当达到允许的最大负载值时可达到最高效率,对于无标签的以太网封包是,而使用802.1Q VLAN标签时是

由效率中可计算比特率:

不带802.1Q标签的100BASE-TX以太网的最大比特率是97.53 Mbit/s. 注:不带标签的最大帧尺寸=1518 + 20 (7-byte 前导符,1-byte 帧开始符, 12-byte 帧间距)= 1538。

矮帧

[编辑]

矮帧是一个尺寸不及IEEE 802.3定义的最小长度64字节的以太网帧。可能的原因是以太网碰撞,数据不足,网卡错误或软件错误。[4]

注释

[编辑]
  1. ^ 前导码和帧开始符无法在包嗅探程序中显示。这些信息会在OSI第1层被网卡处理掉,而不会传入嗅探程序采集数据的OSI第2层。也存在OSI物理层的嗅探工具以显示这些前导码和帧开始符,但这些设备大多昂贵,多用于检测硬件相关的故障。
  2. ^ 前导码和帧开始符的位模式以位串的方式给出,最左的比特最先传输(而非以字节为单位,以太网传输最优先的位)。这个脚注与IEEE 802.3标准吻合。
  3. ^ 第一版以太帧在早期以太网原型中使用,并使用8位MAC地址,从未在商业中使用

参考资料

[编辑]
  1. ^ Drew Heywood; Zubair Ahmad. Drew Heywood's Windows 2000 Network Services. Sams. 2001: 53. ISBN 0672317419. 
  2. ^ IEEE Std 802.3-2005, 3.2.6
  3. ^ RFC 1042
  4. ^ Glossary of Terms - R (Zarlink Semiconductor). [2011-03-01]. (原始内容存档于2009-10-26).  071227 products.zarlink.com