Connected: An Internet Encyclopedia
RFC 793 - 1.5. Operation

Top: Connected: An Internet Encyclopedia
Up: Requests For Comments
Up: RFC 793
Up: 1. INTRODUCTION
Prev: 1.4. Interfaces
Next: 2. PHILOSOPHY

### 1.5. Operation

As noted above, the primary purpose of the TCP is to provide reliable, securable logical circuit or connection service between pairs of processes. To provide this service on top of a less reliable internet communication system requires facilities in the following areas:

        Basic Data Transfer
        Reliability
        Flow Control
        Multiplexing
        Connections
        Precedence and Security

The basic operation of the TCP in each of these areas is described in the following paragraphs. Basic Data Transfer:

        The TCP is able to transfer a continuous stream of octets in each
        direction between its users by packaging some number of octets into
        segments for transmission through the internet system.  In general,
        the TCPs decide when to block and forward data at their own
        convenience.

        Sometimes users need to be sure that all the data they have
        submitted to the TCP has been transmitted.  For this purpose a push
        function is defined.  To assure that data submitted to a TCP is
        actually transmitted the sending user indicates that it should be
        pushed through to the receiving user.  A push causes the TCPs to
        promptly forward and deliver data up to that point to the receiver.
        The exact push point might not be visible to the receiving user and
        the push function does not supply a record boundary marker.

Reliability:

        The TCP must recover from data that is damaged, lost, duplicated, or
        delivered out of order by the internet communication system.  This
        is achieved by assigning a sequence number to each octet
        transmitted, and requiring a positive acknowledgment (ACK) from the
        receiving TCP.  If the ACK is not received within a timeout
        interval, the data is retransmitted.  At the receiver, the sequence
        numbers are used to correctly order segments that may be received
        out of order and to eliminate duplicates.  Damage is handled by
        adding a checksum to each segment transmitted, checking it at the
        receiver, and discarding damaged segments.

        As long as the TCPs continue to function properly and the internet
        system does not become completely partitioned, no transmission
        errors will affect the correct delivery of data.  TCP recovers from
        internet communication system errors.

Flow Control:

        TCP provides a means for the receiver to govern the amount of data
        sent by the sender.  This is achieved by returning a "window" with
        every ACK indicating a range of acceptable sequence numbers beyond
        the last segment successfully received.  The window indicates an
        allowed number of octets that the sender may transmit before
        receiving further permission.

Multiplexing:

        To allow for many processes within a single Host to use TCP
        communication facilities simultaneously, the TCP provides a set of
        addresses or ports within each host.  Concatenated with the network
        and host addresses from the internet communication layer, this forms
        a socket.  A pair of sockets uniquely identifies each connection.
        That is, a socket may be simultaneously used in multiple
        connections.

        The binding of ports to processes is handled independently by each
        Host.  However, it proves useful to attach frequently used processes
        (e.g., a "logger" or timesharing service) to fixed sockets which are
        made known to the public.  These services can then be accessed
        through the known addresses.  Establishing and learning the port
        addresses of other processes may involve more dynamic mechanisms.

Connections:

        The reliability and flow control mechanisms described above require
        that TCPs initialize and maintain certain status information for
        each data stream.  The combination of this information, including
        sockets, sequence numbers, and window sizes, is called a connection.
        Each connection is uniquely specified by a pair of sockets
        identifying its two sides.

        When two processes wish to communicate, their TCP's must first
        establish a connection (initialize the status information on each
        side).  When their communication is complete, the connection is
        terminated or closed to free the resources for other uses.

        Since connections must be established between unreliable hosts and
        over the unreliable internet communication system, a handshake
        mechanism with clock-based sequence numbers is used to avoid
        erroneous initialization of connections.

Precedence and Security:

        The users of TCP may indicate the security and precedence of their
        communication.  Provision is made for default values to be used when
        these features are not needed.

Next: 2. PHILOSOPHY

Connected: An Internet Encyclopedia
RFC 793 - 1.5. Operation