Network Control Program

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search

The Network Control Program (NCP) provided the middle layers of the protocol stack running on host computers of the ARPANET, the predecessor to the modern Internet.

NCP preceded the Transmission Control Protocol (TCP) as a transport layer protocol used during the early ARPANET. NCP was a simplex protocol that utilized the users' email addresses, establishing connections, for all communications. An odd and an even port were reserved for the users' application layer application or protocol. The standardization of TCP and UDP reduced the need for the use of two simplex ports for each application down to one duplex port.[1]: 15 


NCP provided connections and flow control between processes running on different ARPANET host computers. Application services, such as the user's email and file transfer, were built on top of NCP, using it to handle connections to other host computers.

On the ARPANET, the protocols in the physical layer, the data link layer, and the network layer used within the network were implemented on separate Interface Message Processors (IMPs). The host usually connected to an 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). 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) accessed network services through an interface to the top layer of the NCP, a forerunner to the Berkeley sockets interface.

Stephen D. Crocker, then a graduate student at UCLA, formed and led the Network Working Group (NWG) and specifically led the development of NCP. Other participants in the NWG developed application level protocols such as TELNET, FTP, SMTP, among others.

Transition to TCP/IP[edit]

On January 1, 1983, in what is known as a flag day, NCP was officially 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 modern Internet.[2][3][4][5]


  1. ^ Stevens, W. Richard (1994). TCP/IP Illustrated Volume I. Vol. 1. Reading, Massachusetts, USA: Addison-Wesley Publishing Company. ISBN 0-201-63346-9.
  2. ^ Postel, J. (November 1981). "The General Plan". NCP/TCP transition plan. IETF. p. 2. doi:10.17487/RFC0801. RFC 801. Retrieved February 1, 2011.
  3. ^ Danesi, Marcel (2013). Encyclopedia of Media and Communication. University of Toronto Press. ISBN 9781442695535.
  4. ^ "Marking the birth of the modern-day Internet". Google Official Blog. 1 January 2013. Retrieved 19 September 2015.
  5. ^ "Internet celebrates 40th birthday: but what date should we be marking?". The Telegraph. 2 September 2009. Retrieved 19 September 2015.

Further reading[edit]

  • BBN (May 1978). "Interface Message Processor -- Specifications for the Interconnection of a Host and an IMP". BBN Report 1822. Bolt, Beranek, and Newman, Inc. {{cite journal}}: Cite journal requires |journal= (help)
  • Postel, Jon; Feinler, E. (1978). ARPANET Protocol Handbook. Menlo Park, CA: Network Information Center, SRI International.
    • A. McKenzie; J. Postel (October 1977). "Host-to-Host Protocol for the ARPANET". NIC #8246. Network Information Center. {{cite journal}}: Cite journal requires |journal= (help)
    • (now offline, but a later version, which is almost identical to the original version, can be found here)
    • J. Postel (June 1971). "Official Initial Connection Protocol". NIC #7101. UCLA-NMC. {{cite journal}}: Cite journal requires |journal= (help)
    • (this does not seem to be online, but an early version, which is almost identical to the final version, can be found here)
  • Crocker, S. (16 March 1970). Protocol Notes. Network Working Group (now IETF). doi:10.17487/RFC0036. RFC 36.