Difference between revisions of "Network Control Protocol"

From Computer History Wiki
Jump to: navigation, search
(External links: Two editions of ARPANET Protocol Handbook from National Technical Reports Library.)
m (Further reading: Include archived copy)
 
(6 intermediate revisions by the same user not shown)
Line 1: Line 1:
The '''Network Control Program''', canonically abbreviated to '''NCP''' (which people often, but incorrectly, think stands for 'Network Control Protocol'), is the [[transport protocol]] run between [[host]]s connected to the [[ARPANET]], prior to the introduction of [[TCP/IP]].
+
The '''Network Control Protocol''', a later [https://en.wikipedia.org/wiki/Backronym backronym] of the old acronym [[NCP]] (which changed its meaning over time; it originally stood for [[Network Control Program (ARPANET)|Network Control Program]], a somewhat different meaning), is the [[protocol suite]] originally created for use in the then-new [[ARPANET]], prior to the later creation and introduction of [[TCP/IP]].
  
Since then, many other networking software systems were also called NCP; the modern equivalent would be [[protocol stack|network stack]].
+
NCP was disabled in the ARPANET on January 1, 1983 (by blocking use of [[Host-to-IMP Protocol#Links|link]] 0), to force conversion to TCP/IP. (Technically, a few mission-critical sites which did not have their TCP/IP software working yet could get ''temporary'' 'stays of execution', but basically NCP was turned off on January 1.)
 +
 
 +
Since then, other networking software systems were also called 'Network Control Protocol'.
  
 
==Details==
 
==Details==
  
NCP provides uni-directional [[reliable byte stream]]s, called 'connections', used by [[application]]s to talk to each other (usually a pair of connections, one in each direction). It runs over the [[Host-to-IMP Protocol]], and consists of two semi-separate protocols:
+
NCP provides uni-directional [[reliable byte stream]]s, called 'connections', used by [[application]]s to talk to each other (usually a pair of connections, one in each direction). It runs over:
 +
 
 +
* [[1822 interface|1822]]/[[VDH]] at the bottom, to transfer bits/'messages' (ARPANET jargon for [[packet]]s) between the [[host]] and its local [[Interface Message Processor|IMP]]
 +
* on top of that, the [[Host-to-IMP Protocol]], to transfer messages between the local host and a distant host
 +
 
 +
The top layer consists of two semi-separate protocols:
  
 
* Initial Connection Protocol (ICP)
 
* Initial Connection Protocol (ICP)
Line 12: Line 19:
 
The connection was identified by a 'socket' at each end, along with the [[Host-to-IMP Protocol#Host addresses|addresses]] of the two hosts; socket numbers were 32 bits long. Only one connection was permitted to each socket at any host.
 
The connection was identified by a 'socket' at each end, along with the [[Host-to-IMP Protocol#Host addresses|addresses]] of the two hosts; socket numbers were 32 bits long. Only one connection was permitted to each socket at any host.
  
However, sockets did not appear in [[packet]]s; instead, [[Host-to-IMP Protocol#Links|links]] were used. When a connection was set up, between one host/socket to another, it used a particular link, specified by the receiver, and no other connection could use that link until the connection was closed.
+
However, sockets did not appear in messages; instead, links were used. When a connection was set up, between one host/socket to another, it used a particular link, specified by the receiver, and no other connection could use that link until the connection was closed.
  
Links were like [[virtual circuit]]s in their properties, in that packets sent on one were received reliably (although there was an error message when that didn't happen) and in order at the other end of the link, but they had no open/close - a host just started using a link.
+
Links were like [[virtual circuit]]s in their properties, in that packets sent on one were received reliably (although there was an error message to the host from its IMP when that didn't happen) and in order at the other end of the link, but they had no open/close - a host just started using a link.
  
 
One link, 0, was special - it was the 'control link'. All messages involved in opening and closing a connection were sent over the control link - only data messages belonging to a connection went over a connection's link.
 
One link, 0, was special - it was the 'control link'. All messages involved in opening and closing a connection were sent over the control link - only data messages belonging to a connection went over a connection's link.
Line 22: Line 29:
 
The protocol family was updated slightly over its lifetime.
 
The protocol family was updated slightly over its lifetime.
  
* In late 1975 the 1822 leader was expanded from 32 bits to 96.  Among other things, this allowed addressing more network nodes. The old format was still supported, but was limited to the original number of nodes.
+
* In late 1975 the 1822 leader was expanded from 32 bits to 96.  Among other things, this allowed addressing more network nodes. The old format was still supported, but was limited to the original number of nodes.
  
 
* The handling of the [[Host-to-IMP Protocol#Packet Types (Host->IMP)|RFNM]] [[flow control]] was improved.  <!-- Please add more details. -->
 
* The handling of the [[Host-to-IMP Protocol#Packet Types (Host->IMP)|RFNM]] [[flow control]] was improved.  <!-- Please add more details. -->
  
==Implementations==
+
==See also==
 
 
{| class="wikitable"
 
! Operating System
 
! Status
 
! Site
 
! Machine
 
|-
 
| [[ITS]]
 
| '''Preserved'''
 
| [[MIT]]
 
| [[DEC]] [[PDP-10]]
 
|-
 
| [[WAITS]]
 
| '''Preserved'''
 
| [[SAIL]]
 
| DEC PDP-10
 
|-
 
| [[TENEX]]
 
| '''Preserved'''
 
| [[BBN]] and ''many'' more
 
| DEC PDP-10
 
|-
 
| [[Unix V6]]
 
| '''Preserved'''
 
| University of Illionis
 
| DEC [[PDP-11]]
 
|-
 
| [[ELF]]
 
| '''Preserved'''
 
| ''Many.''
 
| DEC [[PDP-11]]
 
|-
 
| [[RISOS/ARPA Terminal System|RATS]]
 
| '''Preserved'''
 
| LLL
 
| DEC [[PDP-11]]
 
|-
 
|
 
| '''Preserved'''
 
| Hawaii
 
| [[BCC 500]]
 
|-
 
| SEX
 
| Lost
 
| UCLA
 
| [[Scientific Data Systems|SDS]] Sigma 7
 
|-
 
| [[OS/360]]
 
| ?
 
| UCLA
 
| [[IBM]] [[System/360]]
 
|-
 
| CP/CMS
 
| ?
 
| Lincoln Labs
 
| IBM System/360
 
|-
 
| TSS/360
 
| ?
 
| NASA Ames
 
| IBM System/360
 
|-
 
| [[Multics]]
 
| Maybe
 
| MIT
 
| GE 600, [[Honeywell 6000 series]]
 
|-
 
| [[TOPS-10]]
 
| Maybe
 
| ''Many''
 
| DEC PDP-10
 
|-
 
| [[TOPS-20]]
 
| Maybe
 
| ''Many''
 
| DEC PDP-10
 
|-
 
| ?
 
|
 
| London
 
| DEC [[PDP-9]]
 
|-
 
| [[RSX-11M]]
 
|
 
|
 
| DEC PDP-11
 
|-
 
| [[ANTS]]
 
|
 
|
 
| DEC PDP-11
 
|-
 
| [[4.1BSD]]
 
|
 
| BBN
 
| DEC [[VAX]]
 
|-
 
| [[VMS]]
 
|
 
|
 
| DEC VAX
 
|-
 
|
 
| ?
 
| Lincoln Labs
 
| [[TX-2]]
 
|-
 
| SCOPE
 
| ?
 
|
 
| [[CDC 6600]], 7600
 
|-
 
| POSIX
 
| [https://github.com/larsbrinkhoff/linux-ncp In progress]
 
| Emulation
 
|
 
|}
 
  
{{semi-stub}}
+
* [[RFC]]
  
 
==Further reading==
 
==Further reading==
  
 
* Jon Postel, "Official Initial Connection Protocol", June 1971, NIC #7101, UCLA-NMC (this does not seem to be online, but an early version, which is almost identical to the final version, can be found [http://www.rfc-editor.org/rfc/rfc165.pdf here])
 
* Jon Postel, "Official Initial Connection Protocol", June 1971, NIC #7101, UCLA-NMC (this does not seem to be online, but an early version, which is almost identical to the final version, can be found [http://www.rfc-editor.org/rfc/rfc165.pdf here])
* Alex McKenzie; Jon Postel "[https://drive.google.com/file/d/1vBXEHEClcD9XLqueVyVf831LOlqn0hrJ/view Host-to-Host Protocol for the ARPANET]", October 1977, NIC #8246, Network Information Center
+
* Alex McKenzie; Jon Postel "[https://drive.google.com/file/d/1vBXEHEClcD9XLqueVyVf831LOlqn0hrJ/view Host-to-Host Protocol for the ARPANET]" ([https://web.archive.org/web/20120819161123/http://www.cbi.umn.edu/hostedpublications/pdf/McKenzieNCP1972.pdf archived]), October 1977, NIC #8246, Network Information Center
  
 
==External links==
 
==External links==
Line 157: Line 47:
 
** [http://www.chiappa.net/~jnc/tech/arpapkt.html Packet Formats]
 
** [http://www.chiappa.net/~jnc/tech/arpapkt.html Packet Formats]
 
** [http://www.chiappa.net/~jnc/tech/arpaprot.html ARPANET Protocol Handbook]
 
** [http://www.chiappa.net/~jnc/tech/arpaprot.html ARPANET Protocol Handbook]
* '''ARPANET Protocol Handbook''' also available here: [https://ntrl.ntis.gov/NTRL/dashboard/searchResults/titleDetail/ADA052594.xhtml January 1978 edition], [https://ntrl.ntis.gov/NTRL/dashboard/searchResults/titleDetail/ADA027964.xhtml April 1976 edition.]
+
* The ''ARPANET Protocol Handbook'' also available here: [https://ntrl.ntis.gov/NTRL/dashboard/searchResults/titleDetail/ADA052594.xhtml January 1978 edition], [https://ntrl.ntis.gov/NTRL/dashboard/searchResults/titleDetail/ADA027964.xhtml April 1976 edition.]
 
* [https://www.saildart.org/IMPCLK%5BS,SYS%5D IMPCLK] - a concise and clear description of the NCP protocol layers in a block comment near the top; from WAITS source
 
* [https://www.saildart.org/IMPCLK%5BS,SYS%5D IMPCLK] - a concise and clear description of the NCP protocol layers in a block comment near the top; from WAITS source
  
[[Category:Networking]]
+
[[Category: ARPANET]]

Latest revision as of 13:19, 2 November 2024

The Network Control Protocol, a later backronym of the old acronym NCP (which changed its meaning over time; it originally stood for Network Control Program, a somewhat different meaning), is the protocol suite originally created for use in the then-new ARPANET, prior to the later creation and introduction of TCP/IP.

NCP was disabled in the ARPANET on January 1, 1983 (by blocking use of link 0), to force conversion to TCP/IP. (Technically, a few mission-critical sites which did not have their TCP/IP software working yet could get temporary 'stays of execution', but basically NCP was turned off on January 1.)

Since then, other networking software systems were also called 'Network Control Protocol'.

Details

NCP provides uni-directional reliable byte streams, called 'connections', used by applications to talk to each other (usually a pair of connections, one in each direction). It runs over:

  • 1822/VDH at the bottom, to transfer bits/'messages' (ARPANET jargon for packets) between the host and its local IMP
  • on top of that, the Host-to-IMP Protocol, to transfer messages between the local host and a distant host

The top layer consists of two semi-separate protocols:

  • Initial Connection Protocol (ICP)
  • ARPANET Host-to-Host Protocol (AHHP)

The connection was identified by a 'socket' at each end, along with the addresses of the two hosts; socket numbers were 32 bits long. Only one connection was permitted to each socket at any host.

However, sockets did not appear in messages; instead, links were used. When a connection was set up, between one host/socket to another, it used a particular link, specified by the receiver, and no other connection could use that link until the connection was closed.

Links were like virtual circuits in their properties, in that packets sent on one were received reliably (although there was an error message to the host from its IMP when that didn't happen) and in order at the other end of the link, but they had no open/close - a host just started using a link.

One link, 0, was special - it was the 'control link'. All messages involved in opening and closing a connection were sent over the control link - only data messages belonging to a connection went over a connection's link.

Revisions

The protocol family was updated slightly over its lifetime.

  • In late 1975 the 1822 leader was expanded from 32 bits to 96. Among other things, this allowed addressing more network nodes. The old format was still supported, but was limited to the original number of nodes.

See also

Further reading

  • Jon Postel, "Official Initial Connection Protocol", June 1971, NIC #7101, UCLA-NMC (this does not seem to be online, but an early version, which is almost identical to the final version, can be found here)
  • Alex McKenzie; Jon Postel "Host-to-Host Protocol for the ARPANET" (archived), October 1977, NIC #8246, Network Information Center

External links