メインコンテンツまでスキップ

ログイン

各ホスト内には、ログイン要求を待ち受けるプロセスが常に実行されていると仮定します。このプロセスをロガーと呼び、ユーザー番号がゼロである特別な仮想ネットの一部です。ロガーは、socket 番号 0 の呼び出しを待ち受けるようにプログラムされています。呼び出しを受信すると、ロガーはそれをより大きな (偶数の) 番号の socket へ切り替え、もともと呼び出していた送信 socket より1つ小さい番号の socket へ呼び出しを返します。この方法で、ロガーは 127 個の会話を開始できます。

例として、識別子が X'010005' (UCLA のユーザー番号 5) であるユーザーが UCLA にサインインし、自分のプログラムの1つを起動し、このプログラムが SRI でプロセスを開始したいとします。ロガー以外に現在このユーザーを待ち受ける意思のあるプロセスはないため、ユーザーは次を実行します

Init, <port> = 1, <AEN 1> = 7, <AEN 2> = 7,
<foreign socket> = 0

彼のプロセスはブロックされ、UCLA の NCP は次を送信します

RFC   <my socket 1> = X'0100050107',
<my socket 2> = X'0100050107',
<your socket> = X'000000200'

このメッセージが受信されると、SRI のロガーは以前に次を実行していたため、通知を受けます

Listen   <port> = 9, <AEN 1> = 0.

次にロガーは次を実行します

Accept   <AEN 2> = 88.

Accept への応答として、SRI の NCP は次を送信します

RFC   <my socket 1> = X'0000000200'
<my socket 2> = X'0000000258'
<your socket> = X'0100050107'
<link> = 37

ここで、リンクは利用可能なリンクの集合から選択されています。次に SRI のロガーは次を実行します

Init     <port> = 10
<AEN 1> = 89, <AEN 2> = 89,
<foreign socket> = X'0100050106'

これにより NCP は次を送信します

RFC   <my socket 1> = X'0000000259'
<my socket 2> = x'0000000259'
<your socket> = X'0100050106'

UCLA のプロセスのブロックが解除され、Init が成功したことが通知されます。SRI のロガーは、接続されたばかりの AEN より1つ小さい AEN への接続を常に開始するため、次に UCLA のプロセスは次を実行します

Listen   <port> = 11
<AEN 1> = 6

そしてブロックが解除されると

Accept   <AEN 2> = 6

これらのトランザクションが完了すると、UCLA のプロセスは SRI のロガーに二重に接続されます。次にロガーは UCLA のプロセスに問い合わせ、満足すれば SRI で新しいプロセスを作成します。この新しいプロセスにはユーザー番号 X'010005' が付され、両方の接続が新しいプロセスへ切り替えられます。この場合、接続を新しいプロセスへ切り替えることは、多くのタイムシェアリングシステムにおける「コンソールを引き継ぐ」ことに相当します。