Lifewire
Transmission Control Protocol and User Datagram Protocol are the two standard transport layers used with Internet Protocol.
Both TCP and UDP use headers as part of packaging message data for transfer over network connections. TCP headers and UDP headers each contain a set of parameters called fields defined by the protocol technical specifications.
TCP Header Format
Each TCP header has ten required fields totaling 20 bytes (160 bits) in size. They can also optionally include an additional data section up to 40 bytes in size.
It takes 8 bits to equal 1 byte.
TCP headers appear in the following sequence:
-
Source TCP port number (2 bytes or 16 bits)
-
Destination TCP port number (2 bytes or 16 bits)
-
Sequence number (4 bytes or 32 bits)
-
Acknowledgment number (4 bytes or 32 bits)
-
TCP data offset (4 bits)
-
Reserved data (3 bits)
-
Control flags (up to 9 bits)
-
Window size (2 bytes or 16 bits)
-
TCP checksum (2 bytes or 16 bits)
-
Urgent pointer (2 bytes or 16 bits)
-
TCP optional data (0-40 bytes)
The headers supply specific information:
- Source and destination TCP port numbers are the communication endpoints for sending and receiving devices.
- Message senders use sequence numbers to mark the ordering of a group of messages. Both senders and receivers use the acknowledgment numbers field to communicate the sequence numbers of messages that are either recently received or expected to be sent.
- The data offset field stores the total size of a TCP header in multiples of four bytes. A header not using the optional TCP field has a data offset of 5 (representing 20 bytes), while a header using the maximum-sized optional field has a data offset of 15 (representing 60 bytes).
- Reserved data in TCP headers always has a value of zero. This field serves the purpose of aligning the total header size as a multiple of four bytes (important for the efficiency of computer data processing).
- TCP uses a set of six standard and three extended control flags (each an individual bit representing on or off) to manage data flow in specific situations. One bit flag, for example, initiates TCP connection reset logic.
- TCP senders use a number called window size to regulate how much data they send to a receiver before requiring an acknowledgment in return. If the window size becomes too small, network data transfer will be unnecessarily slow, while if the window size becomes too large, the network link can become saturated (unusable for any other applications) or the receiver may not be able to process incoming data quickly enough (also resulting in slow performance). Windowing algorithms built into the protocol dynamically calculate size values and
- use this field of TCP headers to coordinate changes between senders and receivers.
- The checksum value inside a TCP header is generated by the protocol sender as a mathematical technique to help the receiver detect messages that are corrupted or tampered with.
- The urgent pointer field is often set to zero and ignored, but in conjunction with one of the control flags, it can be used as a data offset to mark a subset of a message as requiring priority processing.
- Usages of optional TCP data include support for special acknowledgment and window scaling algorithms.
UDP Header Format
Because UDP is significantly more limited in capability than TCP, its headers are much smaller. A UDP header contains 8 bytes, divided into the following four required fields:
- Source port number (2 bytes)
- Destination port number (2 bytes)
- Length of data (2 bytes)
- UDP checksum (2 bytes)
UDP inserts header fields into its message stream in the order listed above.
-
Source and destination UDP port numbers are the communication endpoints for sending and receiving devices.
-
The length field in UDP represents the total size of each datagram including both header and data. This field ranges in value from a minimum of 8 bytes (the required header size) to sizes above 65,000 bytes.
-
Similar to TCP, a UDP checksum allows receivers to cross-check incoming data for any corrupted bits of the message.