Ethernet defines a 2 byte header for the payload's length in its frame format.

This header has an ambiguous meaning:

if smaller than or equal to 1500 it represents the payload length.

if greater or equal 1536 (0x600) it is to be considered as an EtherType used for mux/demux of frames to the upper layer.

How come they are in the same header? Are we not interested in expressing the payload's length if, for example, we are using etherType 0x0800 (IPv4)


Ethertype/length actually indicating the frame length is pretty much obsolete, it's redundant. Instead, the frame end is signaled on the physical layer by loss of carrier or a special end-of-data symbol (depending on the specific PHY).

You can read up the formal definition of the Length/Type field in IEEE 802.3 Clause 3.2.6.


The Length/EtherType field used differently in different standards.

In Ethernet II, this field is used to indicate the type of payload(like IP) carried by the frame.For ex. Ox0800 signifies an IP payload.

In 802.3 it indicates the number of bytes of data in the frames payload. The 802.3 ethernet frame have LLC(logical link control header), which have fields that can be used to identify payload, For ex. DSAP(Destination Service Access Point) of value 0xFE indicates that the packet is destined to ISO network Layer. This is used by ISIS protocol. Similarly for IP payload the DSAP and the SSAP fields of the 802.2 header set to 0xAA(SAP value for SNAP). The 24-bit Organization Code in the SNAP is zero, and the remaining 16 bits are the EtherType from Assigned Numbers (IP = 0x0800).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.