The ARPANET Network Control Program (NCP) provided the middle layers of the protocol stack running on an ARPANET host computer. (Sometimes the abbreviation NCP is mistakenly expanded to Network Control Protocol, but this term is not found in the contemporary documentation.)
NCP provided connections and flow control between processes running on different ARPANET host computers. Application services, like e-mail or file transfer, were built on top of NCP, using it to handle connections to other host computers.
On the ARPANET, the physical layer, the data link layer, and the network layer protocols used internally to the network were implemented on separate Interface Message Processors, called IMPs. The host usually connected to the IMP using another kind of interface, with different physical, data link and network layer specifications. The IMP's capabilities were specified by the Host/IMP Protocol in BBN Report 1822.
Since lower protocol layers were provided by the IMP-host interface, NCP essentially provided a transport layer consisting of the ARPANET Host-to-Host Protocol (AHHP) and the Initial Connection Protocol (ICP). The AHHP defined procedures to transmit a unidirectional, flow controlled data stream between two hosts. The ICP defined the procedure for establishing a bidirectional pair of such streams between a pair of host processes. Application protocols (e.g. FTP, SMTP, etc.) accessed network services through an interface to the top layer of the NCP, a forerunner to the Berkeley sockets interface.
On January 1 1983, known as flag day, NCP was rendered obsolete when the ARPANET changed its core networking protocols from NCP to the more flexible and powerful TCP/IP protocol suite, marking the start of the Internet as we know it today.