Every TCP header contains a 4-bit Data Offset (DO) field implying the
length of that segment's TCP header. The DO field has been specified
as: "The number of 32 bit words in the TCP Header. This indicates
where the data begins. The TCP header (even one including options)
is an integral number of 32 bits long" [1]. For a TCP implementation,
this means that the boundary separating TCP control data and
application data is always exactly DO * 4 bytes from the beginning of
the TCP header.
As a 4-bit unsigned integer, DO's value is bounded between 0 and 15.
This allows for a maximum TCP header length of 60 bytes (15 * 4
bytes). The required fields in a TCP header occupy a fixed 20 bytes.
This leaves 40 bytes as the maximum amount of space for use by TCP
options.