EtherType is a two-octet field in an Ethernet frame. It is used to indicate which protocol is encapsulated in the payload of an Ethernet Frame. The same field is also used to indicate the size of some Ethernet frames. EtherType was first defined by the Ethernet II framing standard, and later adapted for the IEEE 802.3 standard.

Overview

 
An Ethernet frame including the EtherType field. Each lower slot designates an octet; the EtherType is two octets long.

In modern implementations of Ethernet, the field within the Ethernet frame used to describe the EtherType also can be used to represent the size of the payload of the Ethernet Frame. Historically, depending on the type of Ethernet framing that was in use on an Ethernet segment, both interpretations were simultaneously valid, leading to potential ambiguity. Ethernet v2 framing considered these octets to represent EtherType while the original IEEE 802.3 framing considered these octets to represent the size of the payload in bytes.

In order to allow packets using Ethernet v2 framing and packets using the IEEE 802.3 framing to be used on the same Ethernet segment, a unifying standard (IEEE 802.3x-1997) was introduced that required that EtherType values be greater than or equal to 1536 (0x0600). That value was chosen because the maximum length (MTU) of the data field of an Ethernet 802.3 frame is 1500 bytes. Thus, values of 1500 and below for this field indicate that the field is used as the size of the payload of the Ethernet Frame while values of 1536 and above indicate that the field is used to represent EtherType. The interpretation of values 1501–1535, inclusive, is undefined.[1]

Jumbo frames

The size of the payload of non-standard jumbo frames, typically ~9000 Bytes long, falls within the range used by EtherType, creating a conflict. The proposition to resolve this conflict was to substitute the special EtherType 0x8870 when a length would otherwise be used.[2] However, the proposition was not accepted and it is defunct. The chair of IEEE 802.3 at the time, Geoff Thompson, responded to the draft outlining IEEE 802.3's official position and the reasons behind the position.[3] The draft authors also responded to the chair's letter, but no subsequent answer from the IEEE 802.3 has been recorded.[4] Currently, the value used for Ethertype in jumbo frames is not clear. The IEEE Registration Authority lists all the Ethertype values registered, and no reference to jumbo frames is found in the list.[5]

VLAN tagging

This section provides insufficient context for those unfamiliar with the subject. Please help improve the article with a good introductory style. (December 2015) (Learn how and when to remove this template message)

 
Insertion of the 802.1Q VLAN tag (four octets) into an Ethernet-II frame, with a typical VLAN arrangement of a TPID EtherType value of 0x8100. A QinQ arrangement would add another four octets tag containing two octets TPID using various EtherType values. Triple tagging QinQinQ has three four-octet tags besides the original 16-bit EtherType field.

With 802.1Q VLAN tagging and QinQ the sparse 16-bit EtherType is being completely used. The 16-bit EtherType not only tags the payload class, it also serves to help end any VLAN tagging or QinQ stacking. Via look-ahead peeking in streams, the 16-bit EtherType can help to confirm or package a QinQ 32+32+16=80-bit header between the 48-bit MAC addresses and the payload. Of those 80-bits only 32-bits are used for dynamic information. For a full 66-bit addressing system, 18 bits are needed beyond the MAC. Thus, additional EtherType values are required and used for Triple Tagging QinQinQ.

Inefficient and conservative use of a 16-bit Tag Protocol Identifier (TPID) on each four octets VLAN tag, followed by the trailing lone 16-bits creates a 48-bit signature that cannot easily be mistaken as part of the payload. Vendor implementations may avoid wasting bandwidth sending those 48-bits in proprietary link compression schemes. The EtherType usually does not contain any CRC or FCS information.

Examples

EtherType values for some notable protocols[6]
EtherType Protocol
0x0800 Internet Protocol version 4 (IPv4)
0x0806 Address Resolution Protocol (ARP)
0x0842 Wake-on-LAN[7]
0x22F3 IETF TRILL Protocol
0x6003 DECnet Phase IV
0x8035 Reverse Address Resolution Protocol
0x809B AppleTalk (Ethertalk)
0x80F3 AppleTalk Address Resolution Protocol (AARP)
0x8100 VLAN-tagged frame (IEEE 802.1Q) and Shortest Path Bridging IEEE 802.1aq[8]
0x8137 IPX
0x8204 QNX Qnet
0x86DD Internet Protocol Version 6 (IPv6)
0x8808 Ethernet flow control
0x8819 CobraNet
0x8847 MPLS unicast
0x8848 MPLS multicast
0x8863 PPPoE Discovery Stage
0x8864 PPPoE Session Stage
0x8870 Jumbo Frames (proposed)[2][3]
0x887B HomePlug 1.0 MME
0x888E EAP over LAN (IEEE 802.1X)
0x8892 PROFINET Protocol
0x889A HyperSCSI (SCSI over Ethernet)
0x88A2 ATA over Ethernet
0x88A4 EtherCAT Protocol
0x88A8 Provider Bridging (IEEE 802.1ad) & Shortest Path Bridging IEEE 802.1aq[9]
0x88AB Ethernet Powerlink[citation needed]
0x88CC Link Layer Discovery Protocol (LLDP)
0x88CD SERCOS III
0x88E1 HomePlug AV MME[citation needed]
0x88E3 Media Redundancy Protocol (IEC62439-2)
0x88E5 MAC security (IEEE 802.1AE)
0x88E7 Provider Backbone Bridges (PBB) (IEEE 802.1ah)
0x88F7 Precision Time Protocol (PTP) over Ethernet (IEEE 1588)
0x88FB Parallel Redundancy Protocol (PRP)
0x8902 IEEE 802.1ag Connectivity Fault Management (CFM) Protocol / ITU-T Recommendation Y.1731 (OAM)
0x8906 Fibre Channel over Ethernet (FCoE)
0x8914 FCoE Initialization Protocol
0x8915 RDMA over Converged Ethernet (RoCE)
0x891D TTEthernet Protocol Control Frame (TTE)
0x892F High-availability Seamless Redundancy (HSR)
0x9000 Ethernet Configuration Testing Protocol[10]

Not all well known de facto uses of EtherTypes are always recorded in the IEEE list of EtherType values.[11] For example, EtherType 0x0806 (used by ARP) appears in the IEEE list only as "Symbolics, Inc., Protocol unavailable."[11] However, the IEEE Registration Authority lists all the accepted EtherTypes, including the 0x0806.[5]

https://en.wikipedia.org/wiki/EtherType

EtherType的更多相关文章

  1. EtherType :以太网类型字段及值

    Ethernet II即DIX 2.0:Xerox与DEC.Intel在1982年制定的以太网标准帧格式.Cisco名称为:ARPA Ethernet II类型以太网帧的最小长度为64字节(6+6+2 ...

  2. Neutron 理解 (6): Neutron 是怎么实现虚拟三层网络的 [How Neutron implements virtual L3 network]

    学习 Neutron 系列文章: (1)Neutron 所实现的虚拟化网络 (2)Neutron OpenvSwitch + VLAN 虚拟网络 (3)Neutron OpenvSwitch + GR ...

  3. Neutron 理解 (7): Neutron 是如何实现负载均衡器虚拟化的 [LBaaS V1 in Juno]

    学习 Neutron 系列文章: (1)Neutron 所实现的虚拟化网络 (2)Neutron OpenvSwitch + VLAN 虚拟网络 (3)Neutron OpenvSwitch + GR ...

  4. Neutron 理解 (8): Neutron 是如何实现虚机防火墙的 [How Neutron Implements Security Group]

    学习 Neutron 系列文章: (1)Neutron 所实现的虚拟化网络 (2)Neutron OpenvSwitch + VLAN 虚拟网络 (3)Neutron OpenvSwitch + GR ...

  5. 理解 OpenStack 高可用(HA)(3):Neutron 分布式虚拟路由(Neutron Distributed Virtual Routing)

    本系列会分析OpenStack 的高可用性(HA)概念和解决方案: (1)OpenStack 高可用方案概述 (2)Neutron L3 Agent HA - VRRP (虚拟路由冗余协议) (3)N ...

  6. 理解 OpenStack 高可用(HA)(2):Neutron L3 Agent HA 之 虚拟路由冗余协议(VRRP)

    本系列会分析OpenStack 的高可用性(HA)概念和解决方案: (1)OpenStack 高可用方案概述 (2)Neutron L3 Agent HA - VRRP (虚拟路由冗余协议) (3)N ...

  7. Netruon 理解(11):使用 NAT 将 Linux network namespace 连接外网

    学习 Neutron 系列文章: (1)Neutron 所实现的虚拟化网络 (2)Neutron OpenvSwitch + VLAN 虚拟网络 (3)Neutron OpenvSwitch + GR ...

  8. Windows下底层数据包发送实战

    1.简介 所谓“底层数据包”指的是在“运行”于数据链路层的数据包,简单的说就是“以太网帧”,而我们常用的Socket只能发送“运行”在传输层的TCP.UDP等包,这些传输层数据包已经能满足绝大部分需求 ...

  9. SpirentTestcenter测试仪的自动化

    SpirentTestcenter,美国思博伦公司的网络测试仪表,覆盖以太网L2~L7层,使用过的仪表中功能最强大的. 1.SpirentTestcenter的自动化测试场景 测试PC上的AT框架-- ...

随机推荐

  1. ZTE and TP-Link RomPager - DoS Exploit

    #!/usr/bin/env python # -*- coding: utf-8 -*- # Exploit Title: ZTE and TP-Link RomPager DoS Exploit ...

  2. 【转】valueof()用法

    valueOf()用来返回对象的原始类型的值. 语法 booleanObject.valueOf() 代码:<script> var a = new String("valueO ...

  3. 在Spring tools suite中使用git 共享项目

    我们都在eclipse 和 myeclipse中使用过cvs 和 svn 版本控制工具进行团队开发,今天我学习了另外一种版本控制工具git,下面我演示如何在Spring tools suite中使用g ...

  4. 查询Sqlserver数据库死锁的一个存储过程

    From:http://www.cnblogs.com/mzhanker/archive/2011/06/04/2072739.html 使用sqlserver作为数据库的应用系统,都避免不了有时候会 ...

  5. React之Froms

    In React, a <textarea> uses a value attribute instead. This way, a form using a <textarea&g ...

  6. 使用ISO文件安装Linux

    一. 准备知识 1. ISO文件 我们普遍使用的ISO文件是指包含着整个CD-ROM(ISO-9660 文件系统)内容的 映象, 是整个碟片从0扇区到最后一个扇区的完整复制,经常被用来在网络上传输 对 ...

  7. 使用CSS3各个属性实现小人的动画

    使用CSS3各个属性实现带有音乐小人的动画,完全不使用JS代码: 注:chrome浏览器效果最佳,最终效果静态图: HTML代码如下: <!DOCTYPE html> <html&g ...

  8. boost和std中的thread的引用参数

    boost 1.60.0 先上代码: #include <boost/thread.hpp> #include <iostream> void add(int &i) ...

  9. HIS-DELPHI-读取数据库配置

    产品思维: 1.做成可配置的 2.模块化 医生会有自己熟悉的药品,数据里面药品太多,让医生选择不放便 所以可以让医生自己维护自己的药品模板数据 比如医生开了处方后,可以保存当前的处方到某个模板中,那么 ...

  10. 微信Auth2.0授权的时候出现两次回调

    在获取用户OpenID的时候 $url="https://open.weixin.qq.com/connect/oauth2/authorize?appid=".WX_APPID. ...