EtherType

EtherType（イーサタイプ）は、イーサネットフレームの中にある2オクテットのフィールドであり、フレームのペイロードにカプセル化されているプロトコルを示すのに使用される。
このフィールドは、イーサネットフレームのサイズを示すのにも使用される場合がある。EtherTypeは最初にEthernet IIの規格で定義され、後にIEEE 802.3規格に適応した。このフィールドは、受信側でペイロードを引き渡すプロトコルを決定するために、データリンク層によって使用される。
概要.
イーサネットの現在の実装では、EtherTypeを記述するために使用されるイーサネットフレーム内のフィールドは、イーサネットフレームのペイロード長を表すためにも使用できる。歴史的には、イーサネットセグメントで使用されていたイーサネットフレーミングの種類によっては、両方の解釈が同時に有効であり、曖昧さが生じる可能性があった。Ethernet IIではこのフィールドはEtherTypeを表すと見なし、元のIEEE 802.3ではバイト単位のペイロード長を表すとものとした。
イーサネットIIとIEEE 802.3を同じイーサネットセグメントで使用できるようにするために、EtherType値を1536以上とする統一規格IEEE 802.3x-1997が導入された。この値は、802.3のフレームのデータフィールドの最大長(MTU)が1500バイトであることから選ばれた。 従って、このフィールドが1500以下であれば、そのフィールドがイーサネットフレームのペイロード長として使用されることを示し、1536以上であれば、このフィールドがEtherTypeを表すということを示す。1501から1535までの値の解釈は未定義である。
フレームの終わりは、キャリアの損失、または物理層の特別なシンボルやシーケンスによって通知されるので、フレーム長をイーサネットフレームにおいて明示的な値として符号化する必要は必ずしもない。ただし、イーサネットフレームの最小ペイロードは46バイトなので、EtherTypeを使用するプロトコルでは、フレームの受信者がそのプロトコルのパケット長を判断する必要がある場合、独自のパケット長のフィールドを含める必要がある。
VLANタギング.
IEEE 802.1Qによるタグ付きフレームの場合、EtherType値として0x8100を使用する。これは、タグ付きフレームであることを示す識別子で、TPID(Tag Protocol Identifier)という。その後に16ビットのTCP(Tag Control Information)が続き、その後にカプセル化されたパケットのプロトコルを示す（本来の）EtherTypeが続く。では、さらにネストされたEtherTypeとTCIのペアでこのタグ付けを拡張する。
ジャンボフレーム.
非標準ジャンボフレームのペイロード長（通常9000バイト以下）は、EtherTypeで使用される範囲内であり、そのようなフレーム長を示すために使用することはできない。この矛盾を解決するため、EtherTypeフィールドに特別なEtherType値0x8870を入れる方法が提案された。しかし、この草案（IS-ISのためのより大きなパケットのユースケース）は受け入れられず、破棄されている。当時のIEEE 802.3議長のGeoff Thompsonは、IEEE 802.3の正式な立場とその立場の裏にある理由を概説した回答を草案の執筆者に示した。草案の執筆者も議長の手紙に回答したが、その後のIEEE 802.3からの回答は記録されていない。
この草案は廃止されたが、シスコ製ルータのIS-IS実装で使用されている（IIH Helloパケットパディング用）。
イーサネットを超えた使用.
IEEE 802シリーズの規格の登場により、 IEEE 802.2 LLCヘッダと組み合わされた(SNAP)ヘッダが、イーサネット以外のIEEE 802ネットワーク用ならびにFDDIなど、IEEE 802.2 LLCヘッダーを使用する非IEEEネットワークのペイロードのEtherTypeを送信するために使用される。ただし、イーサネットの場合、Ethernet IIフレーミングはまだ使用されている。
登録.
EtherTypeは、IEEE登録局によって割り当てられる。EtherTypeのよく知られた用途の全てが、IEEEのEtherType値のリストに記録されているわけではない。例えば、EtherType 0x0806（ARPで使用される）は、IEEEの一覧に"Symbolics, Inc., Protocol unavailable"としてのみ表示される。しかしながら、IEEE登録局は、0x0806を含むすべての認められたEtherTypeをリストする。
例.
以下にプロトコルのEtherType値をいくつか示す。これは全てのEtherType値を網羅したものではない。