diff options
Diffstat (limited to 'doc/rfc/rfc714.txt')
-rw-r--r-- | doc/rfc/rfc714.txt | 1235 |
1 files changed, 1235 insertions, 0 deletions
diff --git a/doc/rfc/rfc714.txt b/doc/rfc/rfc714.txt new file mode 100644 index 0000000..8d6b034 --- /dev/null +++ b/doc/rfc/rfc714.txt @@ -0,0 +1,1235 @@ + + + + + + +Network Working Group A. McKenzie +Request for Comments: 714 BBN-NCC +NIC: 35144 April 1976 + + + A Host/Host Protocol for an ARPANET-Type Network + + Recently we have been involved in the planning of a network, which, + if implemented, would use ARPANET IMPs without modification, but + would allow re-specification of Host/Host (and higher level) + Protocol. The remainder of this document is a slightly edited + version of our recommendation for Host/Host protocol; we thought that + it might be of interest to the ARPANET Community. + +I. INTRODUCTION + + The Host/Host Protocol for the ARPANET was the first such protocol + designed for use over a packet-switched network. The current version + has been in existence since early 1972 and has provided for the + transportation of billions of bits over tens or hundreds of thousands + of connections. Clearly, the protocol is adequate for the job; this + does not mean that it is ideal, however. In particular, the ARPANET + Host/Host protocol has been criticized on the following grounds + (among others): + + (1) It is specified as a simplex protocol. Each established + connection is a simplex entity, thus two connections (one in each + direction) must be established in order to carry out an exchange + of messages. This provides great generality but at a perhaps + unacceptable cost in complexity. + + (2) It is not particularly robust, in that it cannot continue to + operate correctly in the face of several types of message loss. + While it is true that the ARPANET itself rarely loses messages, + messages are occasionally lost, both by the network and by the + Hosts. + + (3) Partly because of the simplex nature of connections, the flow + control mechanisms defined in the ARPANET protocol do not make + efficient use of the transactional nature of much of data + processing. Rather than carrying flow control information (in + the form of permits, or requests for more information) in the + reverse traffic, a separate channel is set up to convey this + information. Thus, for transactional systems, up to twice as + many messages are exchanged (half for flow control information + and half for data) as would be needed for data alone. + + + + + +McKenzie [Page 1] + +RFC 714 A Host/Host Protocol for an ARPANET-type Network April 1976 + + + (4) Prohibition against the multiple use of a connection termination + point makes the establishment of communication with service + facilities extremely cumbersome. + + The International Federation for Information Processing (IFIP) + Working Group 6.1 (Packet-switched Network Internetworking) has + recently approved a proposal for an internetwork end-to-end protocol. + The IFIP Protocol is based on experience from the ARPANET, the + (French) Cyclade Network, and the (British) NPL Network, as well as + the plans of other networks. Thus, one would expect that it would + have all of the strengths and few (or none) of the weaknesses of the + protocols which are in use on, or planned for, these networks. + + In fact, the IFIP Protocol avoids the deficiencies of the ARPANET + protocol mentioned above. Connections are treated as full-duplex + entities, and this decision permits flow control information to be + carried on the reverse channel in transaction-oriented systems where + there is reverse channel traffic occurring naturally. In addition, + the IFIP Protocol is to some extent self synchronizing; in + particular, there is no type of message loss from which the Protocol + does not permit recovery in a graceful way. + + The IFIP Protocol makes a minimal number of assumptions about the + network over which it will operate. It is designed to permit + fragmentation, as a message crosses from one network to another, + without network reassembly. It anticipates duplication, or non- + delivery, of messages or message fragments and provides ways to + recover from these conditions. Finally, it permits delivery of + messages at their destination Host in a completely different order + from the order in which they were input by the source Host. + Unfortunately, it achieves these advantages at a relatively high + overhead cost in terms of transferred bits. The complete source and + destination process addresses are carried in every message, 24-bits + of fragment identification are carried with each fragment and 16-bits + of acknowledgement information are else carried in every message. + + When considering channel capacities of hundreds of kilobits (or + more), message overhead of a few hundred bits is a modest price to + pay in order to achieve great flexibility and generality. However, + for a stand-alone network of the type under consideration, and + especially in view of the anticipated use of many circuits of 10kbs + capacity, the IFIP Protocol offers far more generality than is + needed, for which a fairly severe overhead price is paid. + + The virtual circuit protocols currently being debated within the + International Telegraph and Telephone Consultative Committee (CCITT) + are a step in the opposite direction. Virtual circuit protocols + attempt to make a packet switching network indistinguishable (from a + + + +McKenzie [Page 2] + +RFC 714 A Host/Host Protocol for an ARPANET-type Network April 1976 + + + customer's point of view) from a switched circuit network, except + possibly in regard to error or delay characteristics. Thus, virtual + circuit protocols generally place responsibility for end-to-end + communications control within the network rather than within the + Hosts. For example, when a receiving Host limits the rate at which + it accepts data from the network, the network in turn limits the rate + of input from the Host which is transmitting this data stream. Host + protocols which are designed for virtual circuit networks can be + quite simple, if somewhat inflexible. For example, the Host might + give the network a "link number" or "index" and ask the network to + set up a virtual circuit to some other Host to be associated with + this number, and report back if and when the circuit is established. + However, significant development would be required to add a virtual + circuit capability to the ARPANET IMP software; the required changes + would seem to be more expensive and carry greater uncertainty than + they are worth. + + In light of the above, our approach in defining this proposed + protocol has been to start with the ARPANET Host/Host Protocol and + modify it according to some of the concepts of the IFIP Protocol in + order to remedy its major deficiencies. The remainder of this + document specifies the protocol, which we have designed for this + purpose. + +II. COMMUNICATION CONCEPTS + + The IMP subnetwork imposes a number of physical restrictions on + communications between Hosts. These restrictions are presented in + BBN Report No. 1822. In particular, the concepts of leaders, + messages, padding, message ID's and message types are of interest to + the design of Host/Host Protocol. The following discussion assumes + that the reader is familiar with these concepts. + + The IMP subnetwork takes cognizance only of Hosts, but in general a + Host connected to the network can support several users, several + terminals, or several independent processes. Since many or all of + these users, terminals, or processes will need to use the network + concurrently, a fundamental requirement of the Host/Host Protocol is + to provide process-to-process communication over the network. Thus, + it is necessary for the Host/Host Protocol to provide a richer + addressing structure than is required by the IMP subnetwork. + + Processes within a Host are envisioned as communicating with the rest + of the network through a network control program (NCP) resident in + that Host, which implements the Host/Host protocol. The primary + functions of an NCP are to establish connections, break connections, + and control data flow over connections. A connection couples two + processes so that the output from one process is input to the other + + + +McKenzie [Page 3] + +RFC 714 A Host/Host Protocol for an ARPANET-type Network April 1976 + + + and vice versa. The NCP may be implemented either as part of the + Host's operating system or a separate user process, although it must + have the capability of communicating with all of the processes or + routines which are attempting to use the network. + + In order to accomplish its tasks, the NCP of one Host must + communicate with the NCPs of other Hosts. To this end, a particular + communication path between each pair of Hosts has been designated as + the control connection. Messages transmitted over the control + connection are called control messages, and must always be + interpreted by an NCP as a sequence of one or more control commands. + For example, one kind of control command is used to initiate a + connection while another kind carries notification that a connection + has been terminated.* + + * Note that in BBN Report No. 1822, messages of non-zero type are + called control messages, and are used to control the flow of + information between a Host and its IMP. In this document the + term "control message" is used for a message of type zero + transmitted over the control connection. The IMPs take no + special notice of these messages. + + The maximum size of a message is limited by the IMP subnetwork to + approximately 1000 8-bit bytes, and in fact may be further limited by + the receiving Host for flow control reasons, as described later. + + Accordingly, the transmitting process, or its Network Control + Program, must take responsibility for fragmenting long interprocess + messages into messages of a size conforming to the Host/Host and + Host/IMP protocols. For this reason, it is impossible for a sending + Host to guarantee that any significance should be attached to message + boundaries by receiving processes. Nevertheless, message boundaries + will occur naturally, and should be used in a reasonable way wherever + possible; that is, a sending process or its NCP should not act + arbitrarily in deciding to fragment messages. For example, this + protocol specifies that each control message must contain an integral + number of control commands and no single control command will be + split into two pieces which are carried through the network in + separate messages. + + A major concern of the Host/Host Protocol is the definition of the + method for references to processes in other Hosts. In order to + facilitate this, a standard name space is used, with a separate + portion of the name space allocated to each Host. Each Host + therefore must map internal process identifiers into its portion of + this name space. The elements of the name space are called sockets. + A socket forms one end of a connection and a connection is fully + specified by a pair of sockets, one in each Host. A socket is + + + +McKenzie [Page 4] + +RFC 714 A Host/Host Protocol for an ARPANET-type Network April 1976 + + + identified by a Host number and a 16-bit socket number. The same + 16-bit socket number in different Hosts represents difference + sockets. In order to avoid the transmission of a pair of 16-bit + socket numbers in each message between these sockets, the process of + connection establishment allows each Host to define a mapping, valid + for the lifetime of the connection being established, from the 32 + bits which specify the socket pair to an 8-bit number. + + No constraints are placed on the assignment of socket numbers; + however, since a pair of socket numbers defines a unique connection, + it is clear that in assigning socket numbers, a Host must ensure that + for each new connection at least one of the socket numbers is unique. + For example, a Host which supports many terminals might choose to use + a terminal's physical interface number as a portion of the socket + number involved in any connection established on behalf of that + terminal. This would insure uniqueness at the terminal end. Thus, + no conflict would occur if several terminals attempted to access a + common resource (identified by its own unique socket number). + + From the foregoing it should be clear that the Host/Host protocol + allows a single socket to participate in several connections + simultaneously. This is quite similar to what happens in the + telephone system, where a company, as well as an individual, can be + identified with a phone number. As seen from the outside, the phone + number of a company is sharable, since several conversations can + proceed at the same time and the caller does not have to worry about + the already existing conversations. Conversely, the phone number of + an individual is not sharable, since he can process only one + conversation at a time; the same is generally true of a connection to + a terminal which might be using the network. + + A final major concept which should be explained is the "windowing" + concept, which is used for flow control. This concept is adapted + from the IFIP protocol with some appropriate modifications for use in + an ARPANET-type network. When a connection is established, a + sequence number is initialized to some specified starting point and + the receiver allocates a certain number of credits to the sender. + Each credit entitles the sender to transmit one message; that is, the + receiver agrees to provide buffering for the number of messages + specified by the number of credits granted. If one thinks of + sequence numbers advancing from left to right, the initial sequence + number defines the left edge of a window into the entire sequence + number space and the credit, when added to the initial sequence + number, defines the right edge of the window. The transmitting + process is permitted to send as many messages and as would fill the + window, but not more. + + + + + +McKenzie [Page 5] + +RFC 714 A Host/Host Protocol for an ARPANET-type Network April 1976 + + + When a receiver receives a message whose sequence number is at the + left window edge (or several consecutive messages extending rightward + from the left window edge) the receiver returns an acknowledgement + for the rightmost such message, along with a new credit, and advances + his own window; its new left edge immediately follows the last + acknowledged message and it's new right edge is at the location + defined by adding the new credit to the new left window edge. + Similarly, when a sender receives an acknowledgement he advances his + own left window edge to the location in the sequence number space + specified by the acknowledgement and his own right window edge to the + location specified by adding the new credit allocation to the left + window edge. Fields are reserved in each data message to carry an + acknowledgement and a credit for traffic flowing in the reverse + direction. Thus, in the case of interactive or transactional + exchanges, no control messages need to be sent. + + In the event that a sender does not receive acknowledgements for + previously transmitted messages within some timeout period, the + messages are transmitted again, using the same sequence number as was + previously assigned. This allows straightforward recovery from the + situation of lost messages. On the other hand, if it is the + returning acknowledgement which is lost, the fact that the + retransmitted message carries an identical sequence number allows the + receiver to discard it. However, the receiver should notice that at + the time of retransmission the sender had not received an + acknowledgement; therefore, the receiver should re-acknowledge this + (and any subsequently received messages) by transmitting an + acknowledgement bearing the current left window edge. Thus, in both + the case of lost data messages and the case of lost acknowledgements + the protocol remains synchronized. + + The primary difference between this protocol and the IFIP Protocol is + in the size of the sequence number field. The IFIP Protocol is + designed for interconnections of many networks with huge + variabilities in delay and with a strong possibility that messages + will not be delivered at the destination in the same order in which + they were transmitted by the source. Thus, the IFIP Protocol uses a + 16-bit sequence number field which, even at megabit per second rates + cannot be completely cycled through in less than several hours. + However, the proposed ARPANET-type network has the characteristic + that delays are typically short, messages are rarely lost, and they + are always delivered in the same order in which they were sent if + they are delivered at all. Therefore, this Host/Host Protocol uses + only a 4-bit sequence number field which, of course, is cycled + through every 16 messages. This imposes the constraint that a window + may never be larger than eight messages. Since the sequence number + is contained in a 4-bit field, it is also possible to use only four + + + + +McKenzie [Page 6] + +RFC 714 A Host/Host Protocol for an ARPANET-type Network April 1976 + + + bits for each of the credit and acknowledgement fields; thus, this + protocol uses only 12 bits in each message header rather than 40 bits + used under the IFIP Protocol. + +III. NCP FUNCTIONS + + The functions of the NCP are to establish connections, terminate + connections, control flow, transmit interrupts, and respond to test + inquiries. These functions are explained in this section, and + control commands are introduced as needed. In Section IV the formats + of all control commands are presented together. + + Connection Establishment + + The command used to establish the connection is the RFC (request + for connection). + + 8* 16 16 8 16 8 + ---------------------------------------------------------------- + ! RFC ! my-socket ! your-socket ! Index ! size ! credit ! + ---------------------------------------------------------------- + + * The number shown above each control command field is the + length of that field in bits. + + The RFC command either requests the establishment of a connection + between a pair of sockets or accepts a previously received request + for connection. Since the RFC command is used both for requesting + and accepting the establishment of a connection, it is possible + for either of two cooperating processes to initiate connection + establishment. Even if both processes were to simultaneously + request the establishment of a connection, each would interpret + receipt of the RFC sent by the other as an acceptance of its own + RFC, and thus the connection would be established without + difficulty. The my-socket and your-socket fields in the RFC + identify the sockets which terminate the ends of the connection at + each Host. The index field of the RFC specifies an index number + which will be contained in each data transmission sent over this + connection from the "my-socket" to the "your-socket" end of the + connection. The size field of the RFC specifies the maximum + number of 8-bit bytes which are permitted to be sent from the + "your-socket" to the "my-socket" end of the connection in any one + message. The credit field of the RFC specifies the initial size + (in the range 0-7) of the window in the "your-socket" to the "my- + socket" direction of the connection. A pair of RFCs exchanged + between two Hosts matches when the my-socket field of one equals + your-socket field of the other, and vice versa. The connection is + established when a matching pair of RFCs has been exchanged. + + + +McKenzie [Page 7] + +RFC 714 A Host/Host Protocol for an ARPANET-type Network April 1976 + + + Connections are uniquely specified by the sockets which terminate + the connection; thus, a pair of socket numbers cannot be used to + identify two different connections simultaneously. Similarly, the + index is used to specify which connection a data message pertains + to; thus, an index value cannot be reused while the connection to + which it was first assigned is still active or in the process of + being established. For example, consider an RFC sent from Host A + to Host B whose my-socket field contains the value X, your-socket + field contains the value Y, and index contains the value Z. Until + the requested connection has been closed (even if it is never + established) or reinitialized, Host A is prohibited from sending a + different RFC to Host B whose my-socket field and your-socket + fields are X and Y, or whose index field is Z. Note that the + prohibition against the reuse of the values X and Y treats them as + a pair; that is, another RFC may be sent from Host A to Host B, + whose my-socket field contains the value X so long as the your- + socket field contains some value other than Y. + + In general there is no prescribed lifetime for an RFC. A Host is + permitted to queue incoming RFCs and withhold a response for an + arbitrarily long time, or, alternatively, to reject requests + immediately if it has not already sent a matching RFC. Of course, + the Host which originally sent the RFC may be unwilling to wait + for an arbitrarily long time so it may abort the request. + + The decision to queue or not to queue incoming RFCs has important + implications which must not be ignored. Each RFC which is queued, + of course, requires a small amount of memory in the Host doing the + queuing. If the incoming RFC is queued until a local process + takes control of the local socket and accepts (or rejects) the + RFC, but no local process ever takes control of the socket, the + RFC must be queued "forever". On the other hand, if no queuing is + performed, the cooperating processes which may be attempting to + establish communication may be able to establish this + communication only by accident. + + The most reasonable solution to the problems posed above is for + each NCP to give processes running in its own Host two options for + attempting to initiate connections. The first option would allow + a process to cause an RFC to be sent to a specified remote socket, + with the NCP notifying the process as to whether this RFC was + accepted or rejected by the remote Host. The second option would + allow a process to tell its own NCP to "listen" for an RFC to a + specified local socket from some remote socket (the process might + also specify the particular remote socket and/or Host it wishes to + communicate with) and to accept the RFC (i.e., return a matching + + + + + +McKenzie [Page 8] + +RFC 714 A Host/Host Protocol for an ARPANET-type Network April 1976 + + + RFC) if and when it arrives. Note that this also involves queuing + (of "listen" requests) but it is internal queuing, which is + susceptible to reasonable management by the local Host. + + Connection Termination + + The command used to terminate a connection is CLS (close). + + 8 16 16 + ----------------------------------- + ! CLS ! my-socket ! your-socket ! + ----------------------------------- + + The my-socket field and your-socket field of the CLS command + identify the sockets which terminate the connection being closed. + Each side must send and receive a CLS command before the + connection termination is completed and prohibitions on the reuse + of the socket pair and index value are ended. + + It is not necessary for connection to be established (i.e., for + both RFCs to be exchanged) before connection termination begins. + For example, if a Host wishes to refuse a request for connection + it sends back a CLS instead of a matching RFC. The refusing Host + then waits for the initiating Host to acknowledge the refusal by + returning a CLS. Similarly, if a Host wishes to abort its + outstanding request for connection it sends a CLS command. The + foreign Host is obliged to acknowledge the CLS with its own CLS. + Note that even though the connection was never established, CLS + commands must be exchanged before the prohibition on the reuse of + the socket pair or the index is completely ended. Under normal + circumstances a Host should not send a CLS command for a + connection on which that Host has unacknowledged data outstanding. + Of course, the other Host may have just transmitted data so the + sender of the CLS command may expect to receive additional data + from the other Host. + + The Host should quickly acknowledge an incoming CLS so that the + foreign Host can purge its tables. In particular, in the absence + of outstanding unacknowledged data a Host must acknowledge an + incoming close within 60 seconds. Following a 60 second period, + the Host transmitting a CLS may regard the socket pair and the + index as "unused" and it may delete the values from any tables + describing active connections. Of course, if the foreign Host + malfunctions in such a way that the CLS is ignored for longer than + 60 seconds, subsequent attempts to establish connections or + transmit data may lead to ambiguous results. To deal with this + possibility, a Host should in general "reinitialize" its use of + connection parameters before attempting to establish a new + + + +McKenzie [Page 9] + +RFC 714 A Host/Host Protocol for an ARPANET-type Network April 1976 + + + connection to any Host which has failed to respond to CLS + commands. Methods for reinitializing connection parameter tables + are described below. + + Acknowledgement + + As described in the previous section, flow control is handled by a + windowing scheme, based on sequence numbers. Credits and + acknowledgements can be piggybacked on data traveling over the + reverse channel. Thus, in general, acknowledgement of the receipt + of messages will take place over the data connection rather than + over the control connection. However, there are some cases when + it may be desirable to pass acknowledgements over the control + connection (for example, when there is no data to be returned in + the reverse direction). In addition, for efficiency it may be + desirable to negatively acknowledge data transmissions known not + to have been delivered, rather than waiting for the timeout and + retransmission mechanism to cause such messages to be + retransmitted. [Note that such negative acknowledgement is not + required, since timeout and retransmission is always sufficient to + guarantee eventual delivery of all data, but may be used to + increase the efficiency of communication.] Since the frequency of + use of the negative acknowledgement system over an ARPANET-type + network will be extremely low, it is undesirable to leave space + for negative acknowledgements in the header of every data message. + Thus, negative acknowledgement can be most conveniently handled by + control messages. + + There are two commands dealing with acknowledgements. + + 8 8 4 4 + --------------------------------- + ! ACK ! index ! seq ! crd ! + --------------------------------- + + The ACK (acknowledgement) command carries three data fields. The + index value is the index used by the sender of the acknowledgement + to identify the connection. The sequence ("seq") field contains + the sequence number of the highest-numbered sequential data + message correctly received over the connection. [The very first + data message to be transmitted over a newly established connection + will have the sequence number one; until this data message is + correctly received, any acknowledgement commands transmitted for + this connection (for example, to change the credit value) will + have the sequence field set to zero. This applies whether the + "acknowledgement" is carried by an ACK command or is contained in + data messages being sent to the foreign Host over the connection.] + The credit ("crd") field contains a number, in the range 0-7, + + + +McKenzie [Page 10] + +RFC 714 A Host/Host Protocol for an ARPANET-type Network April 1976 + + + which gives the size of the receive window. This number, when + added to the "seq", gives the sequence number of the highest + numbered message which is permitted to be transmitted by the + foreign Host. Thus, a credit of zero says that the Host + transmitting the ACK command is currently not prepared to accept + any messages over the connection; and a credit of 7 says the Host + is prepared to accept up to 7 messages over the connection. Of + course, since the sequence number is contained in a 4-bit field, + the addition of the sequence number and the credit value must be + performed modulo 16 (sequence number zero immediately follows + sequence number 15). + + As noted above, the ACK command is intended for use with data + connections where there is no data flow in one direction, for + example, the transmission of a file to a line printer. In fact it + should be clear that, since transmission of control messages is + not synchronized with transmission of data messages (either in the + network or, more importantly, in the transmitting NCP), ACK + commands should not be sent for any connection over which data is + flowing in the same direction. Thus, if an ACK command is + generated, the NCP which transmits it must insure that the control + message which contains it is transmitted prior to the transmission + of new data messages for the same connection. + + 8 8 8 + -------------------------- + ! NACK ! index ! seq ! + -------------------------- + + The NACK (negative acknowledgement) command contains two data + fields. As with the positive acknowledgement command described + above, the first field is the index number assigned to this + connection by the sender of the NACK. However, the second field + contains only the 4-bit sequence number, right justified in an 8- + bit field, of the data message for the connection in question + which is being negatively acknowledged. As previously noted, the + NACK serves no vital function in the protocol but may occasionally + allow more efficient communication. The NACK is intended to be + used when the window width is greater than one, the message at the + left window edge has not been correctly received, and messages + toward the right of the window have been correctly received. A + timeout will eventually cause the retransmission of the missing + message, at which point the left window edge can be moved forward + several messages. Use of the NACK, however, could trigger the + immediate retransmission of the missing message and thus reduce + the delay. Of course, if more than one message is missing it may + + + + + +McKenzie [Page 11] + +RFC 714 A Host/Host Protocol for an ARPANET-type Network April 1976 + + + be desirable to send several NACKs for one index in a single + control message; the protocol permits this, although it is + extremely unlikely to occur. + + Re-initialization + + Occasionally, due to lost control messages, system crashes, NCP + errors, or other factors, communication between two NCPs will be + disrupted. One possible effect of any such disruption might be + that neither of the involved NCPs could be sure that its stored + information regarding connections with the other Host matched the + information stored by the NCP of the other Host. In this + situation, an NCP may wish to reinitialize its tables and request + that the other Host do likewise. This re-initialization may be + requested for a particular index and/or socket pair, or globally + for all connections possibly established with the other Host. For + these purposes, the protocol provides three control commands as + described below: + + 8 16 16 8 + ------------------------------------------- + ! RCP ! my-socket ! your-socket ! index ! + ------------------------------------------- + + The RCP (reinitialize connection parameters) command contains + three data fields. The my-socket and your-socket fields contain a + pair of socket numbers, which define a connection; the index field + contains a value which would identify data messages over a + connection. When this command is received by an NCP it should + purge its tables of any reference to a connection identified by + the socket pair or any reference to a connection for which + received data would be identified by the specified index value; of + course, only connections using these values with the Host sending + the RCP would be purged. In effect, the Host sending the RCP + command is saying: "I am about to send you an RFC using this + socket pair and this index to identify a data connection, which I + hope we can agree to establish. I do not believe that any use of + this socket pair or this index conflicts with any previous use, + but if you believe it does, please record the fact (for later + examination) as an error and then delete from your tables the + conflicting information so that we may proceed to establish the + connection." + + In case more global difficulties or loss of state information are + suspected, the protocol provides the pair of control commands RST + (reset) and RRP (reset reply). + + + + + +McKenzie [Page 12] + +RFC 714 A Host/Host Protocol for an ARPANET-type Network April 1976 + + + 8 + --------- + ! RST ! + --------- + + 8 + --------- + ! RRP ! + --------- + + The RST command is to be interpreted by the Host receiving it as a + signal to purge its tables of any entries which arose from + communication with the Host which sent the RST. The Host sending + the RST should likewise purge its tables of any entries which + arose from communication with the Host to which the RST was sent. + The Host receiving the RST should acknowledge receipt by returning + an RRP. Once the first Host has sent an RST to the second Host, + the first Host should not communicate with the second Host (except + for responding to RST) until the second Host returns an RRP. If + both NCPs decide to send RSTs at approximately the same time, each + Host will receive an RST and each must answer with an RRP even + though its own RST has not been answered. + + A Host should not send an RRP when an RST has not been received. + Further, a Host should send only one RST (and no other commands) + in a single control message and should not send another RST to the + same Host until either 60 seconds have elapsed or a command which + is not an RST or RRP has been received from that Host. Under + these conditions, a single RRP constitutes an answer to all RSTs + sent to that Host and any other RRPs arriving from that Host + should be discarded. + + Interrupts + + It is sometimes necessary in a communication system to circumvent + flow control mechanisms when serious errors or other important + conditions are detected. For example, the user of a time sharing + terminal who creates and begins the execution of a program which + contains an erroneous infinite loop may need to "attract the + attention" of the operating system to ask it to cancel the + execution of his program, even though the operating system may + normally "listen" to the terminal only when the program in + execution asks for input. Similarly, in a computer communication + network, where flow control may prevent the transmission of data + from one process to another, under certain extraordinary + conditions it may be necessary to pass a signal from one process + to another. Since the channel between the NCPs of two Hosts is + not subject to the flow control mechanisms imposed on the data + + + +McKenzie [Page 13] + +RFC 714 A Host/Host Protocol for an ARPANET-type Network April 1976 + + + connections, it is possible to transmit such an "out-of-band" + signal over the control connection, and for this purpose the INT + (interrupt) command is provided. + + 8 8 8 + ------------------------- + ! INT ! index ! seq ! + ------------------------- + + The INT command contains two data fields. The index field + identifies the data connection to which the "interrupt" pertains; + the sequence number ("seq"), which is four bits right-justified in + an eight-bit field, gives the sequence number of the first data + message which should "come after" the interrupt. In other words, + the INT command notifies the receiving NCP of an exception + condition which must be synchronized with the data stream, and the + sequence number provides the necessary synchronization. Any data + messages with sequence numbers to the left of the specified + sequence number were generated before the exception condition + arose. + + An NCP which receives an INT command should advance the right + window edge of the specified data connection so that the window + contains at least the sequence number specified in the interrupt + command. (It may be necessary to acknowledge data messages which + were not correctly received or were not buffered in order to be + able to advance the window to this point; justification is + provided by the assumption that the INT was sent only because the + flow control mechanisms were preventing the transmission of + important information.) Of course, the interrupt or exception + signal itself is subject to the interpretation of the Host + receiving the signal, but should have a meaning equivalent to: + "notify the process in execution, or that process' superior, that + something exceptional has happened and that the data now buffered + is an important message." + + Test Inquiry + + It may sometimes be useful for one Host to determine if some other + Host is carrying on network conversations. The control command to + be used for this purpose is ECO (echo). + + 8 8 + ------------------ + ! ECO ! data ! + ------------------ + + + + + +McKenzie [Page 14] + +RFC 714 A Host/Host Protocol for an ARPANET-type Network April 1976 + + + The data field of the ECO command may contain any bit + configuration chosen by the Host sending the ECO. Upon receiving + an ECO command, an NCP should respond by returning the data to the + sender in an ERP (echo reply) command. + + 8 8 + ------------------ + ! ERP ! data ! + ------------------ + + A Host should respond (with an ERP command) to an incoming ECO + command within a reasonable time, here defined as sixty seconds or + less. A Host should not send an ERP when no ECO has been + received. + + IV. DECLARATIVE SPECIFICATIONS + + Message Format + + All Host-to-Host messages which conform to this protocol shall be + constructed as follows: + + Bits 1-96: Leader - This field is as specified in BBN Report No. + 1822, with the following additional specifications. + + Bits 38-40: Maximum Message Size - This field should be zero for + all control messages. For messages sent over data connections, + the value of this field should be calculated from the size + received in the RFC which established the connection. + + Bits 65-76: Message-id - This field is subdivided into eight bits + giving the index of the connection of which the message is a part, + and four bits giving the sequence number of the message. The + index is contained in bits 65-72, and the sequence number in bits + 73-76. + + Bits 97-100: Acknowledgement - This field contains the four-bit + sequence number of the highest-numbered data message to the left + of the window for this connection; that is, the sequence number + identifying the highest-numbered of the sequence of consecutively + numbered (none missing) data messages which have been correctly + received over this connection. If no data messages have been + received since the connection was established, this field must + contain the value zero. This field is not used (i.e., may have + any value) in control messages. + + + + + + +McKenzie [Page 15] + +RFC 714 A Host/Host Protocol for an ARPANET-type Network April 1976 + + + Bits 101-104: Credit - This field contains a number in the range + 0-7. Adding this number (modulo 16) to the sequence number in the + acknowledgement field (bits 97-100) gives the highest sequence + number which the foreign Host is permitted to send over this data + connection. Thus, a value of zero in this field indicates that no + new data messages should be sent, and a value of seven indicates + that the foreign Host may send up to seven messages beyond the + message whose sequence number is specified by the acknowledgement + bits. Since flow control does not apply to messages sent over the + control connection, this field may have any value in control + messages. + + Bits 105 - ... : Text and padding - A sequence of 8-bit bytes of + text, followed by padding, as specified in BBN Report No. 1822. + + Index Assignment + + Index values must be assigned (in bits 65-72) as follows: + + Number Assignment + + 0 Identifies a control connection + + 1 Reserved for revisions to this protocol + + 2-191 Identify data connections + + 192-255 Reserved for expansion or for other protocols + + Sequence Number Assignment + + Every data message contains a sequence number in bits 73-76. The + sequence number is used by the receiver to detect the fact that a + transmitted message has been lost, to identify the correct + location in the data stream to insert a retransmitted (and + therefore probably out of order) message which was previously lost + (or to detect the retransmitted message as a duplicate) and to + identify acknowledged messages (or sequences of messages) to the + sender. The sequence number is also used by the flow control + mechanism. Since the IMP subnetwork itself contains elaborate + mechanisms to achieve these same goals, it is not anticipated that + the error-recovery mechanisms based on the sequence numbers will + be called into play frequently, and thus their efficiency is not + of primary importance. + + Sequence numbers are assigned to the two directions of a + connection independently. For a given direction of a connection, + the first data message transmitted after the connection is + + + +McKenzie [Page 16] + +RFC 714 A Host/Host Protocol for an ARPANET-type Network April 1976 + + + established must have sequence number one. Subsequent messages + are assigned sequentially increasing (modulo 16) sequence numbers; + that is, sequence number zero is assigned to the message following + message number 15. + + Sequence numbers are not assigned to control messages, since the + protocol is designed to permit these messages to be delivered + out-of-sequence without ill effect, and since flow control cannot + be applied to the control link. + + Control Messages + + Messages sent over the control connection have the same format as + other Host-to-Host messages, with the exceptions noted above. + However, control messages may not contain more than 120 8-bit + bytes of text. Further, control messages must contain an integral + number of control commands; a single control command must not be + split into parts which are transmitted in different control + messages. + + Message Transmission and Retransmission + + Control messages may be transmitted whenever they are required. + Data messages, however, may be transmitted only when permitted by + the flow control mechanism; that is, whenever the sequence number + assigned to the message is within the "window" for the appropriate + direction of the given connection. The "left window edge" (LWE) + is defined by the highest sequence number (modulo 16) which has + been acknowledged (or zero, if no messages have been + acknowledged). The "right window edge" (RWE) is defined by adding + (modulo 16) the most recently received credit to the left window + edge. [Note that LWE=RWE if the most recently received credit is + zero.] A message with sequence number SEQ may be transmitted only + if, prior to the (possible) reduction modulo 16 of the SEQ and/or + RWE, it is true that + + LWE less-than SEQ less-than-or-equal RWE + + Messages should be retransmitted whenever any of the following + conditions occur: + + - The IMP subnetwork has returned an "Incomplete transmission" + (type 9) or "Error in Data" (type 8) response to the message + (identified by having bits 41-76 of the response equal to those + bits of the transmitted message). Note that this condition + applies to control messages as well as data messages. + + + + + +McKenzie [Page 17] + +RFC 714 A Host/Host Protocol for an ARPANET-type Network April 1976 + + + - The sequence number of this message is equal to (LWE + 1), and + it has been more than 30 seconds since the message was last + transmitted. + + - The sequence number of the message is specifically identified in + a NACK command for this connection from the foreign Host. + + Since messages may occasionally have to be retransmitted, it is + clear that they should not be discarded by the transmitting NCP + until they have been acknowledged. A message is considered to be + acknowledged when its sequence number, or the sequence number of + any message to the right of it in the same direction of the given + connection, is returned in the acknowledgement field of a data + message transmitted in the other direction over this connection, + or is returned in an ACK command for this connection from the + foreign Host. + + Control Commands + + Control commands are formatted in terms of 8-bit bytes. Each + command begins with a one byte opcode. Opcodes are assigned the + sequential values 0, 1, 2, ... to permit table lookup upon + receipt. The conditions underlying the design and anticipated use + of the control commands are described in Section III. + + NOP - No Operation + + 8 + --------- + ! NOP ! + --------- + + The NOP command may be sent at any time and should be discarded by + the receiver. It may be useful for formatting control messages. + + RST - Reset + + 8 + --------- + ! RST ! + --------- + + The RST command is used by one Host to inform another that all + information regarding any previously existing connections between + the two Hosts should be purged from the NCP tables of the Host + receiving the RST. Except for responding to RSTs, the Host which + sent the RST should not communicate further with the other Host + until an RRP is received in response. When a Host is about to + + + +McKenzie [Page 18] + +RFC 714 A Host/Host Protocol for an ARPANET-type Network April 1976 + + + begin communicating (e.g., send an RFC command) to another Host + with which it has no open connections, it is good practice to + first send an RST command and wait for an RRP command. + + RRP - Reset Reply + + 8 + --------- + ! RRP ! + --------- + + The RRP command must be sent in reply to an RST command. + + RFC - Request for Connection + + 8 16 16 8 16 8 + --------------------------------------------------------- + ! RFC ! my-socket ! your-socket ! index ! size ! credit ! + --------------------------------------------------------- + + The RFC command is used to establish a connection. The "my- + socket" field specifies the socket local to the Host transmitting + the RFC; the "your-socket" field specifies the socket local to the + Host to which the RFC is transmitted. The "index" field specifies + the index value which will be given in bits 65-72 of each data + message sent from "my-socket" to "your-socket". The "size" field + specifies the maximum number of 8-bit bytes which may be + transmitted in any single message from "your-socket" to "my- + socket". The "credit" field specifies the size of the initial + sequence number window (in the range 0-7) in the "your-socket" to + "my-socket" direction. + + CLS - Close + + 8 16 16 + ----------------------------------- + ! CLS ! my-socket ! your-socket ! + ----------------------------------- + + The CLS command is used to terminate a connection. The connection + need not be completely established before CLS is sent. + + RCP - Re-Initialize Connection Parameters + + 8 16 16 8 + ------------------------------------------- + ! RCP ! my-socket ! your-socket ! index ! + ------------------------------------------- + + + +McKenzie [Page 19] + +RFC 714 A Host/Host Protocol for an ARPANET-type Network April 1976 + + + The RCP command is used by one Host to inform another that all + information regarding a possibly previously-existing connection + between "my-socket" and "your-socket" AND all information + regarding a possibly previously-existing connection identified by + "index" (between these Hosts) should be purged from the tables of + the Host receiving the RCP. The "my-socket", "your-socket", and + "index" fields are defined as in the RFC command. + + ACK - Acknowledgement + + 8 8 4 4 + --------------------------------- + ! ACK ! index ! seq ! crd ! + --------------------------------- + + The ACK command may be used to acknowledge received data, or to + assign credit, without sending a data message. The value in the + index field identifies the data connection which uses the same + index value (in the direction from the sender of the ACK to the + receiver of the ACK). The eight bits following the index field + (the "seq" and "crd" field) have the same meaning as bits 97-104 + of the data message identified by the index value. + + NACK -- Negative Acknowledgement + + 8 8 8 + -------------------------- + ! NACK ! index ! seq ! + -------------------------- + + The NACK command informs the receiver of the NACK that it should + immediately retransmit the data message identified by the + remaining fields. The index field is defined exactly as for the + ACK command. The "seq" field gives the 4-bit sequence number + (right-justified) which should be immediately retransmitted. Note + that the data message to be retransmitted does not have an index + value equal to "index", but instead is transmitted over the other + direction of the data connection which the Host sending the NACK + identifies by "index". No Host is ever required to transmit or + act upon a NACK command; however, use of the NACK may occasionally + permit a decrease in retransmission delay. + + INT - Interrupt + + 8 8 8 + ------------------------- + ! INT ! index ! seq ! + ------------------------- + + + +McKenzie [Page 20] + +RFC 714 A Host/Host Protocol for an ARPANET-type Network April 1976 + + + The INT command is sent over the control link to provide an "out- + of-band" (and hence not subject to flow control) signal for the + data connection denoted by the index field. The index value is + the value which would appear in bits 65-72 of a data message sent + from the sender of the INT command to the receiver of the INT + command. The means of synchronizing this signal with the data + being transmitted over the data connection is the inclusion of a + 4-bit sequence number (right-justified) in the "seq" field. The + number specified by this field denotes the first data message + which "follows" the out-of-band signal. + + ECO - Echo Request + + 8 8 + ------------------ + ! ECO ! data ! + ------------------ + + The ECO command is used only for test purposes. The data field + may be any bit configuration convenient to the Host sending the + ECO command. + + ERP - Echo Reply + + 8 8 + ------------------ + ! ERP ! data ! + ------------------ + + The ERP command must be sent in reply to an ECO command. The data + field must be identical to the data field in the incoming ECO + command. + + Opcode Assignment + + Opcodes are defined to be 8-bit unsigned binary numbers. The + values assigned to opcodes are: + + NOP = 0 + + INT = 1 + + RFC = 2 + + CLS = 3 + + ACK = 4 + + + + +McKenzie [Page 21] + +RFC 714 A Host/Host Protocol for an ARPANET-type Network April 1976 + + + NACK = 5 + + RCP = 6 + + RST = 7 + + RRP = 8 + + ECO = 9 + + ERP = 10 + + + + + + + + + + + + [ This RFC was put into machine readable form for entry ] + [ into the online RFC archives by Alex McKenzie with ] + [ support from BBN Corp. and its successors. 7/2000 ] + + + + + + + + + + + + + + + + + + + + + + + + + + +McKenzie [Page 22] + |