Softpanorama
(slightly skeptical) Open Source Software Educational Society

May the source be with you, but remember the KISS principle ;-)

Softpanorama Search

TCP Protocol

News See Also Recommended Links IP troubleshooting TCP Headers TCP flow control
TCP handshake Sequence numbers NAT Quiz Humor Socks5

Introduction

Reliability

TCP Headers

TCP Flow Control


Introduction

TCP protocol is defined in RFC 793. The objective of TCP is to provide a reliable, connection-oriented delivery service. TCP views data as a stream of bytes, not frames. The unit of transfer is refered to as a segment. To provide the connection-oriented service, TCP takes care to ensure reliability, flow control, and connection maintainence.

TCP  is suited to the situation when large volume of data are transmitted between systems possibly across multiple routers. TCP has four main features:

  1. Virtual circuit connection
  2. Full-duplex connection
  3. Unstructured stream orientation
  4. Buffered transfer

Here are those four features in detail:

  • Virtual Circuit Connection.  TCP, on both the sending and receiving systems, must establish a connection before the transmission can start. This is similar to making a phone call; the line must be established before you can begin to talk.
  • Reliability

    To ensure reliability, TCP is able to recover from data that is damaged, lost, duplicated, or delivered out of sequence. In order to do this, TCP assigns a sequence number to each byte transmitted. The receiving host's TCP must return an ACK for bytes received within a specified period. If this is not done, the data is retransmitted. Damaged data is handled by adding a checksum to each segment. If a segment is detected as damaged by the receiving host's TCP, it will discard the segment. The sender will resend the segment since the ACK was never sent.

     

    TCP Headers

    All IP packets have at least one header, which is known as the IP header; sometimes this header is also called a Layer 3 or network header. The IP header is simply a series of bits which have been grouped into fields of a set size. All IP headers have the same structure; the only difference will be which bits have been set to "1" to either turn on a field's value or to represent a binary number within a field. Let's take a closer look at the fields in an IP header:
     
    4 8 16 32 bits
    Ver. IHL Type of service Total length
    Identification Flags Fragment offset
    Time to live Protocol Header checksum
    Source address
    Destination address
    Option + Padding
    Data

    An IP packet has 14 fields and occupy six 32-bit words; let's go through these fields one at a time.

    16 32 bits
    Source port Destination port
    Sequence number
    Acknowledgement number
    Offset Reserved U A P R S F Window
    Checksum Urgent pointer
    Option + Padding
    Data

    Note that a TCP header is also composed of 32-bit words; like an IP header, the default size is 20 bytes if the option field is not used. Let's summarize the fields that are available in a TCP header:

    We'll be seeing these flags again when we run "tcpdump" and when we take a look at creating packet filter rules.

    TCP Flow Control

    Introduction

    TCP is more than a basic send-receive-acknowledge-send progression. TCP has sophisticated algorithms to optimize flow control on both the sender side and the receiver side. The algorithm that implements flow
    control on both the sender side and the receiver side follows what is known as the sliding window principle.

    Receiver-Side Window Advertisements

    A TCP window advertisement determines the maximum amount of data that can be sent before the sender must wait for an acknowledgement from the receiver. By advertising its window size, the receiver side manages flow control. With window advertisements, the receiving host continually informs the sending host of how much data it is prepared to receive.

    Each TCP segment from the receiver carries an acknowledgement and a window advertisement. Each acknowledgement specifies how many bytes have been received, and each window advertisement specifies how many additional bytes the receiver is prepared to accept. The size contained in the window advertisements varies over time; therefore, it is considered a sliding window.

    Sender-Side Congestion Window

    To avoid network congestion, TCP on the sender side maintains a congestion window. The congestion window adjusts the amount of data that can be sent according to the number of segments that were recently lost or acknowledged in transit. Lost segments are detected if a transmission timeout occurs before an acknowledgement is received.

    As acknowledgements begin to be received, TCP doubles the size of the congestion window. If congestion is detected, the congestion window halves in size. If congestion continues, the congestion window can be halved multiple times.

    Depending upon the severity of the congestion, TCP can use either a slow-start or congestion-avoidance algorithm to begin to increase the size of the congestion window. The slow-start algorithm quickly increases window size by doubling it for each successful transmission. The congestion-avoidance algorithm slowly increases the window’s size by increasing it only one segment at a time for each successful transmission.

    TCP Large Window

    The Solaris implements RFC 1323, which allows larger TCP window advertisement sizes to enhance performance over high-delay, high-bandwidth networks, such as satellite networks.

    A standard TCP header uses a 16-bit field to report the receiver window size to the sender. Therefore, the largest window that can be used is 216 or 64 Kbytes. RFC 1323 introduces a mechanism to increase the window size to 230 or 1 Gbyte.

    Sequence Numbers

    A fundamental notion in the design is that every octet of data sent over a TCP connection has a sequence number. Since every octet is sequenced, each of them can be acknowledged. The acknowledgment mechanism employed is cumulative so that an acknowledgment of sequence number X indicates that all octets up to but not including X have been received. This mechanism allows for straight-forward duplicate detection in the presence of retransmission. Numbering of octets within a segment is that the first data octet immediately following the header is the lowest numbered, and the following octets are numbered consecutively.

     

     

    Quiz

    Q1. TCP stands for _____________________ ?

     A: Transmission Control Protocol

     Q2. TCP is ________ and ____________  ?

     a. connectionless, stateless

    b. connection-orineted, stateless

    c. connection-oriented, stateful

    d. connectionless, stateful

     A: C

     Q3. Full Duplex Connection consists of ___ independent streams of data.

     Ans: 2

     Q4. Receiving host informs header of how much it is ready to receive. This is called ________________ ?

     A: Window Advertisement

     

    Q5. T/F: There is no way to inform TCP of congestion along the path

    A: True

    Q6. What is spoofing?

    a. Where a packets claims its source to be other that what its source really is.

    b. Same as "denial of service" attacks

    c. Where a machine continually pings another machine

    d. Where certain broadcasts are passed through a router

    A: A

    NOTE: There is protection built-in in IPv6 to against spoofing

    Q6. Sequence Number in a TCP header is used for (list all that apply)

    a. acknowledgements

    b. upper layer information

    c. reordering of the octets received

    d. protocol dependent information

    e. rejecting the duplicate octets

    A: A,C,E

    Q7. What is "keepalive”?

    a. A keepalive is a small, layer-1 bit message that is transmitted by a

         network device to let directly-connected network devices know of its presence.

    b. A keepalive is a small, layer-2 message that is transmitted by a

         network device to let directly-connected network devices know of its presence.

    c. A keepalive is a small, layer-2 message that is transmitted by a

         network device to let it neighbors know of congestion

    d. A keepalive is a small, layer-3 message that is transmitted by a

         network device to let directly-connected network devices know of its presence.

    e. A keepalive is a small, layer-3 message that is transmitted by a

         network device to let it neighbors know of congestion

    A: B

    Q8. What is flow control ?

    a. To keep the transmitting device from transmitting no faster than the receiving device can receive.

    b. To find the best route to a destination

    c. To determine which machine transmits packets on the wire on a given instance.

    d. To be able to send a beacon message when congestion occurs.

    A: A

    Q9. Which of the following methods are used as flow control ?

        Choose 3

    a. Acknowledgements

    b. Windowing

    c. Traceroute

    d. TTL

    e. Sliding windows

    A: A,B,E



    Copyright © 1996-2009 by Dr. Nikolai Bezroukov. www.softpanorama.org was created as a service to the UN Sustainable Development Networking Programme (SDNP) in the author free time. Submit comments This document is an industrial compilation designed and created exclusively for educational use and is placed under the copyright of the Open Content License(OPL). Site uses AdSense so you need to be aware of Google privacy policy. Original materials copyright belong to respective owners. Quotes are made for educational purposes only in compliance with the fair use doctrine.

    Disclaimer:

    Last Modified: August 14, 2009