EtherType je šestnáctibitová hodnota v některých typech rámcůlinkové vrstvy, která udává protokol dat zapouzdřených v datové části rámce. Hodnoty EtherType byly poprvé použity v původním standardu Ethernet v poli Type. V prvních verzích standardu IEEE 802.3 však bylo stejné pole použito pro délku datové části rámce, a protokol datové části rámce musel být odvozen z polí DSAP a SSAP v hlavičce IEEE 802.2. Koncept pole EtherType se však ukázal natolik praktický, že jej IEEE 802 použilo v podobě pole Protocol ID ve SNAP rozšíření hlavičky IEEE 802.2.
Aby v sítích Ethernet, kde v poli Length/Type může být EtherType podle původního standardu Ethernet nebo délka dat podle standardu IEEE 802.3, bylo možné rozlišit, o který formát rámce se jedná, používají se v nových sítích hodnoty EtherType větší nebo rovné 1536 (0x0600); menší hodnoty mají význam délky.
Použití
Hodnoty EtherType začínají od 0x0800. V moderní implementaci Ethernetu může pole v Ethernetovém rámci, které obsahuje EtherType, obsahovat délku dat v ethernetovém rámci. Historicky podle typu Ethernetových rámců, které se používaly na určitém segmentu Ethernetu, byly současně povoleny obě interpretace, což vedlo ke kolizím. Při použití rámců podle standardu Ethernet II byly tyto oktety považovány za EtherType, zatímco podle standardu IEEE 802.3 za délku dat v rámci v bytech.
Hodnoty EtherType původně mohly být libovolné v rozsahu 0-65535. V mnoha sítích Ethernet se používaly rámce formátů Ethernet II i IEEE 802.3 současně, což vedlo k nejednoznačnostem v interpretaci významu pole Length/Type. Pro zamezení těmto nejednoznačnostem povoluje standard IEEE 802.3x z roku 1997 pouze hodnoty EtherType větší nebo rovné 1536 (0x0600). Tato hodnota byla zvolena, protože maximální přenosová délka (MTU) datového pole standardních rámců Ethernet 802.3 byla 1500 bytů (0x05DC). Hodnoty 1500 (0x05DC) a menší indikují, že pole obsahuje délku, zatímco hodnoty 1536 a větší indikují, že pole obsahuje EtherType. Interpretace hodnot 1501–1535 není definována[1].
Délka dat v nestandardních jumbo rámcích (obvykle okolo 9000 bytů) leží v rozsahu hodnot používaných pro EtherType, což způsobuje konflikt. Pro jeho řešení bylo navrženo používat speciální EtherType 0x8870, místo délky rámce[2].
Při 802.1Q VLAN tagování a QinQ se používají zvláštní 16bitové hodnoty EtherType, který nejen označují obsah datového pole, ale slouží také k ukončení VLAN tagování nebo QinQ zásobníku. Při dopředném prohlížení 16bitový EtherType pomáhají při rozpoznání 32+32+16=80bitové hlavičky QinQ umístěné před datovým polem za oběma MAC adresami. Z těchto 80 bitů se pouze 32 používá pro dynamické informace. Úplný 66bitový adresní systém vyžaduje 18 bitů za MAC. Proto jsou použity další EtherType hodnoty pro trojnásobné tagování QinQinQ (anglickyTriple Tagging).
Konzervativní používání 16bitového Tag Protocol Identifier (TPID) pro každý 32bitový VLAN tag následované původní 16bitovou hodnotou EtherType vytváří 48bitovou signaturu, kterou sice nelze zaměnit s částí datového pole, ale jejíž používání je velmi neefektivní. Existují proprietární implementace, které těchto 48 bitů komprimují. EtherType obvykle neobsahuje kontrolní součet (CRC nebo FCS).
V seznamu EtherType hodnot udržovaném organizací IEEE[8] mnoho známých protokolů chybí; například EtherType 0x6003 používaný DECnet Fáze IV má uveden pouze odkaz na firmu DEC.