TCP
Click on the red underlined text to get to the source
...
The Transmission Control Protocol (TCP) is intended for use as a highly
reliable host-to-host protocol between hosts ...
... Defense for Research and Engineering has
declared the Transmission Control Protocol (TCP) described herein to
be a basis for DoD-wide inter-process communication protocol
standardization.
...
... fit into a layered hierarchy of protocols which support multi-network
applications. The TCP provides for reliable inter-process
communication between pairs of processes in host computers attached to
...
... assumptions are made as to the reliability of the communication
protocols below the TCP layer. TCP assumes it can obtain a simple,
...
... protocols below the TCP layer. TCP assumes it can obtain a simple,
potentially unreliable datagram service ...
... unreliable datagram service from the lower level
protocols. In principle, the TCP should be able to operate above a
wide spectrum of communication systems ranging from hard-wired
connections ...
... TCP is based on concepts first described by Cerf and Kahn in [1]. The
TCP fits into a layered protocol architecture just above a basic
Internet Protocol ...
... Internet Protocol [2] which provides a way for the TCP to send and
receive variable-length segments ...
... internet protocol also deals with any fragmentation or reassembly of
the TCP segments required to achieve transport and delivery ...
... also carries information on the precedence, security classification
and compartmentation of the TCP segments, so this information can be
communicated end-to-end ...
... | higher-level |
+---------------------+
| TCP |
+---------------------+
| internet protocol ...
... networks via
front-end computers which house the TCP and internet protocol layers,
as well as network ...
... internet protocol layers,
as well as network specific software. The TCP specification describes
an interface to the higher level protocols which appears to be
...
...
The TCP is intended to provide a reliable process-to-process
communication service in a multinetwork environment. The TCP ...
... TCP is intended to provide a reliable process-to-process
communication service in a multinetwork environment. The TCP is
intended to be a host-to-host protocol in common use in multiple
networks ...
...
This document represents a specification of the behavior required of
any TCP implementation, both in its interactions with higher level
protocols and in its interactions with other TCPs. The rest of this
section offers a very brief view of the protocol interfaces ...
... section offers a very brief view of the protocol interfaces and
operation. Section 2 summarizes the philosophical basis for the TCP
design. Section 3 offers both a detailed description of the actions
required of TCP ...
... TCP
design. Section 3 offers both a detailed description of the actions
required of TCP when various events occur (arrival of new segments,
user calls, errors, etc.) and the details of the formats of TCP ...
... TCP when various events occur (arrival of new segments,
user calls, errors, etc.) and the details of the formats of TCP
segments.
...
...
The TCP interfaces on one side to user or application processes and on
the other side to a lower level protocol such as Internet Protocol ...
...
The interface between an application process and the TCP is
illustrated in reasonable detail. This interface consists of a set of
...
... connections and to send and receive data on
established connections. It is also expected that the TCP can
asynchronously communicate with application programs. Although
...
... asynchronously communicate with application programs. Although
considerable freedom is permitted to TCP implementors to design
interfaces ...
...
The interface between TCP and lower level protocol is essentially
unspecified except that it is assumed there is a mechanism whereby the
two levels can asynchronously ...
... Typically, one expects the lower level protocol to specify this
interface. TCP is designed to work in a very general environment of
interconnected networks. The lower level protocol which is assumed
...
...
As noted above, the primary purpose of the TCP is to provide reliable,
securable logical circuit or connection ...
...
The basic operation of the TCP in each of these areas is described in
the following paragraphs.
...
...
The TCP is able to transfer a continuous stream of octets in each
direction between its users by packaging some number of octets into
...
...
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
...
... 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 ...
...
The TCP must recover from data that is damaged, lost, duplicated, or
delivered out of order by the internet ...
... ACK) from the
receiving TCP. If the ACK is not received within a timeout
interval, the data is retransmitted. At the receiver ...
... system does not become completely partitioned, no transmission
errors will affect the correct delivery of data. TCP recovers from
internet communication system errors.
...
...
To allow for many processes within a single Host to use TCP
communication facilities simultaneously, the TCP provides a set of
...
... Host to use TCP
communication facilities simultaneously, the TCP provides a set of
addresses or ports ...
...
When two processes wish to communicate, their TCP's must first
establish a connection (initialize the status information on each
...
...
The users of TCP may indicate the security and precedence of their
communication. Provision is made for default values ...
...
Processes transmit data by calling on the TCP and passing buffers of
data as arguments. The TCP ...
... TCP and passing buffers of
data as arguments. The TCP packages the data from these buffers into
segments ...
... The model of internet communication is that there is an internet
protocol module associated with each TCP which provides an interface
to the local network ...
... TCP is assumed to be a module in an operating system. The users
access the TCP much like they would access the file system. The TCP
...
... access the TCP much like they would access the file system. The TCP
may call on other operating system functions, for example, to manage
...
... interface to the network is assumed to be
controlled by a device driver module. The TCP does not call on the
network device driver directly, but rather calls on the internet ...
... host-to-front-end protocol must provide the functionality to support
the type of TCP-user interface described in this document.
...
... TCP/user interface provides for calls made by the user on the TCP
to OPEN or CLOSE a connection, to SEND ...
... interface provides calls to send and receive
datagrams addressed to TCP modules in hosts anywhere in the internet
...
...
The following diagram illustrates the place of the TCP in the protocol
hierarchy:
...
...
It is expected that the TCP will be able to support higher level
protocols efficiently. It should be easy to interface higher level
...
...
A stream of data sent on a TCP connection is delivered reliably and in
order at the destination.
...
... is the sequence number of the next expected data octet of
transmissions in the reverse direction. When the TCP transmits a
segment containing data, it puts a copy on a retransmission ...
...
An acknowledgment by TCP does not guarantee that the data has been
delivered to the end user, but only that the receiving TCP ...
... TCP does not guarantee that the data has been
delivered to the end user, but only that the receiving TCP has taken
the responsibility to do so.
...
... flow control mechanism is
employed. The receiving TCP reports a "window" to the sending TCP.
This window specifies the number of octets, starting ...
... employed. The receiving TCP reports a "window" to the sending TCP.
This window specifies the number of octets, starting with the
...
... starting with the
acknowledgment number, that the receiving TCP is currently prepared to
receive.
...
... To identify the separate data streams that a TCP may handle, the TCP
provides a port identifier ...
... port identifiers are selected
independently by each TCP they might not be unique. To provide for
unique addresses within each TCP ...
... TCP they might not be unique. To provide for
unique addresses within each TCP, we concatenate an internet address
identifying the TCP ...
... TCP, we concatenate an internet address
identifying the TCP with a port identifier to create ...
... There must be well-known sockets which the TCP associates only with
the "appropriate" processes by some means. We envision that processes
may "own" ports ...
... port and
foreign socket arguments. In return, the TCP supplies a (short) local
connection name by which the user refers to the connection ...
... well-known socket is part of the TCP specification, but the assignment
of sockets to services ...
... passive OPENs and wait for matching active OPENs
from other processes and be informed by the TCP when connections have
been established. Two processes which issue active ...
...
A sending TCP is allowed to collect data from the sending user and to
send that data in segments at its own convenience, until the push
...
... function is signaled, then it must send all unsent data. When a
receiving TCP sees the PUSH flag, it must not wait for more data from
the sending TCP before passing the data to the receiving ...
... receiving TCP sees the PUSH flag, it must not wait for more data from
the sending TCP before passing the data to the receiving process.
...
... There is a coupling between the push function and the use of buffers
of data that cross the TCP/user interface. Each time a PUSH flag is
associated with data placed into the receiving ...
...
TCP also provides a means to communicate to the receiver of data that
at some point further along in the data stream ...
... data stream than the receiver is
currently reading there is urgent data. TCP does not attempt to
define what the user specifically does upon being notified of pending
urgent data, but the general notion is that the receiving ...
... security on a per connection
basis to TCP users. Not all TCP modules will necessarily function in
a multilevel secure environment; some may be limited to unclassified
...
... connection
basis to TCP users. Not all TCP modules will necessarily function in
a multilevel secure environment; some may be limited to unclassified
use only, and others may operate at only one security ...
... use only, and others may operate at only one security level and
compartment. Consequently, some TCP implementations and services to
users may be limited to a subset of the multilevel secure case.
...
...
TCP modules which operate in a multilevel secure environment must
properly mark outgoing segments with the security ...
... segments with the security, compartment, and
precedence. Such TCP modules must also provide to their users or
higher level protocols such as Telnet or THP an interface ...
...
TCP implementations will follow a general principle of robustness: be
conservative in what you do, be liberal in what you accept from
others.
...
... internet
header, supplying information specific to the TCP protocol. This
division allows for the existence of host level protocols other than
...
...
TCP Header Format
...
... +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
TCP Header Format
Note that one tick mark represents one bit ...
...
The number of 32 bit words in the TCP Header. This indicates where
the data begins. The TCP header (even one including options) is an
...
... bit words in the TCP Header. This indicates where
the data begins. The TCP header (even one including options) is an
integral number of 32 bits long.
...
... pseudo header conceptually
prefixed to the TCP header. This pseudo header contains the Source
Address ...
... header contains the Source
Address, the Destination Address, the Protocol, and TCP length.
This gives the TCP protection against ...
... Destination Address, the Protocol, and TCP length.
This gives the TCP protection against misrouted segments. This
...
... information is carried in the Internet Protocol and is transferred
across the TCP/Network interface in the arguments or results of
calls by the TCP ...
... Destination Address |
+--------+--------+--------+--------+
| zero | PTCL | TCP Length |
+--------+--------+--------+--------+
...
... +--------+--------+--------+--------+
The TCP Length is the TCP header length plus the data length in
...
...
The TCP Length is the TCP header length plus the data length in
octets (this is not an explicitly transmitted quantity, but is
...
... Options: variable
Options may occupy space at the end of the TCP header and are a
multiple of 8 bits in length. All options are included in the
...
... header padding (i.e., zero).
A TCP must implement all options.
Currently defined options include (kind indicated in octal):
...
...
This option code indicates the end of the option list. This
might not coincide with the end of the TCP header according to
the Data Offset field. This is used at the end of all options,
...
... Offset field. This is used at the end of all options,
not the end of each option, and need only be used if the end of
the options would not otherwise coincide with the end of the TCP
header.
No-Operation
...
... If this option is present, then it communicates the maximum
receive segment size at the TCP which sends this segment.
This field must only be sent in the initial connection request ...
... Padding: variable
The TCP header padding is used to ensure that the TCP header ends
and data begins on a 32 bit ...
...
The TCP header padding is used to ensure that the TCP header ends
and data begins on a 32 bit boundary. The padding is composed of
...
...
Before we can discuss very much about the operation of the TCP we need
to introduce some detailed terminology. The maintenance of a TCP
connection requires the remembering of several variables. We conceive
...
... Before we can discuss very much about the operation of the TCP we need
to introduce some detailed terminology. The maintenance of a TCP
connection requires the remembering of several variables. We conceive
of these variables being stored in a connection record called a
...
... FIN-WAIT-1 - represents waiting for a connection termination request
from the remote TCP, or an acknowledgment of the connection
termination request previously sent.
...
... FIN-WAIT-2 - represents waiting for a connection termination request
from the remote TCP.
CLOSE-WAIT - represents waiting for a connection ...
... CLOSING - represents waiting for a connection termination request
acknowledgment from the remote TCP.
LAST-ACK ...
... ACK - represents waiting for an acknowledgment of the
connection termination request previously sent to the remote TCP
(which includes an acknowledgment of its connection termination
...
...
TIME-WAIT - represents waiting for enough time to pass to be sure
the remote TCP received the acknowledgment of its connection
termination request.
...
...
A TCP connection progresses from one state to another in response to
events. The events are the user calls, OPEN, SEND ...
... error conditions nor actions which are not connected with state
changes. In a later section, more detail is offered with respect to
the reaction of the TCP to events.
...
... +---------+ +---------+
TCP Connection State Diagram
Figure 6.
...
...
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
...
...
The typical kinds of sequence number comparisons which the TCP must
perform include:
...
...
In response to sending data the TCP will receive acknowledgments. The
following comparisons are needed to process the acknowledgments.
...
... SEG.ACK = acknowledgment from the receiving TCP (next sequence
number expected by the receiving TCP ...
... acceptable except ACK segments. Thus, it is be possible for a TCP to
maintain a zero receive window while transmitting data and receiving ...
... receiving
ACKs. However, even when the receive window is zero, a TCP must
process the RST and URG fields of all incoming segments ...
... incarnations of the connection. The problem that arises from this is
-- "how does the TCP identify duplicate segments from previous
incarnations of the connection ...
... be present in the network from an earlier incarnation. We want to
assure this, even if a TCP crashes and loses all knowledge of the
sequence numbers it has been using. When new connections ...
... receive
sequence number. The initial send sequence number (ISS) is chosen by
the data sending TCP, and the initial receive sequence number (IRS) is
...
... lost. For this specification the MSL is taken to be 2 minutes. This
is an engineering choice, and may be changed if experience indicates
it is desirable to do so. Note that if a TCP is reinitialized in some
sense, yet retains its memory of sequence numbers in use, then it need
...
...
The TCP Quiet Time Concept
...
... active (i.e., not closed) connection shall delay emitting any
TCP segments for at least the agreed Maximum Segment Lifetime ...
... host is a part. In the
paragraphs below, an explanation for this specification is given.
TCP implementors may violate the "quiet time" restriction, but only
at the risk of causing some old data to be accepted as new or new
...
... host. The
duplicate detection and sequencing algorithm in the TCP protocol
relies on the unique binding of segment data ...
... segments have "drained" from the internet. Without
such an assumption, two distinct TCP segments could conceivably be
assigned the same or overlapping sequence numbers ...
...
The basic duplicate detection and sequencing algorithm in TCP can be
defeated, however, if a source TCP does not have any memory of the
...
... algorithm in TCP can be
defeated, however, if a source TCP does not have any memory of the
sequence numbers it last used on a given connection ...
... sequence numbers it last used on a given connection. For example, if
the TCP were to start all connections with sequence number ...
... sequence number 0, then
upon crashing and restarting, a TCP might re-form an earlier
connection (possibly after half-open connection ...
... about the sequence numbers used on a particular connection, the TCP
specification recommends that the source delay for MSL seconds
before emitting segments ...
... sequence number, say S1, of the last
segment sent by this TCP on a particular connection. Now suppose,
at this instant, the host ...
... destination may choose not to wait for the "quite time".
Implementors may provide TCP users with the ability to select on a
connection by connection ...
... handshake" is the procedure used to establish a
connection. This procedure normally is initiated by one TCP and
responded to by another TCP. The procedure also works if two TCP ...
... connection. This procedure normally is initiated by one TCP and
responded to by another TCP. The procedure also works if two TCP
simultaneously initiate the procedure. When simultaneous attempt
...
... TCP and
responded to by another TCP. The procedure also works if two TCP
simultaneously initiate the procedure. When simultaneous attempt
occurs, each TCP ...
... TCP
simultaneously initiate the procedure. When simultaneous attempt
occurs, each TCP receives a "SYN" segment which carries no
...
... segments, this is perfectly legitimate, so long as the receiving TCP
doesn't deliver the data to the user until it is clear the data is
valid ...
... figures should be interpreted in the following way. Each line is
numbered for reference purposes. Right arrows (-->) indicate
departure of a TCP segment from TCP A to TCP ...
... TCP segment from TCP A to TCP B, or arrival of a
segment at B from A. Left arrows (<--), indicate the reverse.
...
... (delayed). An "XXX" indicates a segment which is lost or rejected.
Comments appear in parentheses. TCP states represent the state AFTER
the departure or arrival of the segment ...
... sequence numbers starting with sequence
number 100. In line 3, TCP B sends a SYN and acknowledges the SYN it
...
... SYN and acknowledges the SYN it
received from TCP A. Note that the acknowledgment field indicates TCP
B is now expecting to hear sequence 101, acknowledging the SYN ...
... SYN it
received from TCP A. Note that the acknowledgment field indicates TCP
B is now expecting to hear sequence 101, acknowledging the SYN which
...
... segment containing an ACK for
TCP B's SYN; and in line 5, TCP A sends some data. Note that the
...
... TCP B's SYN; and in line 5, TCP A sends some data. Note that the
sequence number of the segment ...
...
Simultaneous initiation is only slightly more complex, as is shown in
figure 8. Each TCP cycles from CLOSED to SYN-SENT to SYN-RECEIVED to
...
... control message, reset, has been devised. If the
receiving TCP is in a non-synchronized state (i.e., SYN-SENT,
...
... SYN-RECEIVED), it returns to LISTEN on receiving an acceptable reset.
If the TCP is in one of the synchronized states (ESTABLISHED,
FIN-WAIT-1, FIN-WAIT-2, CLOSE-WAIT, CLOSING, LAST-ACK, TIME-WAIT), it
...
... As a simple example of recovery from old duplicates, consider
figure 9. At line 3, an old duplicate SYN arrives at TCP B. TCP B
cannot tell that this is an old duplicate, so it responds normally
...
... figure 9. At line 3, an old duplicate SYN arrives at TCP B. TCP B
cannot tell that this is an old duplicate, so it responds normally
(line 4). TCP ...
... TCP B
cannot tell that this is an old duplicate, so it responds normally
(line 4). TCP A detects that the ACK field is incorrect and returns a
RST ...
... SEQ field selected to make the segment
believable. TCP B, on receiving the RST, returns to the LISTEN state ...
... If at site A the connection no longer exists, then an attempt by the
user at site B to send any data on it will result in the site B TCP
receiving a reset control message ...
... receiving a reset control message. Such a message indicates to the
site B TCP that something is wrong, and it is expected to abort the
connection.
...
...
Assume that two user processes A and B are communicating with one
another when a crash occurs causing loss of memory to A's TCP.
Depending on the operating system supporting A's TCP ...
... TCP.
Depending on the operating system supporting A's TCP, it is likely
that some error recovery mechanism exists. When the TCP ...
... TCP, it is likely
that some error recovery mechanism exists. When the TCP is up again,
A is likely to start again from the beginning or from a recovery
...
... error message "connection not open" from the
local (A's) TCP. In an attempt to establish the connection, A's TCP
...
... local (A's) TCP. In an attempt to establish the connection, A's TCP
will send a segment containing SYN ...
... segment containing SYN. This scenario leads to the
example shown in figure 10. After TCP A crashes, the user attempts to
re-open the connection. TCP ...
... TCP A crashes, the user attempts to
re-open the connection. TCP B, in the meantime, thinks the connection
is open.
...
...
When the SYN arrives at line 3, TCP B, being in a synchronized state,
and the incoming segment ...
... acknowledgment indicating what sequence it next expects to hear (ACK
100). TCP A sees that this segment does not acknowledge anything it
sent and, being unsynchronized, sends a reset (RST ...
... RST) because it has
detected a half-open connection. TCP B aborts at line 5. TCP A will
continue to try to establish the connection ...
... detected a half-open connection. TCP B aborts at line 5. TCP A will
continue to try to establish the connection; the problem is now
...
...
An interesting alternative case occurs when TCP A crashes and TCP B
tries to send data on what it thinks is a synchronized connection ...
...
An interesting alternative case occurs when TCP A crashes and TCP B
tries to send data on what it thinks is a synchronized connection.
...
... connection.
This is illustrated in figure 11. In this case, the data arriving at
TCP A from TCP B (line 2) is unacceptable because no such connection
...
... This is illustrated in figure 11. In this case, the data arriving at
TCP A from TCP B (line 2) is unacceptable because no such connection
exists, so TCP ...
... TCP B (line 2) is unacceptable because no such connection
exists, so TCP A sends a RST. The RST is acceptable so TCP ...
... connections
waiting for SYN. An old duplicate arriving at TCP B (line 2) stirs B
into action. A SYN-ACK ...
... generate a RST (the ACK in line 3 is not acceptable). TCP B accepts
the reset and returns to its passive LISTEN state ...
... incoming segment is lower than the precedence level requested then
continue as if the precedence matched exactly (if the remote TCP
cannot raise the precedence level to match ours this will be
detected in the next segment ...
... could initiate several SENDs followed by a CLOSE, and then continue to
RECEIVE until signaled that a RECEIVE failed because the other side
has CLOSED. We assume that the TCP will signal a user, even if no
RECEIVEs are outstanding, that the other side has closed, so the user
can terminate his side gracefully. A TCP ...
... TCP will signal a user, even if no
RECEIVEs are outstanding, that the other side has closed, so the user
can terminate his side gracefully. A TCP will reliably deliver all
buffers SENT before the connection ...
... successfully to know that all his data was received at the destination
TCP. Users must keep reading connections they close for sending until
the TCP ...
... TCP. Users must keep reading connections they close for sending until
the TCP says no more data.
...
...
1) The user initiates by telling the TCP to CLOSE the connection
...
... connection
2) The remote TCP initiates by sending a FIN control signal
3) Both users CLOSE simultaneously
...
... segment queue. No further SENDs from the user will be
accepted by the TCP, and it enters the FIN-WAIT-1 state. RECEIVEs
are allowed in this state ...
... state. All segments preceding and including FIN
will be retransmitted until acknowledged. When the other TCP has
both acknowledged the FIN and sent a FIN of its own, the first TCP
...
... will be retransmitted until acknowledged. When the other TCP has
both acknowledged the FIN and sent a FIN of its own, the first TCP
can ACK this FIN. Note that a TCP ...
... If an unsolicited FIN arrives from the network, the receiving TCP
can ACK it and tell the user that the connection ...
... ACK it and tell the user that the connection is closing. The
user will respond with a CLOSE, upon which the TCP can send a FIN to
the other TCP after sending any remaining data. The TCP ...
... user will respond with a CLOSE, upon which the TCP can send a FIN to
the other TCP after sending any remaining data. The TCP then waits
until its own FIN is acknowledged whereupon it deletes ...
... TCP can send a FIN to
the other TCP after sending any remaining data. The TCP then waits
until its own FIN is acknowledged whereupon it deletes the
...
... segments to be exchanged. When all segments preceding the FINs
have been processed and acknowledged, each TCP can ACK the FIN it
has received. Both will, upon receiving ...
...
The precedence and security parameters used in TCP are exactly those
defined in the Internet Protocol (IP ...
... Internet Protocol (IP) [2]. Throughout this TCP
specification the term "security/compartment" is intended to indicate
...
...
Note that TCP modules which operate only at the default value of
precedence will still have to check the precedence of incoming
...
... checksum test failure), or network congestion, TCP uses
retransmission (after a timeout) to ensure delivery ...
... Duplicate segments may arrive due to network or TCP retransmission.
As discussed in the section on sequence numbers ...
... retransmission.
As discussed in the section on sequence numbers the TCP performs
certain tests on the sequence and acknowledgment numbers in the
segments ...
... networks that compose an
internetwork system and the wide range of uses of TCP connections the
retransmission timeout must be dynamically determined. One procedure
...
...
The objective of the TCP urgent mechanism is to allow the sending user
to stimulate the receiving user to accept some urgent data and to
...
... receiving user to accept some urgent data and to
permit the receiving TCP to indicate to the receiving user when all
the currently known urgent data has been received by the user ...
... receive sequence number (RCV.NXT) at the receiving TCP, that TCP
must tell the user to go into "urgent mode"; when the receive sequence
number ...
... NXT) at the receiving TCP, that TCP
must tell the user to go into "urgent mode"; when the receive sequence
number catches up to the urgent pointer, the TCP ...
... TCP
must tell the user to go into "urgent mode"; when the receive sequence
number catches up to the urgent pointer, the TCP must tell user to go
into "normal mode". If the urgent pointer is updated while the user
is in "urgent mode", the update ...
...
The mechanisms provided allow a TCP to advertise a large window and to
subsequently advertise a much smaller window without having accepted
that much data. This, so called "shrinking the window," is strongly
...
...
The sending TCP must be prepared to accept from the user and send at
least one octet of new data even if the send window is zero. The
sending TCP ...
... TCP must be prepared to accept from the user and send at
least one octet of new data even if the send window is zero. The
sending TCP must regularly retransmit to the receiving TCP even when
...
... sending TCP must regularly retransmit to the receiving TCP even when
the window is zero. Two minutes is recommended for the retransmission
...
... interval when the window is zero. This retransmission is essential to
guarantee that when either TCP has a zero window the re-opening of the
window will be reliably reported to the other.
...
...
When the receiving TCP has a zero window and a segment arrives it must
still send an acknowledgment showing its next expected sequence number ...
...
The sending TCP packages the data to be transmitted into segments
which fit the current window, and may repackage segments ...
... probe a zero window
is accepted, it consumes one octet of the window now available.
If the sending TCP simply sends as much as it can whenever the
window is non zero, the transmitted data will be broken into
alternating big and small segments ...
...
The suggestion here is that the TCP implementations need to
actively attempt to combine small window allocations into larger
windows, since the mechanisms for managing the window tend to lead
...
... TCP interface
and the TCP/lower-level interface. We have a fairly elaborate model
of the user/TCP ...
... TCP/lower-level interface. We have a fairly elaborate model
of the user/TCP interface, but the interface to the lower level
...
...
The following functional description of user commands to the TCP is,
at best, fictional, since every operating system will have different
...
... at best, fictional, since every operating system will have different
facilities. Consequently, we must warn readers that different TCP
implementations may have different user interfaces. However, all
...
... TCPs must provide a certain minimum set of services to guarantee
that all TCP implementations can support the same protocol
hierarchy. This section specifies the functional interfaces
...
... hierarchy. This section specifies the functional interfaces
required of all TCP implementations.
...
...
TCP User Commands
...
...
The following sections functionally characterize a USER/TCP
interface. The notation used is similar to most procedure or
...
...
The user commands described below specify the basic functions the
TCP must perform to support interprocess communication.
Individual implementations must define their own exact format, and
may provide combinations or subsets of the basic functions in
...
...
In providing interprocess communication facilities, the TCP must
not only accept commands, but must also return information to the
processes it serves. The latter consists of:
...
...
We assume that the local TCP is aware of the identity of the
processes it serves and will check the authority ...
... to use the connection specified. Depending upon the
implementation of the TCP, the local network and TCP identifiers ...
... identifiers
for the source address will either be supplied by the TCP or the
lower level protocol (e.g., IP). These considerations are the
...
... IP). These considerations are the
result of concern about security, to the extent that no TCP be
able to masquerade as another one, and so on. Similarly, no
...
... process can masquerade as another without the collusion of the
TCP.
...
...
On an active OPEN command, the TCP will begin the procedure to
synchronize (i.e., establish) the connection at once.
...
... The timeout, if present, permits the caller to set up a timeout
for all data submitted to TCP. If data is not successfully
delivered to the destination within the timeout period, the TCP ...
... TCP. If data is not successfully
delivered to the destination within the timeout period, the TCP
will abort the connection. The present global default is five
...
...
TCP will accept incoming requests as matching only if the
security/compartment information is exactly the same and only if
...
...
A local connection name will be returned to the user by the TCP.
The local connection name can then be used as a short hand term
...
... If the URGENT flag is set, segments sent to the destination TCP
will have the urgent pointer set. The receiving TCP ...
... TCP
will have the urgent pointer set. The receiving TCP will signal
the urgent condition to the receiving process if the urgent
...
... receiver when all the currently known urgent
data has been received. The number of times the sending user's
TCP signals urgent will not necessarily be equal to the number
of times the receiving user will be notified of the presence of
...
... STATUS call to determine the status of the connection. In some
implementations the TCP may notify the user when an unspecified
socket is bound.
...
