イーサネットの次の層のプロトコルをどのように識別しますか?イーサネットフレームに同じものの規定はありますか?
3 に答える
イーサネット フレームには、上位層プロトコルを指定する 2 バイト フィールドであるEthertypeが含まれます。たとえば、IP には 0x800 があります。ネットワーク エンジンは、ネットワーク インターフェイスからフレームを受信すると、このフィールドをチェックし、適切なハンドラに転送します。
ethertype (2 バイト、13 番目と 14 番目のバイト) は、通常、宛先 mac と送信元 mac のすぐ後ろにあります。このケースは、イーサネット II に当てはまります。
802.3 の場合、ethertype が LLC SNAP の一部としてカプセル化される場合があります。したがって、一般に、13 番目と 14 番目のバイトが実際に ethertype であるかどうかを確認してから、それを使用できます。
イーサタイプでない場合 (イーサタイプは 0x05DC より大きい必要があります)、ペイロードの長さがわかります。次に、LLC SNAP を解析して、内部の ethertype を取得します。
これはイーサネットヘッダーです
DstMacAddr // 6 バイト
SrcMacAddr // 6 バイト
EthType // 2 バイト -> ARP(0x0806)、IPv4(0x0800)、IPv6(0x86dd)、VLAN(0x8100) など
ペイロード // ARP、IPv4、IPv6 など
FSC // CRC32