Comments on NWG/RFC 33 and 36
Suggestions to simplify connection handling in the proposed Host-to-Host protocol.
Shoshani, A., Long, R., and A. Landsberg, "Comments on NWG/RFC 33 and 36", RFC 44, DOI 10.17487/RFC0044, April 1970, <https://www.rfc-editor.org/info/rfc44>.
@misc{rfc44,
series = {Request for Comments},
number = 44,
howpublished = {RFC 44},
publisher = {RFC Editor},
doi = {10.17487/RFC0044},
url = {https://www.rfc-editor.org/info/rfc44},
author = {A. Shoshani and R. Long and A. Landsberg},
title = {{Comments on NWG/RFC 33 and 36}},
pagetotal = 3,
year = 1970,
month = apr,
} RFC text
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 ]
ISO Plain Language
On this page
§1Reconnection and Closing
The authors distinguish switching between two sockets at one host from reconnecting to a socket at a foreign host. They consider local switching useful and simple, while foreign reconnection is of uncertain value and needs an elaborate command mechanism.
They recommend leaving foreign reconnection out of the initial protocol and adding a local SWITCH system call. They also propose separate BLOCK and CLOSE commands because the proposed CLOSE command served both to block and abort a connection.
The authors recommend keeping the first version simpler by supporting local socket switching without foreign reconnection. They also want separate commands for blocking and closing a connection.
§2Links, Sockets, and Ports
Once a connection is established, the authors see no need to retain the foreign socket in a local connection table if a link number corresponds one-to-one with that socket. Most commands could then use the link number, saving a 40-bit foreign socket number in each table entry.
They note that foreign socket numbers would still be needed if connections were multiplexed over links. They also question whether ports add value when they correspond one-to-one with sockets.
A link number could replace a longer foreign socket number in most commands and table entries. The authors note that different connection arrangements could still require the socket number.
§3Three Open Design Choices
The memo lists three unresolved issues from a UCLA meeting: how to handle padding when a message does not end on a word boundary, whether to echo characters, and where character-code conversion should occur.
The authors prefer shifting the message leader to handle padding, no echoing because it should be managed locally, and a Network Common Code using all 256 characters of an 8-bit code. They suggest ASCII-8 initially, with later expansion according to network needs.
The authors state preferences for padding, character echoing, and a shared character code. These are proposals for discussion, not a final protocol specification.