ネットワーク制御プロトコル(NCP)は、1970年代から1980年代初頭にかけてのコンピュータネットワークにおける通信プロトコルでした。これは、現代のインターネットの前身であるARPANETのホストコンピュータ上で動作するプロトコルスタックのトランスポート層を提供しました。
NCPは、初期のARPANETで使用されたトランスポート層プロトコルとして、伝送制御プロトコル(TCP)に先行して存在しました。NCPは2つのポート番号を使用する単方向プロトコルであり、双方向通信のために2つの接続を確立しました。奇数ポートと偶数ポートは、各アプリケーション層アプリケーションまたはプロトコル用に予約されていました。TCPとUDPの標準化により、アプリケーションごとに2つの単方向ポートを使用する必要がなくなり、1つの双方向ポートで済むようになりました。[ 1 ] : 15
ARPANET に携わったエンジニアの間でも、その名称について多少の混乱が見られる。[ 2 ]当初、プロトコル スタック全体に名前を付ける必要はなかったので、そのような名前は存在しなかった。TCP の開発が始まると、その前身に名前が必要となり、既存の頭字語「NCP」(元々はネットワーク制御プログラム、つまりこのスタックを実装するソフトウェアを指していた)がその用途に自然と採用された。[ 3 ] [ 4 ]最終的に、その頭字語の元の展開が新しい意味には不適切であることが認識され、新しい準バクロニム「ネットワーク制御プロトコル」が作成された。これもまた、正式な決定によるものではなく、自然発生的に作成された。[ 5 ] [ 6 ]
ARPANETでは、ネットワーク内で使用される物理層、データリンク層、ネットワーク層のプロトコルは、別々のインターフェースメッセージプロセッサ(IMP)に実装されていました。ホストは通常、物理層、データリンク層、ネットワーク層の仕様が異なる別の種類のインターフェースを使用してIMPに接続していました。IMPの機能は、 Bob Kahnによって書かれたBBNレポート1822のホスト/IMPプロトコルで規定されていました。[ 7 ] [ 8 ]
カリフォルニア大学ロサンゼルス校(UCLA)のレナード・クラインロックの指導の下、 [ 9 ]当時 UCLA のコンピュータ科学の大学院生だったスティーブン・D・クロッカーは、ネットワークワーキンググループ (NWG) を結成し、率いた。ジョン・ポステルらと協力し、ホスト間プロトコルであるネットワーク制御プログラム (NCP) を設計した。NCP は、UCLA、ユタ大学、SRIのエンジニアとの一連の会議を経て、1969 年にARPANET の初期のRFC文書で開発された。[ 10 ] [注 1 ]クロッカーは、「開発の大部分は壮大な計画に従って進められたが、プロトコルの設計と RFC の作成は大部分が偶然だった」と述べている。[注2 ] ARPAのバリー・ウェスラー[ 11 ]の承認後、ウェスラーはより奇抜な要素を削除するよう指示し[ 12 ] 、 1970年初頭にRFC 33で最終決定され[ 13 ]、1970年12月15日にARPANETのすべてのノードに展開された[ 14 ] [ 15 ]。
NCPはARPANETネットワークインターフェースをコード化し、確立を容易にし、より多くのサイトがネットワークに参加できるようにしました。[ 16 ] [ 17 ]これは、異なるARPANETホストコンピュータで実行されているプロセス間の接続とフロー制御を提供しました。リモートログインやファイル転送などのアプリケーションサービスはNCPの上に構築され、他のホストコンピュータへの接続を処理するためにNCPを使用しました。NWGの他の参加者は、これらのアプリケーションレベルのプロトコルであるTELNETとFTPを開発しました。[ nb 4 ] [ 18 ] [ 19 ]
下位プロトコル層はIMPホストインターフェースによって提供されていたため、NCPは基本的にARPANETホスト間プロトコル(AHHP)と初期接続プロトコル(ICP)からなるトランスポート層を提供していた。AHHPは、2つのホスト間で一方向のフロー制御データストリームを送信する手順を定義していた。ICPは、2つのホストプロセス間で双方向のストリームを確立する手順を定義していた。アプリケーションプロトコル(FTPなど)は、NCPの最上位層へのインターフェース(Berkeleyソケットインターフェースの前身)を介してネットワークサービスにアクセスした。
ネットワーク制御プログラム(通常はNCPと表記される)は、ARPANET のネットワーク制御プロトコルを実装するホスト上のソフトウェアの名前でした。 [ 20 ] [ 19 ]
ほぼ普遍的にNCPという頭字語で呼ばれていました。これは後にプロトコルスイート自体を指す言葉として使われるようになりました。[ 3 ] [ 4 ]
NCPはMultics、TENEX、UNIX、TOPS-10など、多くのオペレーティングシステム向けに作成され、それらのNCPの一部は現在も残っています(もちろん、今ではビンテージコンピュータ愛好家だけが使用していますが)。
TCP/IPの実装は1970年代後半に始まった。ARPANET全体への本格的な展開は1981年に始まり、1982年末の数日間、バックボーンルータはネットワークの移行準備状況をテストするために、ほとんどのホストのNCPトラフィックを無効にした。[ 21 ]
1983年1月1日、いわゆる「旗の日」に、ARPANETがコアネットワークプロトコルをNCPからより柔軟で強力なTCP/IPプロトコルスイートに変更したことで、NCPは正式に廃止され、現代のインターネットの始まりとなった。[ 22 ] [ 23 ] [ 24 ] [ 25 ]
「義務的な」フラッグデー移行にもかかわらず、多くのサイトは1983年半ばまでNCPの使用を継続したが[ 26 ]、これらはバックボーンオペレーターの許可が必要な特別なケースであり、すべてのホストは最終的にTCP/IPに切り替えられるか削除された。
後にプロトコルの名前として使われるようになりましたが、元々はオペレーティングシステム内で接続を管理するプログラムを意味していました。プロトコル自体は、単にホスト間プロトコルとして知られていました。)
ネットワーク制御プログラム (NCP) を介してネットワークと通信します。
[
nb 3
]