RFC 689 (rfc689) - Page 2 of 5
Tenex NCP finite state machine for connections
Alternative Format: Original Text Document
The components of a finite state machine (FSM) are States, Events, and Actions. These are listed below: States Events Actions 01 CLZD 00 RRFC 00 ANOP 02 PNDO 01 CLSR 01 AFNY 03 LSNG 02 CLSS 02 ACLS 04 RFCR 03 CLZR 03 ARFC 05 CLW1 04 CLZS 04 AOPB 06 RFCS 05 ACPT 05 AOPL 07 OPND 06 CONN 06 ACLL 10 CLSW 07 LISN 07 ACLO 11 DATW 10 RRFN 10 AEOR 12 RFN1 11 TIME 11 AEOS 13 CLZW 12 RRFB 12 AES1 16 FREE 13 AABT 14 ACKA Note that there are two kinds of "close" events and actions: a close at the JSYS level (CLOSF) and one at the host-to-host protocol level (CLS). The names in the above list contain "CLS" if they are concerned with host-to-host CLS, and CLZ if the are concerned with CLOSF. Each state will be briefly described below, along with events which may occur while a connection is in that state, and actions which are taken as the state is advanced. A few overall notes: Actions are shown on the state diagram following a "/''. Any transition without an action shown generates "ANOP", a null action. The action "AFNY" means a "funny" event (i.e., one not expected in this state -- probably a bug) has occurred. The result of this action is an IMPBUG error printout. Any event NOT shown on the state diagram causes the state to loop back to itself and an AFNY to be generated. These are not shown explicitly on the diagram. Another "funny" event is the execution of an "accept" MTOPR by the user program when the state is not RFCR. However, an errant user program can do this, and no IMPBUG should be generated as a result, so most states show a loop to self with no action (i.e., an "ANOP") as a result of the ACPT event. The event "TIME" (also called "HUNG") simply means that the socket has not changed state for a specified time interval and may need to be prodded along. This time is currently two minutes, except for connections in error states where the FSM is stepped faster to clear the connection out. State 16 - FREE - Free connection A connection in this state has never existed, or is almost completely deleted. No events are expected in this state except a program CLOSF (events CLZR or CLZS), or an erroneous Accept. The Accept causes an error status bit to be set (AABT - Action: abort). A connection leaves the FREE state by the creation of a socket. This can be the result of a user OPENF or an incoming RFC. This causes the connection TENEX NCP Finite State Machine for Connections



