RFC 44 UNKNOWN ARPANET · HOST PROTOCOL

Comments on NWG/RFC 33 and 36

SDC suggests simplifying reconnection, splitting CLOSE in two, and settling padding, echoing and a common code.

On rfc-editor.org ↗
PUBLISHED
April 1970
AUTHORS
A. Shoshani, R. Long, A. Landsberg
STREAM
Legacy
BUILDS ON
RFC 36 — Protocol Notes
FOREIGN SOCKET NUMBER SIZE
40 bits
COMMANDS IN RFC 36 FOR CASE 2
4 of 9
COMMON CODE SIZE
256 characters (8-bit code)
DOI
10.17487/RFC0044

RFC text

Original text · RFC Editor View on rfc-editor.org ↗
Network Working Group                                        A. Shoshani
Request for Comments: 44                                         R. Long
                                                            A. Landsberg
                                          System Development Corporation
                                                           10 April 1970


                     Comments on NWG/RFC 33 and 36

   Generally, we are satisfied with the suggestions for the new Host-
   to-Host protocol.  However, we think that a few refinements may be
   helpful.

   I.   It seems that there are two cases of reconnection:

     1. Reconnect from a socket in a local Host to another socket in the
        local Host.  This was referred to in RFC #33 as "switch".  The
        local sockets can belong to different processes (such as the
        "Login" process switching a connection to another process just
        created) or can belong to the same process (such as a process
        that accepts calls for connections on a particular socket, and
        after a connection is established switches to another of his
        sockets).

     2. Reconnect from a socket at a local Host to a socket in a foreign
        Host.

     We suggest separation of these two cases for the following reasons:
     a) Reconnection in Case 1 is necessary and useful, while the
        usefulness of Case 2 is still in doubt.

     b) Case 1 is simple to implement (at least conceptually) while Case
        2 involves an elaborate mechanism of commands because of the
        asynchronous nature of the network (four out of nine commands
        were suggested to handle Case 2 in RFC #36).

     Thus we think that at least in the first usage of the Host-to-Host
     protocol reconnection in Case 2 should be left out.  An additional
     system call (not a command) is therefore needed to permit Case 1,
     which is SWITCH <socket 1> <socket 2>.

   II.  The CLOSE command as suggested in RFC #36 seems to be used for
        two purposes: block a connection and abort a connection.  To
        avoid ambiguity it would be desirable to have two commands:
        BLOCK and CLOSE.  As suggested in RFC #36, the response for both
        commands can be the SUSPEND command which acknowledges the
        reception of BLOCK or CLOSE commands.

   III. After a connection has been established, we see no reason for
        keeping the "foreign socket" in a local connection table.  Since
        there is a one-to-one correspondence between a link number of
        the foreign Host and a foreign socket number, we can use the
        link number in the commands.  Thus, except for the RFC command,
        all commands can use link numbers and therefore eliminate a 40-
        bit foreign socket number in every entry of the connection table
        (size being critical for some Hosts).  We note that if
        connections will be multiplexed over links as suggested in RFC
        #38, then the foreign socket would be needed in the connection
        table.

   IV.  In RFC#33 the term PORT was introduced.  Although this is
        private to every Host, we have a comment.  If ports are used
        such that there is a one-to-one correspondence between a port
        for some user and a socket, then ports are completely redundant.
        However, a Host may wish to multiplex ports over connections, in
        which case an additional mechanism is needed.

   To summarize the last four comments, we suggest that in the initial
   version the following system calls and commands will be used (most of
   them in RFC 33 and 36).

   System Calls:
   1) INITIATE <my socket> <your socket>
   2) ACCEPT  <my socket>
   3) SWITCH <socket 1> <socket 2>
   4) LISTEN <my socket>
   5) CLOSE <my socket>
   6) TRANSMIT <my socket> <address>

   Commands:
   Commands 0, 1, 3, 4 as in RFC #36 (pp.5) and in addition:
   1) BLOCK: BLK <link>
   2) CLOSE: CLS <link>

   V.   In addition to the above it seems necessary to decide on the
        following issues one way or the other together with the first
        version of the protocol (perhaps by setting a date for people to
        express their preferences and decide accordingly).  All of these
        issues were mentioned in the meeting at UCLA on March 17, 1970,
        but were put aside.

        1. "Double padding" - when a message does not end on a word
           boundary.  Two possible solutions were mentioned:

           a) Hosts provide their padding in addition to the IMP's
              padding (double padding).

           b) Hosts make sure that all messages end on a word boundary
              by shifting their messages (when necessary) and adjusting
              the "marking" accordingly.

        2. "Echoing" - there are three apparent possibilities:
           a) Echoing
           b) No echoing
           c) Optional Echoing - possibly a bit in the "Leader" can be
              used to designate this option.

        3. "Code Conversion" - originally, BB&N suggested doing the
           conversion in the IMPs  using ASCII-8 as the common code.
           This was rejected, mainly because of claims that ASCII-8 is
           not large enough for some uses, such as graphics.  Also
           conversion in the IMPs may slow them down and take up space
           which could be used for buffers.  We feel that it is very
           desirable to have a common code (even when the conversion is
           not done by the IMPs), such that all incoming text messages
           are in the same code and only one conversion table is needed.
           Outgoing text messages should be converted into this common
           code.  Obviously, the option "no translation" should be
           possible for the purpose of binary data or data that is not
           representable in the common code.  Since every known code can
           be considered to be too restrictive for some purposes, we
           suggest adopting a Network Common Code (NCC), and use all of
           the 256 possible characters (for 8-bit code) to include the
           "important" part of the union of the codes used throughout
           the network.

   VI.   Our preference to the above issues is as follows:
        a) "Double padding" -it turns out to be easy for us to get our
           messages to be sent on a word boundary by shifting the leader
           of a message (and adjusting the "marking" accordingly) rather
           than the data.  Thus we will prefer solution V.1.b).
        b) "Echoing" - we prefer no echoing.  We think that character
           echoing should be managed locally.
        c) "Code Conversion" we prefer a Network Common Code.
           Initially, ASCII-8 can be used, and then expanded according
           to the needs of the Network.


       [ This RFC was put into machine readable form for entry ]
      [ into the online RFC archives by Alison De La Cruz 12/00 ]

AI ELI5

On this page
PROBLEMThe proposed Host-to-Host protocol in RFC 33 and RFC 36 left some ambiguities and some costly features, such as reconnection to foreign sockets and a CLOSE command doing two jobs.
MECHANISMThe authors propose a local-only SWITCH call, separate BLOCK and CLOSE commands, link numbers instead of foreign socket numbers in commands, and a list of issues to decide.
WHY IT MATTERSThey also state preferences: Hosts avoid double padding by shifting message leaders, no echoing, and a Network Common Code starting from ASCII-8.

§1Comments on Reconnection and Closing

A. Shoshani, R. Long and A. Landsberg of System Development Corporation write on 10 April 1970 that they are generally satisfied with the suggestions for the new Host-to-Host protocol, but that a few refinements may help.

They split reconnection into two cases: switching from one local socket to another local socket, which RFC 33 called a "switch", and reconnecting to a socket in a foreign Host. Case 1 is necessary and simple. Case 2 is of doubtful use and needs an elaborate set of commands, since four out of nine commands in RFC 36 handle it. They suggest leaving Case 2 out at first and adding a system call, SWITCH <socket 1> <socket 2>.

They also find that CLOSE in RFC 36 is used both to block a connection and to abort one, so they propose two commands, BLOCK and CLOSE. Both can be acknowledged with the SUSPEND command.

Switching between your own doors is easy and useful, but switching to someone else's house is hard, so skip that for now. Also, one button should not do two different jobs.

§2Link Numbers and Ports

Once a connection exists, there is no need to keep the foreign socket in the local connection table. Because a link number of the foreign Host corresponds one-to-one with a foreign socket number, commands other than the RFC command can use link numbers. That removes a 40-bit foreign socket number from every entry, which matters because table size is critical for some Hosts. If connections are multiplexed over links, as suggested in RFC 38, the foreign socket would be needed again.

On the term PORT, introduced in RFC 33: if a port maps one-to-one to a socket, ports are redundant. A Host that multiplexes ports over connections would need an additional mechanism.

The initial system calls they list are INITIATE, ACCEPT, SWITCH, LISTEN, CLOSE and TRANSMIT. The commands are commands 0, 1, 3 and 4 of RFC 36 plus BLK <link> and CLS <link>.

If you already have a numbered lane to your friend, you do not need to write out their long name every time. Just use the lane number.

§3Open Issues from the UCLA Meeting

Three issues raised at the UCLA meeting on March 17, 1970 were put aside, and the authors want them decided with the first version of the protocol, perhaps by setting a date for people to state preferences.

  • Double padding: when a message does not end on a word boundary, either Hosts add their padding on top of the IMP's padding, or Hosts shift messages so they end on a word boundary and adjust the marking.
  • Echoing: echoing, no echoing, or optional echoing, possibly using a bit in the Leader.
  • Code conversion: BB&N first suggested converting in the IMPs using ASCII-8 as the common code. That was rejected because ASCII-8 may be too small for uses such as graphics and conversion may slow the IMPs and use space meant for buffers.

The authors favour a Network Common Code (NCC) using all 256 characters of an 8-bit code, with a "no translation" option for binary data.

There were three leftover arguments: how to fill empty space at the end of a message, whether to repeat typed letters back, and which shared alphabet to use.

§4The Authors' Preferences

For double padding, they prefer solution V.1.b: it is easy for them to shift the leader of a message rather than the data, so messages go out on a word boundary.

For echoing, they prefer no echoing, because character echoing should be managed locally. For code conversion, they prefer a Network Common Code, where ASCII-8 can be used initially and then expanded according to the needs of the network.

They end by picking their favourite answer to each leftover argument.

§5References