In the previous topic, you learned that TCP and UDP are the two transport layer protocols. This topic gives more details about what TCP does and when it is a good idea to use it instead of UDP.
To understand the differences between TCP and UDP, it is important to understand how each protocol implements specific reliability features and how each protocol tracks conversations.
In addition to supporting the basic functions of data segmentation and reassembly, TCP also provides the following services:
- Establishes a Session – TCP is a connection-oriented protocol that negotiates and establishes a permanent connection (or session) between source and destination devices prior to forwarding any traffic. Through session establishment, the devices negotiate the amount of traffic that can be forwarded at a given time, and the communication data between the two can be closely managed.
- Ensures Reliable Delivery – For many reasons, it is possible for a segment to become corrupted or lost completely, as it is transmitted over the network. TCP ensures that each segment that is sent by the source arrives at the destination.
- Provides Same-Order Delivery – Because networks may provide multiple routes that can have different transmission rates, data can arrive in the wrong order. By numbering and sequencing the segments, TCP ensures segments are reassembled into the proper order.
- Supports Flow Control – Network hosts have limited resources (i.e., memory and processing power). When TCP is aware that these resources are overtaxed, it can request that the sending application reduce the rate of data flow. This is done by TCP regulating the amount of data the source transmits. Flow control can prevent the need for retransmission of the data when the resources of the receiving host are overwhelmed.
For more information on TCP, search the internet for the RFC 793.
TCP is a stateful protocol which means it keeps track of the state of the communication session. To track the state of a session, TCP records which information it has sent and which information has been acknowledged. The stateful session begins with the session establishment and ends with the session termination.
A TCP segment adds 20 bytes (i.e., 160 bits) of overhead when encapsulating the application layer data. The figure shows the fields in a TCP header.
TCP Header Fields
The table identifies and describes the ten fields in a TCP header.
|TCP Header Field||Description|
|Source Port||A 16-bit field used to identify the source application by port number.|
|Destination Port||A 16-bit field used to identify the destination application by port number.|
|Sequence Number||A 32-bit field used for data reassembly purposes.|
|Acknowledgment Number||A 32-bit field used to indicate that data has been received and the next byte expected from the source.|
|Header Length||A 4-bit field known as ʺdata offsetʺ that indicates the length of the TCP segment header.|
|Reserved||A 6-bit field that is reserved for future use.|
|Control bits||A 6-bit field that includes bit codes, or flags, which indicate the purpose and function of the TCP segment.|
|Window size||A 16-bit field used to indicate the number of bytes that can be accepted at one time.|
|Checksum||A 16-bit field used for error checking of the segment header and data.|
|Urgent||A 16-bit field used to indicate if the contained data is urgent.|
Applications that use TCP
TCP is a good example of how the different layers of the TCP/IP protocol suite have specific roles. TCP handles all tasks associated with dividing the data stream into segments, providing reliability, controlling data flow, and reordering segments. TCP frees the application from having to manage any of these tasks. Applications, like those shown in the figure, can simply send the data stream to the transport layer and use the services of TCP.