Transmission Control Protocol-
Before you go through this article, make sure that you have gone through the previous article on TCP in Networking.
We have discussed-
- Transmission Control Protocol is a transport layer protocol.
- It continuously receives data from the application layer.
- It divides the data into chunks where each chunk is a collection of bytes.
- It then creates TCP segments by adding a TCP header to the data chunks.
- TCP segments are encapsulated in the IP datagram.
TCP segment = TCP header + Data chunk |
In this article, we will discuss about TCP Header.
TCP Header-
The following diagram represents the TCP header format-
Let us discuss each field of TCP header one by one.
1. Source Port-
- Source Port is a 16 bit field.
- It identifies the port of the sending application.
2. Destination Port-
- Destination Port is a 16 bit field.
- It identifies the port of the receiving application.
NOTEIt is important to note-
Combination of port numbers and IP Addresses of sender and receiver
|
3. Sequence Number-
- Sequence number is a 32 bit field.
- TCP assigns a unique sequence number to each byte of data contained in the TCP segment.
- This field contains the sequence number of the first data byte.
4. Acknowledgement Number-
- Acknowledgment number is a 32 bit field.
- It contains sequence number of the data byte that receiver expects to receive next from the sender.
- It is always sequence number of the last received data byte incremented by 1.
5. Header Length-
- Header length is a 4 bit field.
- It contains the length of TCP header.
- It helps in knowing from where the actual data begins.
Minimum and Maximum Header length-
The length of TCP header always lies in the range-
[20 bytes , 60 bytes] |
- The initial 5 rows of the TCP header are always used.
- So, minimum length of TCP header = 5 x 4 bytes = 20 bytes.
- The size of the 6th row representing the Options field vary.
- The size of Options field can go up to 40 bytes.
- So, maximum length of TCP header = 20 bytes + 40 bytes = 60 bytes.
Concept of Scaling Factor-
- Header length is a 4 bit field.
- So, the range of decimal values that can be represented is [0, 15].
- But the range of header length is [20, 60].
- So, to represent the header length, we use a scaling factor of 4.
In general,
Header length = Header length field value x 4 bytes |
Examples-
- If header length field contains decimal value 5 (represented as 0101), then-
Header length = 5 x 4 = 20 bytes
- If header length field contains decimal value 10 (represented as 1010), then-
Header length = 10 x 4 = 40 bytes
- If header length field contains decimal value 15 (represented as 1111), then-
Header length = 15 x 4 = 60 bytes
NOTESIt is important to note-
While solving questions-
|
6. Reserved Bits-
- The 6 bits are reserved.
- These bits are not used.
7. URG Bit-
URG bit is used to treat certain data on an urgent basis. |
When URG bit is set to 1,
- It indicates the receiver that certain amount of data within the current segment is urgent.
- Urgent data is pointed out by evaluating the urgent pointer field.
- The urgent data has be prioritized.
- Receiver forwards urgent data to the receiving application on a separate channel.
8. ACK Bit-
ACK bit indicates whether acknowledgement number field is valid or not. |
- When ACK bit is set to 1, it indicates that acknowledgement number contained in the TCP header is valid.
- For all TCP segments except request segment, ACK bit is set to 1.
- Request segment is sent for connection establishment during Three Way Handshake.
9. PSH Bit-
PSH bit is used to push the entire buffer immediately to the receiving application. |
When PSH bit is set to 1,
- All the segments in the buffer are immediately pushed to the receiving application.
- No wait is done for filling the entire buffer.
- This makes the entire buffer to free up immediately.
NOTEIt is important to note-
|
10. RST Bit-
RST bit is used to reset the TCP connection. |
When RST bit is set to 1,
- It indicates the receiver to terminate the connection immediately.
- It causes both the sides to release the connection and all its resources abnormally.
- The transfer of data ceases in both the directions.
- It may result in the loss of data that is in transit.
This is used only when-
- There are unrecoverable errors.
- There is no chance of terminating the TCP connection normally.
11. SYN Bit-
SYN bit is used to synchronize the sequence numbers. |
When SYN bit is set to 1,
- It indicates the receiver that the sequence number contained in the TCP header is the initial sequence number.
- Request segment sent for connection establishment during Three way handshake contains SYN bit set to 1.
12. FIN Bit-
FIN bit is used to terminate the TCP connection. |
When FIN bit is set to 1,
- It indicates the receiver that the sender wants to terminate the connection.
- FIN segment sent for TCP Connection Termination contains FIN bit set to 1.
13. Window Size-
- Window size is a 16 bit field.
- It contains the size of the receiving window of the sender.
- It advertises how much data (in bytes) the sender can receive without acknowledgement.
- Thus, window size is used for Flow Control.
NOTEIt is important to note-
|
14. Checksum-
- Checksum is a 16 bit field used for error control.
- It verifies the integrity of data in the TCP payload.
- Sender adds CRC checksum to the checksum field before sending the data.
- Receiver rejects the data that fails the CRC check.
15. Urgent Pointer-
- Urgent pointer is a 16 bit field.
- It indicates how much data in the current segment counting from the first data byte is urgent.
- Urgent pointer added to the sequence number indicates the end of urgent data byte.
- This field is considered valid and evaluated only if the URG bit is set to 1.
USEFUL FORMULAS
Formula-01:Number of urgent bytes = Urgent pointer + 1
Formula-02:End of urgent byte = Sequence number of the first byte in the segment + Urgent pointer |
16. Options-
- Options field is used for several purposes.
- The size of options field vary from 0 bytes to 40 bytes.
Options field is generally used for the following purposes-
- Time stamp
- Window size extension
- Parameter negotiation
- Padding
A. Time Stamp-
When wrap around time is less than life time of a segment,
- Multiple segments having the same sequence number may appear at the receiver side.
- This makes it difficult for the receiver to identify the correct segment.
- If time stamp is used, it marks the age of TCP segments.
- Based on the time stamp, receiver can identify the correct segment.
B. Window Size Extension-
- Options field may be used to represent a window size greater than 16 bits.
- Using window size field of TCP header, window size of only 16 bits can be represented.
- If the receiver wants to receive more data, it can advertise its greater window size using this field.
- The extra bits are then appended in Options field.
C. Parameter Negotiation-
Options field is used for parameters negotiation.
Example- During connection establishment,
- Both sender and receiver have to specify their maximum segment size.
- To specify maximum segment size, there is no special field.
- So, they specify their maximum segment size using this field and negotiates.
D. Padding-
- Addition of dummy data to fill up unused space in the transmission unit and make it conform to the standard size is called as padding.
- Options field is used for padding.
Example-
- When header length is not a multiple of 4, extra zeroes are padded in the Options field.
- By doing so, header length becomes a multiple of 4.
- If header length = 30 bytes, 2 bytes of dummy data is added to the header.
- This makes header length = 32 bytes.
- Then, the value 32 / 4 = 8 is put in the header length field.
- In worst case, 3 bytes of dummy data might have to be padded to make the header length a multiple of 4.
Also Read- IPv4 Header | UDP Header
To gain better understanding about TCP Header,
Next Article- TCP Sequence Number | Wrap Around Time
Get more notes and other study material of Computer Networks.
Watch video lectures by visiting our YouTube channel LearnVidFun.