A TLS record starts by saying what kind of bytes it carries.

highlighted = computed this step

A record starts with a type byte

The first byte is content type 22. In this toy vocabulary, that value means handshake.

content type=22\text{content type}=22
Content typeThe record header fields are decoded from the pinned TLS toy bytes.Content type40 bits / 5 bytes0x1603030004byte 0byte 1byte 2byte 300010110000000110000001100000000byte 400000100content-type22legacy-version0x0303record-length4(cont.)

The name is not guessed

The helper labels this content type as handshake only after the byte is checked.

content type=22\text{content type}=22
Content typeThe record header fields are decoded from the pinned TLS toy bytes.Content type40 bits / 5 bytes0x1603030004byte 0byte 1byte 2byte 300010110000000110000001100000000byte 400000100content-type22legacy-version0x0303record-length4(cont.)

The version follows the type

After the type byte, the next two bytes carry the legacy version field.

header bytes=5\text{header bytes}=5
Content typeThe record header fields are decoded from the pinned TLS toy bytes.Content type40 bits / 5 bytes0x1603030004byte 0byte 1byte 2byte 300010110000000110000001100000000byte 400000100content-type22legacy-version0x0303record-length4(cont.)

Summary

The record does not start with payload. It starts with a checked content type byte.

type=22\text{type}=22
Content typeThe record header fields are decoded from the pinned TLS toy bytes.Content type40 bits / 5 bytes0x1603030004byte 0byte 1byte 2byte 300010110000000110000001100000000byte 400000100content-type22legacy-version0x0303record-length4(cont.)