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.