RFC 55 (rfc55) - Page 2 of 23


Prototypical implementation of the NCP



Alternative Format: Original Text Document



RFC 55             Prototypical Implementation of NCP          June 1970


II. Environment

   We assume that the host will have a time-sharing operating system in
   which the CPU is shared by processes.

   We envision that each process is tagged with a user number.  There
   may be more than one process with the same user number; if so, they
   should all be cooperating with respect to using the network.

   We envision that each process contains a set of ports which are
   unique to the process.  These ports are used for input to or output
   from the process, from or to files, devices, or other processes.

   We also envision that a process is not put to sleep (i.e., blocked or
   dismissed) when it attempts to LISTEN or CONNECT.  Instead it is
   informed when some action is complete.  Of course, a process may
   dismiss itself so that it wakes up only on some external event.

   To engage in network activity, a process attaches a local socket to
   one of its ports.  Sockets are identified by user number, host and
   AEN; a socket is local to a process if the user numbers of the two
   match and they are in the same host.  Thus, a process need only
   specify an AEN when it is referring to a local socket.

   Each port has a status which is modified by system calls and
   concurrent events outside the process (e.g., a 'close connection'
   command from a foreign host).  The process may look at a port's
   status as any time (via the STATUS system call).

   We assume a one-to-one correspondence between ports and sockets.

III. System Calls

   These are typical system calls which a user process might execute.

         We use the notation

                  SYSCALL (ARG1, ARG2....)

         where
                  SYSCALL is the name of the system call
         and
                  ARGk, etc. are the parameters of the system call.








Newkirk, et al.