RFC 793:TRANSMISSION CONTROL PROTOCOL
RFC-Ref

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. ...
... TCP is a connection-oriented, end-to-end reliable protocol designed to ...
... 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 ...
... 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. ...
... TCP provides a means for the receiver to govern the amount of data sent by the sender ...
... 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 ...
... segment to the destination TCP. The receiving TCP places the data from a segment ...
... destination TCP. The receiving TCP places the data from a segment into the receiving ...
... 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 ...
... to the local network. This internet module packages TCP segments inside internet ...
... datagram, if necessary) and passes it to the destination TCP. ...
... The TCP is assumed to be a module in an operating system. The users access the TCP ...
... 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 ...
... The mechanisms of TCP do not preclude implementation of the TCP in a front-end ...
... The mechanisms of TCP do not preclude implementation of the TCP in a front-end processor ...
... host-to-front-end protocol must provide the functionality to support the type of TCP-user interface described in this document. ...
... The TCP/user interface provides for calls made by the user on the TCP ...
... TCP/user interface provides for calls made by the user on the TCP to OPEN or CLOSE a connection, to SEND ...
... The TCP/internet interface provides calls to send and receive ...
... 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: ...
... | | | | +-----+ +-----+ +-----+ | TCP | | RTP | ... | | Host Level ...
... It is expected that the TCP will be able to support higher level protocols efficiently. It should be easy to interface higher level ...
... protocols like the ARPANET Telnet or AUTODIN II THP to the TCP. ...
... 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 ...
... 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 ...
... The TCP makes use of the internet protocol type of service field and ...
... 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. ...


... TCP segments are sent as internet datagrams ...
... destination host addresses [2]. A TCP header follows the internet header ...
... internet header, supplying information specific to the TCP protocol. This division allows for the existence of host level protocols other than ...
... division allows for the existence of host level protocols other than TCP. ...
... 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 ...
... TCP/Network interface in the arguments or results of calls by the TCP on the IP. ...
... 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 ...
... LISTEN - represents waiting for a connection request from any remote TCP and port. ...
... 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 ...
... TCP (next sequence number expected by the receiving TCP) SEG.SEQ ...
... 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 ...
... To be sure that a TCP does not create a segment that carries a ...
... segment remaining in the network, the TCP must keep quiet for a maximum segment lifetime ...
... 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 ...
... departure of a TCP segment from TCP A to TCP B, or arrival of a segment ...
... 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 ...
... TCP A TCP B ...
... TCP A TCP B 1. CLOSED LISTEN ...
... In line 2 of figure 7, TCP A begins by sending a SYN 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 ...
... At line 4, TCP A responds with an empty segment containing an ACK for ...
... 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 ...
... TCP A TCP B ...
... TCP A TCP B 1. CLOSED CLOSED ...
... 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 ...
... TCP A TCP B ...
... TCP A TCP B 1. CLOSED LISTEN ...
... 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. ...
... TCP A TCP B ...
... TCP A TCP B 1. (CRASH) (send 300,receive 100) ...
... 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 ...
... TCP A sends a RST. The RST is acceptable so TCP B processes it and aborts the connection. ...
... TCP A TCP B ...
... TCP A TCP B 1. (CRASH) (send 300,receive 100) ...
... connections waiting for SYN. An old duplicate arriving at TCP B (line 2) stirs B into action. A SYN-ACK ...
... into action. A SYN-ACK is returned (line 3) and causes TCP A to generate a RST (the ACK ...
... generate a RST (the ACK in line 3 is not acceptable). TCP B accepts the reset and returns to its passive LISTEN state ...
... TCP A TCP B ...
... TCP A TCP B 1. LISTEN LISTEN ...
... 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 ...
... TCP can ACK this FIN. Note that a TCP receiving a FIN will ACK but not ...
... Case 2: TCP receives a FIN from the network ...
... 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 ...
... TCP A TCP B ...
... TCP A TCP B 1. ESTABLISHED ESTABLISHED ...
... TCP A TCP B ...
... TCP A TCP B 1. ESTABLISHED ESTABLISHED ...
... 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 ...
... There are of course two interfaces of concern: the user/TCP interface and the TCP ...
... 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 ...
... User/TCP Interface ...
... 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 ...
... implementation of the TCP, the local network and TCP identifiers for the source address ...
... 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 ...
... The TCP or some component of the operating system will verify the users authority ...
... 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 ...
... to the receiver, and the PUSH bit will be set in the last TCP segment created ...
... 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. ...
... furthermore, to allow multiple SENDs to be in progress. Multiple SENDs are served in first come, first served order, so the TCP will queue those it cannot service immediately. ...
... SEND later elicits some kind of SIGNAL or pseudo-interrupt from the serving TCP. An alte