RFC 123

Proffered Official ICP

πŸ“… published April 1971, from ietf

A Proferred Official ICP ✨

  • Request for Comments: 123 πŸŽ€
  • Network Working Group 🌸, written by S. Crocker from UCLA
  • NIC #5837, dated 20 April 71 πŸ“…
  • Categories: D.1 πŸ’œ
  • Obsoletes: RFCs 66, 80 πŸ™ˆ
  • Updates: RFCs 98, 101 πŸ¦‹

Okay so, an Initial Connection Protocol (ICP) is giving third level protocol energy πŸ’…. By ICP, I mean a third level protocol that a user process at one site starts in order to contact a server process at another site. Typically the user process will be a Telnet and the server process will be a logger, but there may be other cases ✨.

In this RFC I'm trying to describe a whole family of ICPs that can set up one pair of connections (one in each direction) between any user process and any server process. Then I'm going to propose one particular subset of that family as the standard ICP for hooking user processes up to loggers on systems that accept teletype-like devices 🧚.


Notation πŸ“

We have no standard notation for describing system calls that open and close connections or send data, so I'm gonna use my own ad hoc notation, no cap πŸ’–.

Init (local = l, foreign = f, size = s)

This causes the local Host to try to set up a connection between socket l at the local Host and socket f, with a byte size of s for the connection.

  • l is a 32 bit local socket number,
  • f is a 40 bit foreign socket number, the high-order eight bits of which specify the foreign Host, and
  • s is an eight bit non-zero byte size.

The sum of l and f must be odd πŸ”₯.

Listen (local = l, size = s)

This causes the local Host to wait for a connection request to local socket l with byte size s. The process gets woken up when a connection is established. The parameters l and s are the same as for Init 🌈.

Send (socket = l, data = d)

The data named by d goes out over the connection attached to local socket l. l must be a send socket attached to a connection. d is the name of a data area 🫢.

Receive (socket = l, data = d)

This is the receive side counterpart to Send πŸ’œ.

Close (socket = l)

Any connection currently attached to a local socket l gets closed πŸšͺ.


A Family of ICPs πŸ‘‘

Here's the quick version. A server process at a site attaches a well-advertised send socket L and starts listening πŸ‘‚. A user process starts a connection to L from its receive socket U. The byte size for this connection is 32. The server process then sends a 32-bit even number S and closes the connection. The 32-bit number S and its successor, S+1, are the socket number the server will use. The last steps are for sockets S and S+1 at the server site to get connected to sockets U+1 and U respectively at the user site πŸŽ€.

Using the notation, the server runs this sequence:

   Listen (socket = L, size = 32)
   [Wait until a user connects]
   Send (socket = L, data = S)
   Close (socket = L)
   Init (local = S, foreign = U+1, size = Bu)
   Init (local = S+1, foreign = U, size = Bs)

And the user runs this one:

   Init (local = U, foreign = L, size = 32)
   Receive (socket = U, data = S)
   Close (socket = U)
   Init (local = U+1, foreign = S, size = Bu)
   Init (local = U, foreign = S+1, size = Bs)

Note that L is a send socket (odd), while S and U are receive sockets (even) 🌸. When L, S or U are used as values of local, they are 32-bit numbers. When they're values of foreign, they are 40-bit numbers. The parameters Bs and Bu are the byte sizes to be sent by the server and user, respectively πŸ’….

Looking at the sequences above, an ICP is characterized by the three numbers L, Bs and Bu, and it must meet these restrictions:

  • (a) L is a send socket,
  • (b) Bs and Bu are legal byte sizes, and
  • (c) for each L there is only one pair of associated byte sizes.

This last restriction stops two distinct services from being available through the same socket and only being told apart by their byte sizes. Not it πŸ™…β€β™€οΈ.


Telnet ICP πŸ’–

For connecting teletype-like users (interactive and ASCII) to Hosts that serve those users, I propose an ICP of the form described above, characterized by L = 1 and Bs = Bu = 8. [There has been some confusion about socket numbers. Here I specifically mean L = X00000001] πŸ€“


Formalities πŸŽ€

I propose that the Telnet ICP be made official. Comments should be published before the May NWG meeting. The subject will be discussed there, and we'll decide there whether to accept or reject this protocol πŸ”₯.

[ This RFC was put into machine readable form for entry into the online RFC archives by Jeff Sorte 5/97 ] πŸ¦‹

πŸ“¦ where this page comes from