Een datapakket op de draad en het frame als zijn payload bestaan uit binaire gegevens. Ethernet verzendt gegevens met het meest significante octet (byte) eerst; binnen elk octet wordt echter het minst significante bit eerst verzonden.
De interne structuur van een Ethernet-frame wordt gespecificeerd in IEEE 802.3. De tabel hieronder toont het complete Ethernet pakket en het frame binnenin, zoals verzonden, voor de payload grootte tot de MTU van 1500 octets. Sommige implementaties van Gigabit Ethernet en andere hogere snelheidsvarianten van Ethernet ondersteunen grotere frames, bekend als jumbo frames.
Layer | Preamble | Start frame delimiter | MAC destination | MAC source | 802.1Q tag (optioneel) | Ethertype (Ethernet II) of lengte (IEEE 802.3) | Payload | Controlevolgorde frame (32-bit CRC) | Interpacket gap | 7 octets | 1 octet | 6 octets | 6 octets | (4 octets) | 2 octets | 46-1500 octets | 4 octets | 12 octets |
---|---|---|---|---|---|---|---|---|---|
Layer 2 Ethernet frame | ← 64-1522 octets → | ||||||||
Laag 1 Ethernet pakket & IPG | ← 72-1530 octets → | ← 12 octets → |
De optionele 802.1Q tag neemt extra ruimte in het frame in. Veldgroottes voor deze optie staan tussen haakjes in de tabel hierboven. IEEE 802.1ad (Q-in-Q) staat meerdere tags in elk frame toe. Deze optie wordt hier niet geïllustreerd.
Ethernet-pakket – fysieke laagEdit
Preamble en start frame delimiterEdit
Een Ethernet-pakket begint met een zeven-octet preamble en een-octet start frame delimiter (SFD).
De preamble bestaat uit een 56-bits (zeven bytes) patroon van afwisselend 1 en 0 bits, waarmee apparaten op het netwerk hun ontvangerklokken gemakkelijk kunnen synchroniseren, zodat synchronisatie op bitniveau wordt geboden. De preamble wordt gevolgd door de SFD voor synchronisatie op byte-niveau en om een nieuw binnenkomend frame te markeren. Voor Ethernet-varianten die seriële bits in plaats van grotere symbolen verzenden, is het (ongecodeerde) on-the-wire bitpatroon voor de preambule samen met het SFD-gedeelte van het frame 10101010 10101010 10101010 10101010 10101011;:paragrafen 4.2.5 en 3.2.2 De preambule en het SFD-gedeelte van het frame zijn als volgt: 10101010 10101010 10101011 10101011;:paragrafen 4.2.2 en 3.2.3.5 en 3.2.2 De bits worden in volgorde verzonden, van links naar rechts.:secties 4.2.5
De SFD is de acht-bits (één byte) waarde die het einde van de preamble markeert, wat het eerste veld van een Ethernet pakket is, en het begin van het Ethernet frame aangeeft. De SFD is bedoeld om het bitpatroon van de preamble te doorbreken en het begin van het eigenlijke frame aan te geven.:paragraaf 4.2.5 De SFD wordt onmiddellijk gevolgd door het MAC-adres van de bestemming, dat het eerste veld in een Ethernet-frame is. De SFD is de binaire reeks 10101011 (0xD5, decimaal 213 in de Ethernet LSB eerste bitvolgorde).:secties 3.2.2, 3.3 en 4.2.6
De schakelingen van de fysische laag transceiver (kortweg PHY) zijn nodig om de Ethernet MAC met het fysische medium te verbinden. De verbinding tussen een PHY en een MAC is onafhankelijk van het fysieke medium en maakt gebruik van een bus uit de media onafhankelijke interface familie (MII, GMII, RGMII, SGMII, XGMII). Fast Ethernet zendontvangerchips maken gebruik van de MII-bus, die een vier-bits (één nibble) brede bus is, daarom wordt de preambule weergegeven als 14 gevallen van 0xA, en de SFD is 0xA 0xB (als nibbles). Gigabit Ethernet zendontvanger chips gebruiken de GMII bus, die een acht-bits brede interface is, dus de preamble sequentie gevolgd door de SFD zou 0x55 0x55 0x55 0x55 0x55 0x55 0xD5 (als bytes) zijn.
Frame – data link layerEdit
HeaderEdit
De header bevat bestemmings- en bron-MAC-adressen (elk zes octetten lang), het EtherType-veld en, optioneel, een IEEE 802.1Q-tag of IEEE 802.1ad-tag.
Het EtherType-veld is twee octetten lang en het kan voor twee verschillende doeleinden worden gebruikt. Waarden van 1500 en lager betekenen dat het wordt gebruikt om de grootte van de payload in octetten aan te geven, terwijl waarden van 1536 en hoger aangeven dat het wordt gebruikt als EtherType, om aan te geven welk protocol is ingekapseld in de payload van het frame. Bij gebruik als EtherType wordt de lengte van het frame bepaald door de plaats van de interpacket gap en geldige frame check sequence (FCS).
De IEEE 802.1Q tag of IEEE 802.1ad tag, indien aanwezig, is een veld van vier octetten dat het lidmaatschap van een virtueel LAN (VLAN) en de IEEE 802.1p prioriteit aangeeft. De eerste twee octetten van de tag worden de Tag Protocol IDentifier (TPID) genoemd en doen dienst als het EtherType-veld dat aangeeft dat het frame ofwel 802.1Q ofwel 802.1ad getagd is. 802.1Q gebruikt een TPID van 0x8100. 802.1ad gebruikt een TPID van 0x88a8.
PayloadEdit
De minimale payload is 42 octets wanneer een 802.1Q tag aanwezig is en 46 octets wanneer deze afwezig is. Als de werkelijke payload minder is, worden dienovereenkomstig padding bytes toegevoegd. De maximale payload is 1500 octets. Niet-standaard jumbo frames staan een grotere maximale payload toe.
Frame check sequenceEdit
De frame check sequence (FCS) is een vier-octet cyclische redundantie controle (CRC) die het mogelijk maakt corrupte gegevens te detecteren binnen het gehele frame zoals ontvangen aan de ontvangzijde. Volgens de norm wordt de FCS-waarde berekend als functie van de beschermde MAC-framevelden: bron- en bestemmingsadres, lengte/type-veld, MAC-clientgegevens en padding (dat wil zeggen alle velden behalve de FCS).
Volgens de norm wordt deze berekening uitgevoerd met behulp van het links verschuivende CRC32 BZIP2 (poly = 0x4C11DB7, initiële CRC = 0xFFFFFF, CRC is post complemented, verificatiewaarde = 0x38FB2284) algoritme. De standaard stelt dat data eerst wordt verzonden met het minst significante bit (bit 0), terwijl het FCS eerst wordt verzonden met het meest significante bit (bit 31).:sectie 3.2.9 Een alternatief is om een CRC te berekenen met de rechts verschuivende CRC32 (poly = 0xEDB88320, initiële CRC = 0xFFFFFF, CRC is post complemented, verifieerwaarde = 0x2144DF1C), hetgeen zal resulteren in een CRC die een bitomkering is van de FCS, en zowel data als de CRC met het minst significante bit eerst te verzenden, hetgeen resulteert in identieke transmissies.
De norm stelt dat de ontvanger een nieuw FCS moet berekenen wanneer gegevens worden ontvangen en vervolgens het ontvangen FCS moet vergelijken met het FCS dat de ontvanger heeft berekend. Een alternatief is de berekening van een CRC op zowel de ontvangen gegevens als het FCS, hetgeen een vaste “verifieer”-waarde oplevert die niet nul is. (Het resultaat is niet-nul omdat de CRC tijdens het genereren van de CRC wordt gecomplementeerd). Aangezien de gegevens eerst met de minst significante bit worden ontvangen, en om te vermijden dat octetten van gegevens moeten worden gebufferd, gebruikt de ontvanger gewoonlijk de rechts verschuivende CRC32. Dit maakt de “verify” waarde (soms ook wel “magic check” genoemd) 0x2144DF1C.
Hardware implementatie van een logisch rechts verschuivende CRC kan echter een links verschuivend Lineair Feedback Shift Register gebruiken als basis voor de berekening van de CRC, waarbij de bits worden omgedraaid, hetgeen resulteert in een “verify” waarde van 0x38FB2284. Aangezien het complementeren van de CRC na de berekening en tijdens de transmissie kan worden uitgevoerd, is wat in het hardwareregister overblijft een niet-gecomplementeerd resultaat, zodat het residu voor een rechtsverschuivende implementatie het complement van 0x2144DF1C = 0xDEBB20E3 zou zijn, en voor een linksverschuivende implementatie, het complement van 0x38FB2284 = 0xC704DD7B.
Einde van frame – fysieke laagEdit
Het einde van een frame wordt meestal aangegeven door het einde-van-de-datastroom-symbool op de fysieke laag of door het verlies van het draaggolfsignaal; een voorbeeld is 10BASE-T, waarbij het ontvangende station het einde van een verzonden frame detecteert door het verlies van de draaggolf. Latere fysieke lagen gebruiken een expliciet symbool of sequentie voor het einde van de data of het einde van de stream om dubbelzinnigheid te voorkomen, vooral wanneer de draaggolf voortdurend tussen frames wordt verzonden; een voorbeeld is Gigabit Ethernet met zijn 8b/10b-coderingsschema dat speciale symbolen gebruikt die voor en na de verzending van een frame worden verzonden.
Interpacket gap – fysieke laagEdit
Interpacket gap (IPG) is de idle tijd tussen pakketten. Nadat een pakket is verzonden, moeten zenders een minimum van 96 bits (12 octetten) van idle line state verzenden voordat ze het volgende pakket verzenden.