As you’ll see shortly, a TCP header carries significantly more information than its UDP counterpart. This is a result of the extra fields that are required as part of making TCP reliable. It is also the reason why you’ll hear it said that TCP as a protocol has higher overhead. The diagram below outlines the fields found in a TCP header.
The TCP header fields are described below:
- Source Port. This field specifies the TCP port number of the system sending the segment.
- Destination Port. This field specifies the TCP port number of the destination system.
- Sequence Number. The ordered number of the segment that is used to ensure that data can be properly reassembled on the receiving system, since segments may arrive out of order.
- Acknowledgement Number. The acknowledgement number is used to let the other system know that a segment was received.
- HLEN. The header length field specifies the total TCP header length, again grouped into 32 bit numbers.
- Reserved. This field is always set to zero, and is reserved for future use.
- Code Bits. This field specifies the purpose of the segment. For example, it can be used to denote acknowledgements (ACK), closing a connection (FIN), a synchronization request (SYN), urgent data (URG) and so forth
- Window. Acts as the window size advertisement, specifying how much data this system is currently willing to receive.
- Checksum. A computed value that verifies the integrity of the TCP header, similar to a CRC.
- Urgent Pointer. When the URG code bit is set, this field specifies where within the segment the urgent data can be found.
- Option. If used, this field specifies the maximum segment size that can be received.
- Data. The encapsulated data passed down from upper-layer protocols and applications.
Tip: For more information on Transmission Control Protocol, see RFC 793.