Protocols and Data Formats
RFC 80

Document Type RFC - Unknown (December 1970; No errata)
Obsoleted by RFC 123
Updated by RFC 93
Updates RFC 66
Last updated 2013-03-02
Stream Legacy
Formats plain text pdf html bibtex
Stream Legacy state (None)
Consensus Boilerplate Unknown
RFC Editor Note (None)
IESG IESG state RFC 80 (Unknown)
Telechat date
Responsible AD (None)
Send notices to (None)
Network Working Group                                         E. Harslem
Request for Comments: 80                                      J. Heafner
NIC: 5608                                                           RAND
                                                         1 December 1970

                       PROTOCOLS AND DATA FORMATS

   Because of recent discussions of protocols and data formats we issue
   this note to highlight our current attitudes and investigations in
   those regards.  We first discuss some specific sequences, and then
   offer some thoughts on two general implementation approaches that
   will handle these and other specifics.  We wish to place emphasis on
   the _general solutions_ and not on the specifics.


   We wish to make two points concerning specific Initial Connection
   Protocols (IPCs).  Firstly, the IPC described in NEW/RFC #66--its
   generality and a restatement of that ICP.  Secondly, a proposal for a
   variant ICP using basically the same logic as NWG/RFC #66.

I. NWG/RFC #66

   The only technical error in this IPC is that as diagrammed both the
   Server and User send ALL messages before the connections are
   established which is inconsistent with Network Document No. 1.  This
   can easily be remedied as will be shown in the restatement below.

   In terms of generality, any ICP that is adopted as a standard should
   apply to more situations than a process calling a logger.  That is,
   some Network service processes that hook directly to a user process,
   independent of logger action, could perhaps use a standard ICP.
   Thus, as is shown below, the process name field of the server socket
   should be a parameter with a value of zero being a special case for

   Restatement of NWG/RFC #66 (using the same wording where appropriate)

      1. To initiate contact, the using process attaches a receive
         socket (US) and requests connection to process SERV socket #1
         in the serving HOST.  (SERV = 0 for ICP to the logger.)  As a
         result the using NCP sends:

Harslem, et. al.                                                [Page 1]
RFC 80                 Protocols and Data Formats        1 December 1970

            1              4                 3          1     1
         | RTS |          US         |      SERV     |  1  |  P  |

         over link 1, where P is the receive link.

      2. The serving process (SERV) may decide to refuse to the call, in
         which case it closes the connection.  If it accepts the call,
         the serving process completes the connection (via an INIT
         system call, hence an STR).

            1           3          1            4
         | STR |      SERV      |  1  |         US         |

      3. When the connection is completed, the user process allocates a
         nominal amount of space to the connection, resulting in the NCP

            1     1            4
         | ALL |  P  |       SPACE        |

         where SPACE is the amount.

      4. The serving process then selects the socket pair it wishes to
         assign this user.  It sends exactly an even 32 bit number over
         the connection.  This even 32 bit number (SS) is the receive
         socket in the serving HOST.  This socket and the next higher
         numbered socket are reserved for the using process.

      5. It then closes the connection.  The serving NCP sends (step 4):

         |         SS          |

         on link P, and (step 5):

Harslem, et. al.                                                [Page 2]
RFC 80                 Protocols and Data Formats        1 December 1970

            1            3         1             4
         | CLS |       SERV     |  1  |         US         |

         on the control link (which is echoed by the using NCP).

      6. Now that both server and user are aware of the remote socket
         pair for the duplex connection, <STR, RTS>s can be exchanged.

         _Sever sends User_

            1            4                     4
         | STR |      SS + 1        |          US        |
         | RTS |         SS         |        SS + 1      | Q |
Show full document text