One byte can carry more than one field when the bit widths are fixed. The split is compact, and the low nibble can change the header length.

highlighted = computed this step

Why split a byte

A nibble split is compact: one byte can carry two small fields. The diagram tiles the same byte into a high nibble and a low nibble.

fields in byte=2\text{fields in byte}=2

High nibble and low nibble

The high nibble is version 4. The low nibble is IHL 5.

454\mid5
Two fields in one byteThe same byte is tiled by two exact four-bit fields.Nibble split8 bits / 1 byte0x45byte 001000101version4ihl5

IHL counts words

IHL 5 means 5 words, and each word is 4 bytes, so the header is 20 bytes.

5×4=205\times4=20
Two fields in one byteThe same byte is tiled by two exact four-bit fields.Nibble split8 bits / 1 byte0x45byte 001000101version4ihl5

Decode it again

With 0x46, version is still 4, but IHL is 6. That makes 6 words times 4 bytes, or 24 bytes. IHL is not always 5; this example has options.

6×4=246\times4=24
Nibble split with optionsThe low nibble changes the header length.0x46 split8 bits / 1 byte0x46byte 001000110version4ihl6

Summary

The version nibble and IHL nibble share one byte because their widths are fixed. Byte layout only; timing/throughput is not modeled here. Timing/throughput is not modeled here — only the exact byte layout.

header bytes=20\text{header bytes}=20
Two fields in one byteThe same byte is tiled by two exact four-bit fields.Nibble split8 bits / 1 byte0x45byte 001000101version4ihl5