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.

4∣54\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