RFC 151 UNKNOWN TRANSPORT · PROTOCOL

Comments on a proffered official ICP: RFCs 123, 127

Comments on protocol design issues in the Initial Connection Protocol

On rfc-editor.org ↗
PUBLISHED
May 1971
AUTHORS
A. Shoshani
STREAM
Legacy
BUILDS ON
RFC 127 — Comments on RFC 123
DOI
10.17487/RFC0151

RFC text

Contents
Original text · RFC Editor View on rfc-editor.org ↗
NWG/RFC # 151                                                 A. Shoshani
                                                              SDC
NIC #6755                                                     May 10, 1971




                   COMMENTS ON A PROFERRED OFFICIAL ICP
                             (RFCs 123, 127)





Bob Long at SDC noticed that the order in which messages go out to the
network depend on the local NCP. In particular commands may be given
priority over data and therefore in the sequence specified for server in
RFC 123 (top of Page 3), the last two INIT commands may go out before the
data = S on socket = L is sent.  (This is the case in the current
implementation of SDC's NCP.) The implication is that the user's NCP should
be prepared to keep the INIT's it received from the server until the user
process gets the data = S and issues two INITs in response.

This case is brought up now so that people will think about it before the
Atlantic City meeting and comment whether their NCP can tolerate it. It may
be necessary to make it explicit in the ICP that the two INITs sent by the
server should go out only after the data = S is sent, or even after the
user process acknowledges its receipt.

I have a more general remark about the ICP. This is a third level protocol
and therefore should not alter or ignore procedures of the second level
protocol (Host-Host protocol). In particular three remarks seem
appropriate:

1. In RFC 123 (bottom of Page 2) it is suggested that the byte size for the
   connection to the server socket L is 32. However, in the modifications
   to second level protocol (RDC 107) it is specified that it is up to the
   sending process to chose the byte size. According to the Host-Host
   protocol, NCPs should be prepared to accept messages in any byte size
   (1<= size <=255);  therefore there is no need to impose a size of 32 in
   this case.  Furthermore, since it is up to the sender to choose the byte
   size, some Hosts may choose a particular byte size (for simplicity and
   convenience) and their NCP may not be geared to transmit in an imposed
   byte size.

2. In RFCs 66 and 80, an ALL is expected on the connection to the server
   socket before data can be sent. In RFCs 123 and 127 the ALL requirement
   disappeared.  But the ALL is a Host-Host protocol requirement and not
   requiring it creates special case. A particular NCP implementation may
   cause the ALL to be sent internally when a connection is created,
   without the user process having control of it. Relaxing this requirement
   will create a special case for the receiving NCP not to send the ALL and
   for the sending NCP to send the data = S without first receiving an ALL.

3. In RFC 127, I disagree with the comment "send 32 bits of data in one
   message" because it is a second level protocol decision that a message
   can be sent in any size pieces and the size is to be specified through
   the ALL mechanism. In particular, there may be hosts which are not
   prepared to accept more than few bytes at a time (TIPs).

In general we should not make second level decisions in a third level
protocol.






        [ This RFC was put into machine readable form for entry ]
        [ into the online RFC archives by BBN Corp. under the   ]
        [ direction of Alex McKenzie.                   12/96   ]

AI ELI5

On this page
PROBLEMAri Shoshani at SDC noticed that the Initial Connection Protocol (RFC 123, 127) had issues with message ordering, byte size assumptions, and mixing of protocol layers that could cause interoperability problems.
MECHANISMShoshani documented three specific concerns: (1) message priority could cause initialization commands to arrive out of order, (2) the protocol mandated a 32-bit byte size that not all hosts could support, and (3) the protocol was making second-level Host-Host protocol decisions.
DESIGN FEEDBACKThis feedback highlighted the need for careful consideration of implementation differences across network sites and proper separation between protocol layers.

§1Protocol Design Concerns

RFC 151 contains Ari Shoshani's critical comments on RFCs 123 and 127, which together proposed an official Initial Connection Protocol (ICP). Shoshani updates RFC 127, raising issues discovered during protocol review at SDC's NCP implementation.

The core problem: the sequence in which messages appear on the network depends on each site's local Network Control Program implementation, which can differ significantly. Commands might be sent before expected data, breaking protocol assumptions.

Different computers organize their messages in different ways. One computer might send commands before data, which breaks the protocol that expects data first.

§2Mixing Protocol Layers

Shoshani identifies three problems that violate the separation between the second-level Host-Host protocol and the third-level ICP. First, RFC 123 mandates a 32-bit byte size for server socket L, but the Host-Host protocol says the sender chooses the byte size (1 to 255 bits). Second, earlier RFCs required an ALL (allocation) before data transmission, but this requirement was removed in RFCs 123 and 127, creating a special case that some NCP implementations cannot handle. Third, comments about sending 32 bits in one message are a second-level decision that should not appear in a third-level protocol.

These violations create implementation headaches. For example, TIPs and other specialized hosts may not be prepared to receive or transmit messages in specific byte sizes.

The protocol is trying to control low-level details that each computer should decide for itself. This means some computers cannot use the protocol.

§3Implications for Implementation

Shoshani's feedback emphasizes that a third-level protocol should work with whatever the second level provides, not impose new restrictions. This is especially important for diverse hardware like TIPs, which have limited capabilities.

The protocol should remain flexible about byte sizes, message ordering, and low-level transmission details. Protocol designers need to think carefully about these implementation details before finalizing specifications.

The protocol should be flexible enough to work with different types of computers, including small weak ones.

§4References