序論
正式なプロトコルの仕様策定に取り組む中で、我々は Algol 風の言語で NCP の試作を定式化することも試みた。数週間にわたって集中的に取り組んだ後、コードが読めなくなりつつあることに気付き、このプロジェクトは断念した。しかし我々は依然として、NCP をどのように実装しうるかについての我々の構想を示す必要があると感じていた。それは、正式な仕様を既存のシステムに合わせ込もうとする際に生じうる問題に対し、解決策を示唆する助けになると考えたからである。本文書は、NCP がどのような姿になりうるかを文章の形で規定しようとする、その試みである。
この種のプロジェクトには明らかな限界がある。我々は、NCP を作成しなければならない各種システムの癖をすべて知っているわけではなく、また知ることもできない。そのため、環境やシステムコールなどについていくつかの仮定を置かざるをえない。できる限り汎用的であるよう努めたが、NCP をまったく異なる形で概念化するサイトも多いことは疑いない。物事をまったく異なる見方で捉える人々に、我々の概念とそれを扱う仕組みを伝えることには大きな困難が伴う。とはいえ、架空の計算機向けにこのプログラムを実際にコーディングしてみることで、我々は大いに得るところがあった。コーディングの過程で予期しなかった多くの問題が表面化したため、本文書を公開することで、個々のケースで生じうる同様の問題の軽減に役立てばと願っている。
もちろん、本文書に含まれる内容を実装する義務はまったくない。NCP が必ず従わなければならない厳格な規則は、NWG/RFC#54 に記述されたものだけである。本記述は一例として意図されたものにすぎず、手本として意図されたものではない。
以下の議論では、まず想定する環境を説明し、一組のシステムコールを仮定する。次に NCP の全体的なアーキテクチャと、関連情報を保持するために用いるテーブルについて論じる。続いてネットワーク操作の叙述を示す。その後、事象の因果的な順序を概念化する便利な手段として状態図を提示する。最後に、各種のネットワーク事象(システムコールまたは到着するネットワークメッセージ)の詳細な処理を論じる。