Difference between revisions of "Network Control Protocol"

From Computer History Wiki
Jump to: navigation, search
m (Details: Clarify)
m (Case consistency; other minor tweaks)
Line 1: Line 1:
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]].
+
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), was 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 [[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.)
 
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.)
Line 7: Line 7:
 
==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). (Technically, those streams are provided by the underlying ARPANET; NCP just uses those, and adds additional [[semantics]], such as opening and closing connections.) It runs over:
+
NCP provided 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). (Technically, those streams are provided by the underlying ARPANET; NCP just used those, and added additional [[semantics]], such as opening and closing connections.) It ran over:
  
* [[1822 interface|1822]]/[[VDH]] at the bottom, which transfers bits/'messages' (ARPANET jargon for [[packet]]s) between the [[host]] and its local, first-hop, [[Interface Message Processor|IMP]]
+
* [[1822 interface|1822]]/[[VDH]] at the bottom, which transferred bits/'messages' (ARPANET jargon for [[packet]]s) between the [[host]] and its local, first-hop, [[Interface Message Processor|IMP]]
* on top of that, the [[Host-to-IMP Protocol]] (HIP), which transfers messages between the local host and a distant host
+
* on top of that, the [[Host-to-IMP Protocol]] (HIP), which transferred messages between the local host and a distant host
  
The top layer consists of two semi-separate [[protocol]]s (the former makes use of the latter):
+
The top layer consisted of two semi-separate [[protocol]]s (the former made use of the latter):
  
 
* Initial Connection Protocol (ICP)
 
* Initial Connection Protocol (ICP)
Line 19: Line 19:
 
The connection was identified by a 32-bit long 'socket' number at each end, along with the [[Host-to-IMP Protocol#Host addresses|addresses]] of the two hosts. Only one connection was permitted to each socket at any host.
 
The connection was identified by a 32-bit long 'socket' number at each end, along with the [[Host-to-IMP Protocol#Host addresses|addresses]] of the two hosts. Only one connection was permitted to each socket at any host.
  
However, socket numbers did not appear in messages of a connection; instead, the messages belonging to a connection were identified by the links (provided by the HIP). The link number appeared in every message, as links were used to carry them all. When a connection was set up, between one host/socket and another, it used a particular link, specified by the receiver, and no other connection could use that link until the connection was closed.
+
However, socket numbers did not appear in the messages of a connection; instead, the messages belonging to a connection were identified by the link (provided by HIP). The link number appeared in every message, as links were used to carry them all. When a connection was set up, between one host/socket and 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 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. (The ICP was a higher-level protocol, part of NCP, performed to open a connection, though.)  
+
Links were like [[virtual circuit]]s in their properties, in that messages 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. (The ICP, a higher-level protocol, part of NCP, was performed to open a connection, though.)  
  
One link, 0, was special - it was the 'control link'. '''All'' AHHP control messages, including those involved in opening and closing a connection, were sent over the control link - only data messages belonging to an open connection went over a connection's link.
+
One link, 0, was special - it was the 'control link'. '''All''' AHHP control messages, including those involved in opening and closing a connection, were sent over the control link - only data messages belonging to an open connection went over the connection's link.
  
 
==History==
 
==History==
  
Understanding the details of the operation of NCP may be difficult for those who know TCP, because NCP is quite different, and seemingly unnecessarily complicated. Like the vertebrate eye (which seems extraordinarily badly arranged, with necessarily transparent components placed in front of the optical receptors), this complexity and seemingly bad design is an accident of its evolution (after all, the designers of NCP were groping in the then-dark when it was all built). So, the first step in understanding it is to forget everything you know about today's networks - and accept that there will be major differences.
+
Understanding the details of the operation of NCP may be difficult for those who know TCP, because NCP is quite different, and seemingly unnecessarily complicated. Like the vertebrate eye (which seems extraordinarily badly arranged, with necessarily transparent components placed in front of the optical receptors), this complexity and seeming bad design, is an accident of its evolution (after all, the designers of NCP were groping in the then-dark when it was all built). So, the first step in understanding it is to forget everything you know about today's networks - and accept that there will be major differences and infelicities.
  
The reliability was at the lowest, HIP, layer, because that functionality was done first - when BBN did the original ARPANET. The ICP is built on top of the AHHP because it only became clear that the functionality of a generic ICP was needed fairly late in the process.   
+
The reliability was at the lowest, HIP, layer, because that functionality was done first - when [[Bolt, Beranek, and Newman|BBN]] did the original ARPANET design. The ICP is built on top of the AHHP because it only became clear that the functionality of a generic ICP was needed fairly late in the process - after the AHHP had already been designed and implemented.   
  
 
The protocol family was also updated slightly over its later lifetime:
 
The protocol family was also updated slightly over its later lifetime:
  
* In late 1975 the 1822 leader was expanded from 32 bits to 96.  Among other things, this allowed [[address]]ing more network nodes. The old format was still supported, but use of it was limited to the original number of nodes.
+
* In late 1975 the 1822 'leader' (the [[packet|header]] of a 'message') was expanded from 32 bits to 96.  Among other things, this allowed [[address]]ing more network nodes. The old format was still supported, but use of it limited the message 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.  <!-- Need to add more details; but the changes were poorly documented. We didn't precisely understand them at the time; we just used the general rule of thumb of 'a maximum of 8 outstanding packets per host'. -->
  
 
==See also==
 
==See also==

Revision as of 11:03, 30 December 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), was 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 provided uni-directional reliable byte streams, called 'connections', used by applications to talk to each other (usually a pair of connections, one in each direction). (Technically, those streams are provided by the underlying ARPANET; NCP just used those, and added additional semantics, such as opening and closing connections.) It ran over:

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

The top layer consisted of two semi-separate protocols (the former made use of the latter):

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

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

However, socket numbers did not appear in the messages of a connection; instead, the messages belonging to a connection were identified by the link (provided by HIP). The link number appeared in every message, as links were used to carry them all. When a connection was set up, between one host/socket and 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 messages 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. (The ICP, a higher-level protocol, part of NCP, was performed to open a connection, though.)

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

History

Understanding the details of the operation of NCP may be difficult for those who know TCP, because NCP is quite different, and seemingly unnecessarily complicated. Like the vertebrate eye (which seems extraordinarily badly arranged, with necessarily transparent components placed in front of the optical receptors), this complexity and seeming bad design, is an accident of its evolution (after all, the designers of NCP were groping in the then-dark when it was all built). So, the first step in understanding it is to forget everything you know about today's networks - and accept that there will be major differences and infelicities.

The reliability was at the lowest, HIP, layer, because that functionality was done first - when BBN did the original ARPANET design. The ICP is built on top of the AHHP because it only became clear that the functionality of a generic ICP was needed fairly late in the process - after the AHHP had already been designed and implemented.

The protocol family was also updated slightly over its later lifetime:

  • In late 1975 the 1822 'leader' (the header of a 'message') was expanded from 32 bits to 96. Among other things, this allowed addressing more network nodes. The old format was still supported, but use of it limited the message 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. Also reproduced in RFC 6529.

External links