(57)【特許請求の範囲】
【請求項１】
あるネットワークのアクセスルータが別のネットワークからのゲストステーションに対してＩＰサービスを提供するアクセスルーティング方法において、
前記ゲストステーションから、元のソースＩＰアドレス及びデスティネーションＩＰアドレスを有する元の出力ＩＰパケットをインターセプトするインターセプトステップと、
前記元のソースＩＰアドレスをｃ／ｏ（care-of）アドレスに関連づける関連づけステップと、
前記元の出力ＩＰパケットに基づいて変更された出力ＩＰパケットに、前記元のソースＩＰアドレスの代わりに前記ｃ／ｏアドレスを提供するステップと、
を有し、前記インターセプトステップは、
前記ゲストステーションから送信される、前記アクセスルータ以外のステーション宛のＡＲＰ要求を検出するステップと、
前記ＡＲＰ要求のＡＲＰ宛先がＡＲＰ宛先テーブルに登録されているか否かを判定するステップと、
前記ＡＲＰ宛先が前記ＡＲＰ宛先テーブルに登録されていない場合は、前記ＡＲＰ要求に対するＡＲＰ応答を検出したか否かを判定するステップと、
前記ＡＲＰ要求に対するＡＲＰ応答を検出しなかった場合は、前記ＡＲＰ要求に対して、前記アクセスルータのハードウェアアドレスを含むプロキシＡＲＰ応答を前記ゲストステーションへ送信し、前記ＡＲＰ宛先を非ローカルステーションとして前記ＡＲＰ宛先テーブルに登録するステップと、
前記ＡＲＰ要求に対する前記ＡＲＰ応答を検出した場合は、前記ＡＲＰ宛先をローカルステーションとして前記ＡＲＰ宛先テーブルに登録するステップと、
前記ＡＲＰ宛先が前記ＡＲＰ宛先テーブルに登録されている場合は、前記ＡＲＰ宛先がローカルステーションであるか否かを判定するステップと、
前記ＡＲＰ宛先がローカルステーションであれば、終了するステップと、
前記ＡＲＰ宛先がローカルステーションでなければ、前記ＡＲＰ要求に対して、前記アクセスルータのハードウェアアドレスを含むプロキシＡＲＰ応答を前記ゲストステーションへ送信し、前記ＡＲＰ宛先を非ローカルステーションとして前記ＡＲＰ宛先テーブルに登録するステップと、
前記ＡＲＰ要求に対して前記アクセスルータのハードウェアアドレスを含むプロキシＡＲＰ応答を前記ゲストステーションへ送信するステップと、
を有することを特徴とするアクセスルーティング方法。
【請求項２】
前記ＡＲＰ要求に対するＡＲＰ応答を検出したか否かを判定するステップは、予め定められた期間内で検出するか否かを判定することを特徴とする請求項１記載の方法。
【請求項３】
前記関連づけステップは、
前記ゲストステーションのソースポート番号を前記ゲストステーションに一意的なｃ／ｏポート番号に関連づけるステップを含むことを特徴とする請求項１記載の方法。
【請求項４】
外部ステーションへのＩＰトンネルを通じて前記変更された出力ＩＰパケットを送信するステップをさらに有することを特徴とする請求項１記載の方法。
【請求項５】
ＤＮＳリダイレクトステップをさらに有し、
該ＤＮＳリダイレクトステップは、
ＤＮＳ問合せパケットをインターセプトするステップと、
インターセプトされたＤＮＳ問合せパケットのデスティネーションＩＰアドレスを、ローカルＤＮＳサーバのＩＰアドレスで置換して、変更されたＤＮＳ問合せパケットを提供するステップと、
前記変更されたＤＮＳ問合せパケットを前記ローカルＤＮＳサーバへ送るステップと、
からなることを特徴とする請求項１記載の方法。
【請求項６】
前記ＤＮＳリダイレクトステップは選択可能であることを特徴とする請求項５記載の方法。
【請求項７】
プリントジョブリダイレクトステップをさらに有し、
該プリントジョブリダイレクトステップは、
プリントジョブパケットをインターセプトするステップと、
インターセプトされたプリントジョブパケットのデスティネーションＩＰアドレスを、ローカルプリンタのＩＰアドレスで置換して、変更されたプリントジョブパケットを提供するステップと、
前記変更されたプリントジョブパケットを前記ローカルプリンタへ送るステップと、
からなることを特徴とする請求項１記載の方法。
【請求項８】
前記プリントジョブリダイレクトステップは選択可能であることを特徴とする請求項７記載の方法。
【請求項９】
外部ネットワークと内部ネットワークとの間にファイアウォール装置を有し、前記アクセスルータは前記内部ネットワーク内の所定ネットワークに設けられ、
前記アクセスルータから前記外部ネットワークの所定外部ステーションへのＩＰトンネルを通じて前記ｃ／ｏアドレスが提供された出力ＩＰパケットを前記外部ネットワークへ直接送信するステップを更に有することを特徴とする請求項１に記載の方法。
【請求項１０】
前記ｃ／ｏアドレスが提供された出力ＩＰパケットのデスティネーションＩＰアドレスが前記内部ネットワーク内のＩＰアドレスである場合には、前記ｃ／ｏアドレスが提供された出力ＩＰパケットは、前記外部ステーションから前記ファイアウォール装置を通して前記内部ネットワークへ入るステップを更に有することを特徴とする請求項９記載の方法。
【請求項１１】
前記インターセプトステップは、
前記ゲストステーションから送信される、前記アクセスルータ以外のステーション宛のＡＲＰ要求を検出するステップと、
前記ＡＲＰ要求のＡＲＰ宛先がＡＲＰ宛先テーブルに登録されているか否かを判定するステップと、
前記ＡＲＰ宛先が前記ＡＲＰ宛先テーブルに登録されていない場合は、前記ＡＲＰ要求に対するＡＲＰ応答を検出したか否かを判定するステップと、
前記ＡＲＰ要求に対するＡＲＰ応答を検出しなかった場合は、前記ＡＲＰ要求に対して、前記アクセスルータのハードウェアアドレスを含むプロキシＡＲＰ応答を前記ゲストステーションへ送信し、前記ＡＲＰ宛先を非ローカルステーションとして前記ＡＲＰ宛先テーブルに登録するステップと、
前記ＡＲＰ要求に対する前記ＡＲＰ応答を検出した場合は、前記ＡＲＰ宛先をローカルステーションとして前記ＡＲＰ宛先テーブルに登録するステップと、
前記ＡＲＰ宛先が前記ＡＲＰ宛先テーブルに登録されている場合は、前記ＡＲＰ宛先がローカルステーションであるか否かを判定するステップと、
前記ＡＲＰ宛先がローカルステーションであれば、終了するステップと、
前記ＡＲＰ宛先がローカルステーションでなければ、前記ＡＲＰ要求に対して、前記アクセスルータのハードウェアアドレスを含むプロキシＡＲＰ応答を前記ゲストステーションへ送信し、前記ＡＲＰ宛先を非ローカルステーションとして前記ＡＲＰ宛先テーブルに登録するステップと、
前記ＡＲＰ要求に対して前記アクセスルータのハードウェアアドレスを含むプロキシＡＲＰ応答を前記ゲストステーションへ送信するステップと、
を有することを特徴とする請求項９または１０に記載の方法。
【請求項１２】
ゲストステーションにＩＰ層アクセスを提供するシステムにおいて、
ゲストステーションＩＰアドレスを有するゲストステーションと、
前記ゲストステーションと通信するホスティングネットワークと、
前記ホスティングネットワークに参加するアクセスルータとを有し、
前記アクセスルータは、
前記ゲストステーションから送信される、前記アクセスルータ以外のステーション宛のＡＲＰ要求を検出し、
前記ＡＲＰ要求のＡＲＰ宛先がＡＲＰ宛先テーブルに登録されているか否かを判定し、
前記ＡＲＰ宛先が前記ＡＲＰ宛先テーブルに登録されていない場合は、前記ＡＲＰ要求に対するＡＲＰ応答を検出したか否かを判定し、
前記ＡＲＰ要求に対するＡＲＰ応答を検出しなかった場合は、前記ＡＲＰ要求に対して、前記アクセスルータのハードウェアアドレスを含むプロキシＡＲＰ応答を前記ゲストステーションへ送信して、前記ＡＲＰ宛先を非ローカルステーションとして前記ＡＲＰ宛先テーブルに登録し、
前記ＡＲＰ要求に対する前記ＡＲＰ応答を検出した場合は、前記ＡＲＰ宛先をローカルステーションとして前記ＡＲＰ宛先テーブルに登録し、
前記ＡＲＰ宛先が前記ＡＲＰ宛先テーブルに登録されている場合は、前記ＡＲＰ宛先がローカルステーションであるか否かを判定し、
前記ＡＲＰ宛先がローカルステーションであれば終了し、
前記ＡＲＰ宛先がローカルステーションでなければ、前記ＡＲＰ要求に対して、前記アクセスルータのハードウェアアドレスを含むプロキシＡＲＰ応答を前記ゲストステーションへ送信して、前記ＡＲＰ宛先を非ローカルステーションとして前記ＡＲＰ宛先テーブルに登録し、
前記ＡＲＰ要求に対して前記アクセスルータのハードウェアアドレスを含むプロキシＡＲＰ応答を前記ゲストステーションへ送信することで、
前記ゲストステーションから送信されてくる、元のソースＩＰアドレス及びデスティネーションＩＰアドレスを有する元の出力ＩＰパケットをインターセプトし、
前記元のソースＩＰアドレスをｃ／ｏ（care-of）アドレスに関連づける関連づけ、
前記元の出力ＩＰパケットに、前記元のソースＩＰアドレスの代わりに前記ｃ／ｏアドレスを提供することを特徴とするゲストステーションにＩＰ層アクセスを提供するシステム。
【請求項１３】
前記アクセスルータは、ＩＰマスカレードを用いて、前記ゲストステーションＩＰアドレスをｃ／ｏアドレスで置換することを特徴とする請求項１２記載のシステム。
【請求項１４】
ゲストステーションがホスティングネットワークに接続される際に該ゲストステーションにＩＰアクセスを提供するためのコンピュータシステムにおいて、
プロセッサとソフトウェア命令を含むメモリとを有し、
前記ソフトウェア命令は、前記コンピュータシステムが、
前記ゲストステーションから、元のソースＩＰアドレス及びデスティネーションＩＰアドレスを有する元の出力ＩＰパケットをインターセプトするインターセプトステップと、
前記元のソースＩＰアドレスをｃ／ｏ（care-of）アドレスに関連づける関連づけステップと、
前記元の出力ＩＰパケットに基づいて変更された出力ＩＰパケットに、前記元のソースＩＰアドレスの代わりに前記ｃ／ｏアドレスを提供するステップと、
を実行することを可能にし、
前記インターセプトステップは、
前記ゲストステーションから送信される、前記アクセスルータ以外のステーション宛のＡＲＰ要求を検出するステップと、
前記ＡＲＰ要求のＡＲＰ宛先がＡＲＰ宛先テーブルに登録されているか否かを判定するステップと、
前記ＡＲＰ宛先が前記ＡＲＰ宛先テーブルに登録されていない場合は、前記ＡＲＰ要求に対するＡＲＰ応答を検出したか否かを判定するステップと、
前記ＡＲＰ要求に対するＡＲＰ応答を検出しなかった場合は、前記ＡＲＰ要求に対して、前記アクセスルータのハードウェアアドレスを含むプロキシＡＲＰ応答を前記ゲストステーションへ送信し、前記ＡＲＰ宛先を非ローカルステーションとして前記ＡＲＰ宛先テーブルに登録するステップと、
前記ＡＲＰ要求に対する前記ＡＲＰ応答を検出した場合は、前記ＡＲＰ宛先をローカルステーションとして前記ＡＲＰ宛先テーブルに登録するステップと、
前記ＡＲＰ宛先が前記ＡＲＰ宛先テーブルに登録されている場合は、前記ＡＲＰ宛先がローカルステーションであるか否かを判定するステップと、
前記ＡＲＰ宛先がローカルステーションであれば、終了するステップと、
前記ＡＲＰ宛先がローカルステーションでなければ、前記ＡＲＰ要求に対して、前記アクセスルータのハードウェアアドレスを含むプロキシＡＲＰ応答を前記ゲストステーションへ送信し、前記ＡＲＰ宛先を非ローカルステーションとして前記ＡＲＰ宛先テーブルに登録するステップと、
前記ＡＲＰ要求に対して前記アクセスルータのハードウェアアドレスを含むプロキシＡＲＰ応答を前記ゲストステーションへ送信するステップと、
を実行することを可能にすることを特徴とするコンピュータシステム。
【請求項１５】
前記ＡＲＰ要求に対するＡＲＰ応答を検出したか否かを判定するステップは、予め定められた期間内で検出するか否かを判定することを特徴とする請求項１４記載のシステム。
【請求項１６】
前記関連づけステップは、
前記ゲストステーションのソースポート番号を前記ゲストステーションに一意的なｃ／ｏポート番号に関連づけるステップを含むことを特徴とする請求項１４記載のシステム。
【請求項１７】
前記ソフトウェア命令は、前記コンピュータシステムが、外部ステーションへのＩＰトンネルを通じて前記変更された出力ＩＰパケットを送信するステップを実行することを可能にするソフトウェア命令を含むことを特徴とする請求項１４記載のシステム。
【請求項１８】
ゲストステーションがホスティングネットワークに接続される際に、コンピュータが該ゲストステーションにＩＰアクセスを提供することを可能にするコンピュータプログラムを記録した記録媒体において、
前記コンピュータプログラムは、
前記ゲストステーションから、元のソースＩＰアドレス及びデスティネーションＩＰアドレスを有する元の出力ＩＰパケットをインターセプトするインターセプトステップと、
前記元のソースＩＰアドレスをｃ／ｏ（care-of）アドレスに関連づける関連づけステップと、
前記元の出力ＩＰパケットに基づいて変更された出力ＩＰパケットに、前記元のソースＩＰアドレスの代わりに前記ｃ／ｏアドレスを提供するステップと、
を実行することを可能にし、
前記インターセプトステップは、
前記ゲストステーションから送信される、前記アクセスルータ以外のステーション宛のＡＲＰ要求を検出するステップと、
前記ＡＲＰ要求のＡＲＰ宛先がＡＲＰ宛先テーブルに登録されているか否かを判定するステップと、
前記ＡＲＰ宛先が前記ＡＲＰ宛先テーブルに登録されていない場合は、前記ＡＲＰ要求に対するＡＲＰ応答を検出したか否かを判定するステップと、
前記ＡＲＰ要求に対するＡＲＰ応答を検出しなかった場合は、前記ＡＲＰ要求に対して、前記アクセスルータのハードウェアアドレスを含むプロキシＡＲＰ応答を前記ゲストステーションへ送信し、前記ＡＲＰ宛先を非ローカルステーションとして前記ＡＲＰ宛先テーブルに登録するステップと、
前記ＡＲＰ要求に対する前記ＡＲＰ応答を検出した場合は、前記ＡＲＰ宛先をローカルステーションとして前記ＡＲＰ宛先テーブルに登録するステップと、
前記ＡＲＰ宛先が前記ＡＲＰ宛先テーブルに登録されている場合は、前記ＡＲＰ宛先がローカルステーションであるか否かを判定するステップと、
前記ＡＲＰ宛先がローカルステーションであれば、終了するステップと、
前記ＡＲＰ宛先がローカルステーションでなければ、前記ＡＲＰ要求に対して、前記アクセスルータのハードウェアアドレスを含むプロキシＡＲＰ応答を前記ゲストステーションへ送信し、前記ＡＲＰ宛先を非ローカルステーションとして前記ＡＲＰ宛先テーブルに登録するステップと、
前記ＡＲＰ要求に対して前記アクセスルータのハードウェアアドレスを含むプロキシＡＲＰ応答を前記ゲストステーションへ送信するステップと、
を含むことを特徴とする記録媒体。
【請求項１９】
前記ＡＲＰ要求に対するＡＲＰ応答を検出したか否かを判定するステップは、予め定められた期間内で検出するか否かを判定することを特徴とする請求項１８記載の記録媒体。
【請求項２０】
前記関連づけステップは、
前記ゲストステーションのソースポート番号を前記ゲストステーションに一意的なｃ／ｏポート番号に関連づけるステップを含むことを特徴とする請求項１８記載の記録媒体。
【請求項２１】
前記所定オペレーションは、外部ステーションへのＩＰトンネルを通じて前記変更された出力ＩＰパケットを送信するステップをさらに含むことを特徴とする請求項１８記載の記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はインテリジェントルータに係り、特に、ローカルネットワーク上の外部すなわちゲストステーションにインターネットアクセスを提供するのに用いられるルータに関する。本発明は、特に、ルーティング装置として作用するコンピュータシステム、ルーティングの方法、未知のＩＰコンフィグレーションを有するコンピュータからのＩＰパケットをインターセプト（横取り）する方法、インターセプトされたＩＰトラフィックをローカルネットワークコンフィグレーションに適応させる方法、悪意のあるゲストコンピュータからローカルネットワークを保護する方法、ネットワークインタフェース、及び、ゲストステーションにＩＰネットワークアクセスを提供するのに適したコンピュータプログラム製品に関する。
【０００２】
【従来の技術】
説明を明確にするため、ここで、いくつかの背景情報を提供する。まず、デジタルコンピュータについて説明した後、コンピュータシステム及びコンピュータプログラム製品について説明し、さらにその後、コンピュータ通信及びネットワークについて説明する。
【０００３】
これら基礎情報を提供した後で、ネットワーキング及びポータブルデバイスに関する課題について説明する。関連技術の説明を終わると、この課題に対する従来の解決法について説明する。
【０００４】
［デジタルコンピュータ］
デジタルコンピュータは、科学、工業、及び商業の分野における多くの変化を可能にしている。今日では、多くのビジネスは、実際に使える情報システムの助けなしには機能し得ない。多くの専用（特殊目的）及び汎用のコンピュータが知られている。
【０００５】
単純な汎用デジタルコンピュータのブロック図を図１に示すが、この図は、提供される機能に応じて、専用デジタルコンピュータにも等しく関係する。参照符号１０は、汎用デジタルコンピュータを示す。このようなコンピュータは、中央処理装置（ＣＰＵ）１００を有する。メインメモリ１１０はＲＡＭであるとしてよい。この単純化された図におけるコンピュータは、ただ１つのＩ／Ｏプロセッサ１２０を有する。Ｉ／Ｏプロセッサ１２０は、Ｉ／Ｏデバイス１３０を制御する。Ｉ／Ｏデバイス１３０には、ディスプレイ、キーボード、プリンタ、ディスクドライブ、マウス、及び、イーサネットカードなどのようなネットワークアダプタ１４０がある。なお、この図は単なる説明のためだけのものであり、本発明を限定することは全く意図していないことは理解されるであろう。
【０００６】
ＣＰＵ１００は、制御ユニット、ＡＬＵ、及びレジスタを有する。制御ユニットは、メインメモリ１１０から命令をフェッチし、そのタイプを判定する。ＡＬＵは、その命令を実行するのに必要な加算や論理ＡＮＤのような演算を実行する。ＣＰＵ１００のレジスタは、一時的な結果及びいくつかの制御情報を格納するために使用される小さい高速のメモリである。レジスタにはそれぞれ、ある特定の機能が指定されることも可能であり、あるいは、汎用レジスタであることも可能である。レジスタの１つにプログラムカウンタＰＣがある。プログラムカウンタＰＣは、実行される次の命令を指す。また、命令レジスタＩＲがあり、これは現在実行されている命令を保持する。
【０００７】
ＣＰＵ１００、メインメモリ１１０、及びＩ／Ｏプロセッサ１２０がバスによって相互接続されていることは理解されるであろう。これらの相異なるユニット間の通信はバスを通じて行われる。もちろん、ネットワークアダプタ１４０やその他の任意のＩ／Ｏデバイス１３０は、Ｉ／Ｏプロセッサなしで機能するように設計され、代わりに、その他のメインモジュールによって同じバスに接続されるように設計されてもよい。さらに、複数のディスプレイ、複数のネットワークアダプタ１４０などを有することも可能である。
【０００８】
このように、デジタルコンピュータは、デジタルモジュールを相互接続したものと見ることができる。ＣＰＵ１００内にいくつかのモジュールがあり、また、ＣＰＵ、メインメモリ１１０、及びＩ／Ｏプロセッサ１２０自体もモジュールと見なすことができる。さらに大きいスケールでは、これらのコンポーネントがすべての同じコンテナに含まれるとき、このコンテナを１つのモジュールと考えることが可能であり、さまざまなＩ／Ｏデバイス（ディスプレイやキーボードなど）自体はモジュールであると見ることができる。
【０００９】
［コンピュータシステム及びコンピュータプログラム製品］
本明細書では、「コンピュータシステム」という用語は、少なくともメモリ及びプロセッサを含むものと考える。一般に、メモリは、いろいろなときに、実行可能プログラムコードの少なくとも一部を格納し、プロセッサは、その実行可能プログラムコードに含まれる１つまたは複数の命令を実行する。理解されるだろうが、「実行可能プログラムコード」という用語及び「ソフトウェア」という用語は、この説明の目的ではほぼ同じものを意味する。この説明では、メモリとプロセッサは必ずしも物理的に同じ場所に位置する必要はない。すなわち、プロセッサとメモリは、異なる物理的装置にあることが可能であり、地理的に異なる場所にあることさえ可能である。
【００１０】
次に、「コンピュータプログラム製品」という用語について説明する。実際的なレベルでは、コンピュータシステムが所望のオペレーションを実行することを可能にするソフトウェアは、さまざまな媒体（メディア）で供給可能である。さらに、コンピュータオペレーションの現実の実装は実際にはプログラミング言語で書かれた文（ステートメント）であることも可能である。このようなプログラミング言語ステートメントは、コンピュータによって実行されると、コンピュータを、そのステートメントの個々の内容に従って作用させる。さらに、コンピュータシステムが所定の方式で作用することを可能にするソフトウェアは、オリジナルソースコード、アセンブリコード、オブジェクトコード、機械語、これらのものを圧縮または暗号化したバージョン、及び以上のものの均等物を含むさまざまな形式で提供可能であり、また、これらには限定されない。
【００１１】
当業者には認識されるだろうが、本明細書で用いられる「媒体」、あるいは「コンピュータ読取り可能媒体」には、ディスケット、テープ、コンパクトディスク、集積回路、ＲＯＭ、ＣＤ、カートリッジ、通信回線を通じてのリモート伝送、あるいは、コンピュータによって使用可能なその他の同様の媒体が含まれる。例えば、コンピュータシステムが所定の方式で動作することを可能にするソフトウェアを供給するために、供給者は、ディスケットを提供することも可能であり、あるいは、衛星伝送を通じて、直接の電話リンクを通じて、またはインターネットを通じて、何らかの形式でそのソフトウェアを送信することも可能である。このように、「コンピュータ読取り可能媒体」という用語は、上記のものすべて、及び、ソフトウェアがコンピュータに提供されることが可能なその他の任意の媒体を含むことを意図している。
【００１２】
コンピュータシステムが所定の方式で動作することを可能にするソフトウェアは、ディスケットに「書き込まれ」、集積回路に「格納され」、あるいは通信回線を「伝送され」ることが可能であるが、認識されるように、本発明の目的には、コンピュータが使用可能な媒体は、ソフトウェアを「有する」ということにする。このように、「有する」という用語は、ソフトウェアがコンピュータ使用可能媒体と関連づけられる上記及びすべての均等な方法を含むことを意図している。従って、簡単のため、「プログラム製品」という用語は、コンピュータシステムが所定の方式で動作することを可能にするソフトウェアを任意の形式で有する、上記で定義したようなコンピュータ使用可能媒体を指すために使用される。
【００１３】
［ユーザインタフェース］
ユーザインタフェースは、実行中のプログラムによって呼び出し可能である。ユーザインタフェースは、ユーザがコンピュータシステムと相互作用することを可能にする任意のハードウェア、ソフトウェア、またはハードウェアとソフトウェアの組合せを意味するものとする。ほとんどのプログラムは、例えば、ユーザに対するグラフィカルインタフェース、コマンドラインインタフェース、制御インタフェース（ＣＯＲＢＡ、ＪＡＶＡ−ＲＭＩ、ＤＣＥあるいはその他のプロトコルに基づく）などの、さまざまなタイプの多くのインタフェースを有する。ここで、認識されるように、「ユーザインタフェース」という用語は、これらをすべてまとめたものを意味する。
【００１４】
この説明の目的では、ユーザインタフェースは、１個以上のユーザインタフェースオブジェクトを含むものと考える。ユーザインタフェースオブジェクトには、表示領域、ユーザ活性化可能領域などがある。
【００１５】
よく知られているように、表示領域は、ユーザに対して情報を表示するユーザインタフェースの領域である。ユーザ活性化可能領域は、ボタンやメニューのように、ユーザがユーザインタフェースに関して何らかのアクションを起こすことを可能にするユーザインタフェースの領域である。
【００１６】
ユーザインタフェースは、アプリケーションプログラムによって呼び出されることが可能である。アプリケーションプログラムがユーザインタフェースを呼び出すときは、一般に、ユーザと相互作用するためである。しかし、本発明の目的では、必ずしも現実のユーザが常にユーザインタフェースと相互作用する必要はない。また、本発明の目的では、ユーザインタフェースとの相互作用は、必ずしも現実のユーザによって実行される必要はない。すなわち、予想されるように、ユーザインタフェースは、ユーザインタフェースに関するユーザのアクションをシミュレートするマクロプログラミング言語ステートメントを用いて作成されたプログラムのような別のプログラムとの相互作用を有することも可能である。
【００１７】
［コンピュータネットワーキング］
図２に、図１に示すタイプのいくつかのコンピュータがネットワークで互いに接続されたものを示す。具体的には、コンピュータ２１０、２２０、２３０、及び２４０が第１のネットワーク２００に参加している（第２のネットワークについては後述する）。図２に示す構成において、第１のネットワーク２００に接続されたコンピュータ２１０〜２４０はすべて互いに通信することができる。コンピュータ２１０〜２４０は、ネットワーク２００に参加するステーションともいう。さらに、コンピュータ２１０〜２４０は通常、第１のネットワーク２００に参加しており、ネットワーク２００の「レギュラーステーション」あるいは「レギュラーマシン」ということもある。
【００１８】
図３に、第１のネットワーク２００及び第２のネットワーク３００を示す。第２のネットワーク３００は、いくつかのレギュラーステーション３１０、３２０、３３０、及び３４０を有する。図３に示すステーション３１０〜３４０はそれぞれ、図１に示したようなデジタルコンピュータ１０とすることが可能である。ステーション３１０〜３４０はすべて、第２のネットワーク３００により互いに通信することができるが、図３に示す構成では、第１のネットワーク２００のステーション２１０〜２４０のいずれとも通信することはできない。この理由は、ネットワーク２００とネットワーク３００の間に相互接続がないためである。
【００１９】
ステーション２１０〜２４０及び３１０〜３４０のすべてを単一の大きいネットワーク上に置くことも可能ではあるが、これが常に好ましいとも可能であるとも限らない。ネットワーク間の通信を行う一般的な解決法は、それらのネットワークを別々に保ちながら、互いに通信が可能であるような何らかの接続をそれらのネットワークの間に設けることである。
【００２０】
図４に、第１のネットワーク２００及び第２のネットワーク３００を、より概念的に示す。具体的には、特定のトポロジー（図２及び図３に示すような）ではなくインターネットワーキングの概念に注目するのを助けるように、ネットワーク２００及び３００は、図４では破線のかたまりで表されている。第３のネットワーク４００及びそのレギュラーステーション４１０、４２０、４３０、及び４４０も示されている。
【００２１】
図５は、図４と似ているが、３個のネットワーク２００、３００、４００はネットワーク５００に接続され、ネットワーク５００は、ネットワーク２００〜４００を相互接続するネットワークと見なすことができる。特に、ネットワーク５００は、インターネットワークと呼ぶことができる。第１のネットワーク２００は、アクセスステーション５０２を通じてインターネットワーク５００に接続される。第２のネットワーク３００は、アクセスステーション５０３を通じてインターネットワーク５００に接続される。第３のネットワーク４００は、アクセスステーション５０４を通じてインターネットワーク５００に接続される。インターネットワーク５００は、任意のサイズのネットワークとすることが可能であり、スイッチングノードを含むことも可能である。実際、インターネットワーク５００は、インターネットの場合のように、多くの中間ネットワークを含むことも可能である。
【００２２】
次に、ネットワーク２００〜４００とインターネットワーク５００がどのように動作するかについての簡単な説明をする。
【００２３】
［コンピュータ通信］
最も単純な形式では、コンピュータの間の通信は、何らかの形式のポイントツーポイント伝送媒体によって直接に接続された２つのデバイス間で行うことが可能である。しかし、多くの場合、２つのデバイスが直接にポイントツーポイント接続されることは実際的でない。デバイスどうしが遠く離れていて２つのデバイス間に専用リンクを設定することが高価すぎる場合、あるいは、デバイスのセットがあり、各デバイスがさまざまなときに他の多くへのリンクを必要とする場合、コンピュータネットワーキングが解決法となる。
【００２４】
個々のステーション２１０〜２４０、３１０〜３４０、及び４１０〜４４０は、ユーザ、あるいはマシンともいう（他の用語も同様に使用可能である）。ステーションは、通信する任意のタイプのデジタルコンピュータであり、すべて、アクセスノードと通信する。
【００２５】
通信ネットワークでは、データは、ソースからデスティネーションへ、一連の中間ノードを通って転送される。これらのノードは、データの内容には関知しないが、データがデスティネーションに到達するまでノードからノードへデータを移動させる転送ファシリティを提供するために存在する。ネットワークの１つの種類に、回線交換ネットワークがある。回線交換ネットワークでは、ネットワークのノードを通じて２つのステーション間に専用の通信路が確立される。中間ノードの間の各リンク上で、論理チャネルがそのコネクションに占有される。
【００２６】
もう１つの種類のネットワークは、蓄積交換ネットワークである。これは、本明細書では、パケットネットワークともいう。パケットネットワークでは、ネットワークを通るパスに沿った伝送容量を占有する必要はない。その代わりに、データは、パケットという小断片の列として送出される。各パケットは、ネットワークを通ってノードからノードへ渡される。関与するノードは、まず、パケットを受け取り、それをメモリに格納し、出力ネットワークインタフェースを決定するために自己のフォワーディングテーブルを参照し、そのインタフェースを通じて次のホップへパケットを送る。フォワーディングテーブルは、ＲＩＰやＯＳＰＦのようなルーティングプロトコルによって定期的に計算される。パケットネットワークは一般にコンピュータ間通信に使用される。
【００２７】
ソースコンピュータ（ソース（送信元）ステーション）からネットワークを通りデスティネーションコンピュータ（デスティネーション（宛先）ステーション）までの通信を行うためには、コンピュータシステム間の非常に高度な協力が要求される。このような協力動作のためのコンピュータ間の情報交換も、コンピュータ通信と考えられる。同様に、複数のコンピュータが通信ネットワークを通じて相互接続されているとき、コンピュータステーションのセットは一般にコンピュータネットワークと呼ぶことができる。
【００２８】
プロトコルは、コンピュータ間でのデータの交換を支配する規則のセットを指すと見なすことができる。２つのコンピュータが互いに通信しているときには、同時に多くの異なるプロトコルが動作していることもある。実際、コンピュータ間のさまざまな通信をすべて実現する構造化されたプロトコルのセットは、コンピュータ通信アーキテクチャと呼ばれる。周知のコンピュータ通信アーキテクチャの一例は、開放型システム間相互接続（ＯＳＩ）モデルである。もう１つの例はＳＮＡ（Ｓｙｓｔｅｍｓ  Ｎｅｔｗｏｒｋ  Ａｒｃｈｉｔｅｃｔｕｒｅ）である。さらにもう１つの例はＴＣＰ／ＩＰであり、インターネットに関係する。
【００２９】
パケット（すなわち蓄積交換）ネットワークでは、アドレシング及びルーティングが重要な問題である。パケットネットワークの主要な機能は、その最低レベルでは、ソースステーションからパケットを受け取り、そのパケットをデスティネーションステーションへ配送することであると考えられる。ソースからデスティネーションまでの複数の経路が一般に可能であるため、ルーティング機能が実行されなければならない。ある特定のノードにおいてパケットの経路を選択することがルーティングの機能であると考えられる。ルーティングソフトウェアと、そのルーティングソフトウェアによって計算された経路に従ってネットワーク間でパケットを転送するハードウェアとを備えた装置をルータという。注意すべき点であるが、小規模のルータの場合、経路を手動で設定して、ルーティングソフトウェアが無効化されることもある。
【００３０】
図６に、第１のネットワーク２００と第２のネットワーク３００の間に接続されたルータ６００を示す。ルータは以下のように動作する。ステーション２１０が、ステーション３１０を宛先とするパケットを送信すると仮定する。ソースステーション２１０は、例えば図１に示すようなデジタルコンピュータ１０であり、ネットワークアダプタ１４０を通じてネットワーク２００へパケットを送信する。ルータ６００には、２個のネットワークアダプタ１４０が設定される。第１のネットワークアダプタは第１のネットワーク２００に参加し、第２のネットワークアダプタは第２のネットワーク３００に参加する。ルータ６００は、ステーション２１０が送信したパケットを受信する。ルータは、そのデスティネーションのアドレスがステーション３１０であることを認識する。ルータ６００はメモリ内にいくつかのテーブルを保持しており、これらのテーブルは、デスティネーションステーション３１０が第１ネットワーク２００に参加しているレギュラーステーションではないことを示す情報を含む（これらのテーブルは、フォワーディングテーブル、あるいは、ルーティングテーブルと呼ばれるが、手動で設定されるか、または、ＲＩＰやＯＳＰＦのようなルーティングプロトコルによりルーティングソフトウェアによって自動的に計算される）。受信したパケットが、第１のネットワーク２００に参加していないステーション宛のものであると判定すると、ルータ６００は、その第２のネットワークアダプタ１４０を通じて第２のネットワーク３００へパケットを送信する。パケットは、デスティネーションステーション３１０によって、そのネットワークアダプタ１４０を通じて受信される。
【００３１】
同じパケットがソースステーション２１０によって送信されたがステーション２２０がデスティネーションステーションとして指定された場合、ルータは、そのフォワーディングテーブルから、ステーション２２０は第１のネットワーク２００のレギュラーステーションであると判定し、そのパケットのコピーを第２のネットワーク３００には送信しない。
【００３２】
理解されるだろうが、パケットネットワークの一例は、（一般のネットワークのネットワークとしての）インターネット（ａｎ  ｉｎｔｅｒｎｅｔ）である。このインターネット（ｉｎｔｅｒｎｅｔ）の特別の例が（世界規模のネットワークとしての）インターネット（ｔｈｅ  Ｉｎｔｅｒｎｅｔ）である。本明細書では一般に、これらの２つは交換可能であり、区別なしに「インターネット」という。以下の説明は、（世界規模のネットワークとしての）インターネット（ｔｈｅ  Ｉｎｔｅｒｎｅｔ）に限定することを意図していないが、（世界規模のネットワークとしての）インターネット（ｔｈｅ  Ｉｎｔｅｒｎｅｔ）がほとんどの例で用いられる。また、「データパケット」あるいは「データのパケット」という用語は、「データグラム」と入れ替えて使用可能である。
【００３３】
図５に戻って、認識されるように、アクセスノード５０２、５０３、及び５０４は、ルータ６００として動作するように装備されたデジタルコンピュータ１０とすることが可能である。また、ルータは、複数のネットワークに所定の方式で参加することが可能なデジタルコンピュータ１０であることは理解されるであろう。ルータ６００は、そのコンピュータ命令に従って所定のルーティング動作を実行するように設定されたコンピュータシステムである。
【００３４】
インターネットパケットは、デスティネーションのロケーションに配送されるために、デスティネーションアドレスを有していなければならない。これに関して、名前とアドレスを区別しなければならない。名前は、アドレスが関係するエンティティを示す。すなわち、アドレスは、名前を有することが可能なエンティティのロケーションを示す。ＩＰ（Ｉｎｔｅｒｎｅｔ  ｐｒｏｔｏｃｏｌ）は、主にアドレスを扱うプロトコルである。
【００３５】
上記のＯＳＩモデルには、７つの層（レイヤ）、すなわち、物理層、データリンク層、ネットワーク層、トランスポート層、セッション層、プレゼンテーション層、及びアプリケーション層がある。トランスポート層は、エンドポイント間での信頼性の高い透過的（トランスペアレント）なデータの転送を提供する。また、エンドツーエンドで誤り回復及びフロー制御も提供する。インターネットに一般に関連する２つの異なるトランスポートレベルのプロトコルがある。これらの２つのプロトコルは、コネクション型のトランスミッションコントロールプロトコルＴＣＰ（ｔｒａｎｓｍｉｓｓｉｏｎ  ｃｏｎｔｒｏｌ  ｐｒｏｔｏｃｏｌ）と、コネクションレス型のユーザデータグラムプロトコルＵＤＰ（ｕｓｅｒ  ｄａｔａｇｒａｍ  ｐｒｏｔｏｃｏｌ）である。ＴＣＰは、インターネットの主要なトランスポートプロトコルである。
【００３６】
インターネットワーク５００（以下、インターネット（ｔｈｅ  Ｉｎｔｅｒｎｅｔ）のみに限定されないという理解のもとに、これをインターネットという）は、ネットワーク層でＩＰを使用し、その上に、ＴＣＰ、ＵＤＰ及びＩＣＭＰのような他の上位層プロトコルを実装する。ＩＰを使用するネットワークをＩＰネットワークという。従って、インターネット５００はＩＰネットワークである。また、ネットワーク２００、３００、及び４００もＩＰを使用すると仮定する。
【００３７】
ＴＣＰは、ＯＳＩモデルのトランスポート層にほぼ対応し、ＩＰはネットワーク層にほぼ対応すると考えられる。ＩＰは、ソースからデスティネーションへパケットをルーティングすることに関与し、コネクションレス型であるが、ＴＣＰはコネクション型である。
【００３８】
理解すべきもう１つのプロトコルはＩＣＭＰ（Ｉｎｔｅｒｎｅｔ  ｃｏｎｔｒｏｌ  ｍｅｓｓａｇｅ  ｐｒｏｔｏｃｏｌ）である。ＩＣＭＰは、ＩＰとともに動作し、同じくネットワーク層に関連する。ＩＰはコネクションレス型であるため、発信側にメッセージやエラーを中継する方法がない。ＩＣＭＰは、ＩＰのためにこのような機能を実行する。ＩＣＭＰは、ステータスメッセージ及びエラーメッセージを送信側ステーションに送る。ＩＣＭＰメッセージはＩＰを用いて運ばれる。ＩＰネットワークにおいて重要なさらにもう１つのプロトコルはアドレス解決プロトコルＡＲＰ（ａｄｄｒｅｓｓ  ｒｅｓｏｌｕｔｉｏｎ  ｐｒｏｔｏｃｏｌ）である。ＩＰ及びＩＣＭＰとは異なり、ＡＲＰはリンク層にある。ＡＲＰは、ＩＰアドレスを、ネットワークインタフェースのハードウェアアドレスにマッピングする。具体的には、ＡＲＰは、ローカルリンク上でＩＰ／ハードウェアアドレスの対応に関して動的に通知及び問合せを行うために使用される。ＴＣＰ／ＩＰはレイヤ３以上で動作するため、それより低いレベルのエンティティであるボードとインタフェースする機構を必要とする。ネットワークインタフェースの一意的なレイヤ３アドレス（すなわちＩＰアドレス）は、それ自体では、物理的なネットワークインタフェースカードを識別しない。ＩＰアドレスとデータリンク（すなわちハードウェア）アドレスを関連づける機構が要求される。ＡＲＰはこれを行う。ＡＲＰについては後でさらに詳細に説明する。
【００３９】
ＴＣＰ及びＵＤＰについては既に言及した。ＴＣＰ及びＵＤＰのアドレス可能なエンドポイントをポートという。ＴＣＰ及びＵＤＰは、ウェルノウン（周知の）ポートに割り当てられたアプリケーションと、動的に割り当てられるポートを使用するアプリケーションを有する。これらのポートはエンドポイントであり、論理コネクションを作成するためにアドレス可能なエンティティである。これらをサービス契約ポートという。これらは、特定のサービスのリクエスタ（要求者）にサービスを提供することが可能であるからである。ポート番号は一般に変化しない。通信エンドポイントアドレスは、ＩＰアドレスと、ＩＰアドレスの終わりに付加されたポート番号との組合せである。
【００４０】
ＩＰネットワークに参加する各ステーションは、３２ビットのＩＰアドレスで識別される。ＩＰアドレスは、３２ビットの固定長である。１つのアドレスは、ネットワーク番号で始まり、その後にローカルホストアドレスが続く。インターネットアドレスのいくつかのクラスが定義されている。ＩＰネットワークの可能な異なるサイズを考慮するために、ＩＰアドレスのいくつかのクラスが提供されている。インターネット（すなわち全世界ネットワーク）は、アドレシングに関して、内部インターネット（例えば企業内ネットワーク）とは異なる考慮点を有する。
【００４１】
図７に、ＩＰパケットヘッダを示す。ＩＰパケットは周知であるが、以下、いくつかのフィールドについて簡単に説明する。送信元アドレスフィールドは、パケットの発信者を示し、長さは３２ビットである。あて先アドレスは、パケットのターゲットである。送信元アドレスと同様に、その長さは３２ビットである。「ｔｔｌ」で示されるフィールドは、ｔｉｍｅ−ｔｏ−ｌｉｖｅ（生存時間）フィールドである。このフィールドは、パケットがインターネットシステムにとどまることが許される最大時間を示す。この値が０に等しくなると、パケットは破壊または廃棄される。時間は秒単位で測定され、また、パケットを処理する各エンティティは、たとえその処理時間が１秒未満であっても、その値を１だけ減らさなければならない。プロトコルフィールドは、受信機側でＩＰパケットのワークロードに含まれるデータを処理すべき上位レベルプロトコルエンティティを決定する。このような上位レベルプロトコルの例は、ＴＣＰ及びＵＤＰである。チェックサムフィールドは、ヘッダのみのチェックサムを提供するように計算されるフィールドである。
【００４２】
次に、ドメインネームサービス（ＤＮＳ）について説明する。ＤＮＳの目的は、人間が読取り可能なコンピュータ名（例えば、ｃａｓｔｏｒ．ｎｅｃ．ｃｏｍ）を、ＩＰプロトコルによって使用されることが可能な対応するＩＰアドレス（例えば、１４０．２０．２０．４）に変換することである。
【００４３】
ＤＮＳは、木の形の階層構造である。木の頂点にはルートサーバがあり、これは、自分及びその直下のトップレベルドメインに関する情報を含む。一般的なトップレベルドメインには、．ｇｏｖ、．ｅｄｕ、．ｃｏｍ、及び．ｏｒｇがある。
【００４４】
ＤＮＳのもとでは、ドメイン名は、最後にトップレベルドメインを有する名前の列である。ドメイン名の各部分をラベルという。例えば、ｄｅｐｔ．ｃｏｍｐａｎｙ．ｃｏｍは、ｄｅｐｔ、ｃｏｍｐａｎｙ、及びｃｏｍという３つのラベルを有する。ネームサーバは、ホスト、ステーションあるいはノード上で動作する、名前をＩＰアドレスに変換するプログラムである。ネームサーバは、ドメイン名をＩＰアドレスにマッピングすることによってこれを行う。ネームサーバは、ネームサーバソフトウェアを実行する専用プロセッサであることも、そうでないことも可能である。ネームリゾルバは、ネームサーバとの相互作用に関してはクライアントとして機能するソフトウェアである。ネームキャッシュは、頻繁に使用される名前情報を格納するためにネームリゾルバによって使用される記憶領域である。
【００４５】
ドメインシステムは、すべてのデータが、そのドメインシステムを使用するホストを通じて散布されるマスタファイルを起源とすると仮定する。これらのマスタファイルは、ローカルシステム管理者によって更新される。マスタファイルは、ローカルネームサーバによって読み取られるテキストファイルであり、従って、ネームサーバを通じてＤＮＳのユーザに利用可能となる。ユーザプログラムは、リゾルバを通じてネームサーバにアクセスする。一般に、ユーザプログラムは、ローカルリゾルバを通じてＤＮＳにアクセスする。リゾルバの視点から見ると、ＤＮＳは未知の個数のネームサーバを含む。各ネームサーバは、全体のドメインツリーの一部である。リゾルバは、これらのＤＮＳサーバのそれぞれと、ほぼ静的な対応するデータベースとを見る。ネームサーバの視点から見ると、ＤＮＳは、ゾーンと呼ばれるローカル情報のいくつかのセットからなる。ネームサーバは、いくつかのゾーンのローカルコピーと、他のＤＮＳサーバ（他のゾーンを受け持つ）への参照とを有する。ＤＮＳサーバは、与えられた名前をローカルに保持するデータベースから解決することができない場合、その名前が属するゾーンを受け持つＤＮＳサーバに問合せを転送する。
【００４６】
［レギュラーステーション、レギュラーネットワーク］
次に、ステーション２１０のようなレギュラーステーションが自己のレギュラーネットワーク（すなわち、第１のネットワーク２００）に接続されるときに起こることについて考える。まず、ステーション２１０は、次ホップのルータまたはゲートウェイと、ホームネットワークセグメントに属する他のマシンのハードウェアアドレスを見つけなければならない。これを行うため、ステーション２１０は、ＡＲＰ要求を送出する。
【００４７】
このレギュラー（通常）構成のもとでの動作の例について、図１７を参照して説明する。簡単のため、ソースステーション（送信側ステーション）は、図５に示すようにネットワーク２００に接続されたステーション２１０であり、ステーション２１０は、図１に示すようにただ１つのネットワークアダプタ１４０（例えば、１個のイーサネットカード）を有すると仮定する。
【００４８】
ステーション２１０は、手動で、自己のＩＰアドレス（例えば、１３８．１５．１０３．２１）、ネットマスク（例えば、２５５．２５５．２５５．０）、及び、ルータ５０２に関連するゲートウェイＩＰアドレス（例えば、１３８．１５．１０３．５２）が設定されている。これらの設定は、マシンが使用されるネットワーキング環境に特有である。これらのアドレスは、ローカルシステム管理者によって割り当てられ、ステーション２１０〜２４０に入力される。これらは通常、ステーションがレギュラーネットワークに接続されている間は変更されない。
【００４９】
ステーション２１０は、ステーション２２０（そのアドレスは１３８．１５．１０３．２２）にパケットを送信しなければならないと仮定する。
【００５０】
まず、ステーション２１０は、デスティネーションステーションと同じセグメントに直接に接続されているかどうかを判定する。ステーション２１０は、ネットマスクを考慮に入れて、自己のＩＰアドレスを受信側のＩＰアドレスと比較する（ステップ１７１０）。
【００５１】
送信側ステーション２１０は、ＩＰアドレス及びネットマスクを３２ビット値として解釈し、２つのＩＰアドレスのうち、ネットマスクの対応するビットが１であるビットのみを比較する（この例では、これは、ＩＰアドレスの最初の２４ビットを比較し、最後の８ビットは無視することを意味する）。いずれの場合でも、最初の２４ビットは１３８．１５．１０３である。
【００５２】
ステップ１７２０で、マスクされたアドレスが等しいか等しくないかを判断する。等しい場合、処理はステップ１７２５に進む。等しくない場合、処理はステップ１７３０に進む。この比較結果では、マスクされたアドレスは等しいと判断されるため、処理はこの例ではステップ１７２５に進む。
【００５３】
ステップ１７２０での判断により、ソースステーション２１０とデスティネーションステーション２２０は同じセグメントに接続されていると推論される。従って、このパケットの次ホップは、デスティネーションステーション２２０のＩＰアドレスを有するステーションとなる。
【００５４】
ＩＰパケットを次ホップ（これはこの例ではデスティネーションステーション２２０である）に配送するために、ＩＰホストは、次ホップのハードウェアアドレス（ＨＷアドレス）を判定しなければならない。これは、物理伝送媒体に対してパケットをどこへ配送すべきかについて正しく指示するために、行わなければならないことである。ＩＰホストは、次ホップのＩＰアドレス（すなわち、ステーション２２０のＩＰアドレス）を知っているが、次ホップのＨＷアドレスはまだ知らない。このために、ＩＰホストは、ネットワーク２００上のあらゆるステーションにブロードキャスト形式で、次ホップのマシンのＨＷアドレスを問い合わせるＡＲＰメッセージを送出する（ステップ１７２０）。このＡＲＰメッセージは、デスティネーションステーション２２０を宛先の受信機として識別する。
【００５５】
次ホップは、ローカルネットワーク２００に参加しているステーションであるため、このＡＲＰ要求を受信した後、自己のＨＷアドレスを応答することにより、次ホップステーションのＨＷアドレスが送信側ステーション２１０に提供される。ステップ１７４０で、ステーション２１０は、ＡＲＰ応答が受信されたかどうかをチェックする。受信されていない場合、ウェイト期間に入る（ステップ１７５０）。ウェイトの後、ステップ１７６０で、タイムアウト期間が経過したかどうかを判定する。タイムアウトが経過していない場合、処理は、ステップ１７４０に進み、ＡＲＰ応答をもう一度チェックする。タイムアウトが経過した場合、エラーが発生したと判定する。
【００５６】
ＡＲＰ応答が検出されると仮定すると、処理はステップ１７７０に進む。ＡＲＰ応答が検査され、次ホップステーションのＨＷアドレスが判定される。
【００５７】
ステップ１７８０で、パケットは次ホップに送られる（この例ではステーション２２０）。このパケットのデスティネーションＩＰアドレスは１３８．１５．１０３．２２である。ステーション２２０は、パケットの送り先のＨＷアドレスと一致するＨＷアドレスを有するため、このパケットを受信する。ステーション２２０は、このパケットが、デスティネーションアドレスとして、ステーション２２０のＩＰアドレスを有することを確認する。これにより、ステーション２２０はそのパケットを受け入れる。
【００５８】
次に、ステーション２１０がＩＰパケットを、別のネットワーク上のステーションであるステーション３１０に送る場合の例について説明する。ステーション３１０のＩＰアドレスは、例として、１４１．２０．２０．３１である。
【００５９】
まず、ステーション２１０は、デスティネーションステーション３１０と同じセグメントに直接に接続されているかどうかを判定する。ステーション２１０は、ネットマスクを考慮に入れて、自己のＩＰアドレスを受信側のＩＰアドレスと比較する（ステップ１７１０）。
【００６０】
２つのアドレスは、マスクすると、ステーション２１０は１３８．１５．１０３であり、ステーション３１０は１４１．２０．２０である。ステップ１７２０で、マスクされたアドレスが等しくないと判断されるため、処理はステップ１７３０に進む。
【００６１】
ステップ１７２０での判断により、ソースステーション２１０とデスティネーションステーション３１０は同じセグメントに接続されていないと推論される。従って、このパケットの次ホップは、ルータ（ゲートウェイ）５０２である。ルータ５０２のＩＰアドレスは、既に述べたように、１３８．１５．１０３．５２である。パケットのデスティネーションはステーション３１０であるが、パケットの次ホップはルータ５０２でなければならない。
【００６２】
ＩＰパケットを次ホップに配送するために、ＩＰホストは、次ホップのＨＷアドレスを判定しなければならない。ＩＰホストは、次ホップのＩＰアドレス（すなわち、ルータ５０２のＩＰアドレス）を知っているが、次ホップのＨＷアドレスはまだ知らない。このために、ＩＰホストは、ネットワーク２００上のあらゆるステーションにブロードキャスト形式で、次ホップのマシンのＨＷアドレスを問い合わせるＡＲＰメッセージを送出する（ステップ１７３０）。このＡＲＰメッセージは、ルータ５０２を宛先の受信機として識別する。
【００６３】
次ホップは、ローカルネットワーク２００に参加しているルータであるため、このＡＲＰ要求を受信した後、自己のＨＷアドレスを応答することにより、次ホップステーションのＨＷアドレスが送信側ステーション２１０に提供される。既に説明したように、ウエイトと及びタイムアウトの処理が、ステップ１７４０、１７５０、及び１７６０で行われる。
【００６４】
ＡＲＰ応答が検出されると仮定すると、処理はステップ１７７０に進む。ＡＲＰ応答が検査され、次ホップステーションのＨＷアドレス（この例では、ルータ５０２のアドレス）が判定される。
【００６５】
ステップ１７８０で、パケットは次ホップに送られる（この例ではルータ５０２）。このパケットのデスティネーションＩＰアドレスは１４１．２０．２０．３１である。ルータ５０２は、パケットの送り先のＨＷアドレスと一致するＨＷアドレスを有するため、このパケットを受信する。
【００６６】
ルータは、自己のＩＰアドレスがパケットのデスティネーションＩＰアドレスと一致しないことを認める。従って、ルータ５０２は、図１７に示す手続きを実行して、最終受信者へのパスにより次ホップへパケットを転送する。
【００６７】
すなわち、ステーション２１０がパケットをステーション３１０に送ると、パケットはルータ５０２によって受け取られ、インターネット５００を通じて送られ、ルータ５０３によって受け取られ、ステーション３１０に送信される。パケットは、ソースＩＰアドレスを、２１０のアドレスであるとして示す。返信時に、ステーション３１０は、ソースであるとして示されたＩＰアドレスをデスティネーションとするＩＰパケットを送出する。返信パケットは、ルータ５０３によって受け取られ、インターネット５００を通じて送られ、ルータ５０２によって受け取られる。ルータ５０２は、ステーション２１０に対応するＩＰアドレスが自己のネットワークに参加しているレギュラーステーションのものであるであることを知っている。ルータ５０２は、ネットワーク２００上にパケットを送信し、このパケットはステーション２１０によって受信される。
【００６８】
［ゲストステーション、外部ネットワーク］
ハードウェアに関して、「ゲストマシン」あるいは「ゲストステーション」という用語は、周知のＩＰ（ｉｎｔｅｒｎｅｔ  ｐｒｏｔｏｃｏｌ）を用いて通信可能なさまざまなコンピューティング装置あるいはコンピュータのうちの任意のものを意味する。ゲストマシンとしては、デスクトップコンピュータ、移動可能（ポータブル）コンピュータ、ラップトップあるいはノートブックコンピュータ、パームトップあるいはハンドヘルドコンピュータ、パーソナルデジタルアシスタントなどが可能である。ゲストマシンとなる可能性のある装置は、単に、ＩＰを用いて通信可能であればよい。
【００６９】
また、「ゲストステーション」は、レギュラーネットワークに接続されていないステーションを意味する。この状況は、以下で説明するように、さまざまな理由で生じることがある。
【００７０】
しばしば、移動するビジネス旅行者や、ワークショップや会議の出席者は、他のサイトを訪れるときに、さまざまなポータブルなＩＰ通信可能装置（少なくともラップトップ）を持ち運ぶ。オンライン株取引、電子メール及びその他のインターネットサービスが日常的になっているために、彼らは通常、ホスト側組織からインターネットにアクセスすることを要求する。そのような場合、しばしば、ホスト側組織のアナログ電話線のうちの１つを、ゲストが提供する２８．８Ｋビット／秒モデムとともに使用して、ゲストのホームネットワークに、または公衆のＩＳＰに直接にダイヤルする。この解決法は、高価で（長距離電話料金）遅い（２８．８Ｋビット／秒）のみならず、しばしば実際的でない（アナログ電話線にアクセスできない場合や、その使用許可がない場合）。
【００７１】
従って、ホスト側組織がゲストに対して、ポータブルデバイスをインターネットに接続するための、より経済的で容易に使用可能な機構を提供することが好ましい。
【００７２】
図８に、ゲストステーションが外部ネットワークと関与する状況を示す。図８で、ステーション２１０は、第３のネットワーク４００上のゲストステーションである。ステーション２１０は、第１のネットワーク２００のレギュラーステーションである。今は、ステーション２１０はネットワーク４００に接続されている。第３のネットワーク４００は、ステーション２１０のレギュラーネットワークではないため、第３のネットワーク４００は、ステーション２１０にとって外部ネットワーク（ｆｏｒｅｉｇｎ  ｎｅｔｗｏｒｋ）である。従って、ステーション２１０の視点から見ると、接続は外部ネットワークに対してなされている。第３のネットワーク４００の視点から見ると、ゲストステーションが接続されている。実際には、第３のネットワーク４００は、ゲストにＩＰ接続を提供するホテルや会議センタと見なすことができる。このサービスは、ゲストステーションをホストするサービスと呼ばれ、ネットワーク４００を、ホスティングネットワーク（ホストネットワーク）という。
【００７３】
【発明が解決しようとする課題】
［ゲストステーションをホストする際の問題点］
ゲストステーションをホストする際の一般的な問題点について、図８及び図１７を参照して、例を挙げて説明する。
【００７４】
簡単のため、ソースステーション（送信側ステーション）は、図８に示すように、レギュラーネットワーク２００ではなく第３のネットワーク４００に接続されたステーション２１０であり、ステーション２１０は、図１に示すように、ただ１つのネットワークアダプタ１４０（例えば、１個のイーサネットカード）を有すると仮定する。
【００７５】
ステーション２１０は、手動で、自己のＩＰアドレス（例えば、１３８．１５．１０３．２１）、ネットマスク（例えば、２５５．２５５．２５５．０）、及び、ルータ５０２に関連するゲートウェイＩＰアドレス（例えば、１３８．１５．１０３．５２）が設定されている。
【００７６】
ステーション２１０は、ステーション２２０（そのアドレスは１３８．１５．１０３．２２）にパケットを送信しなければならないと仮定する。
【００７７】
まず、ステーション２１０は、デスティネーションステーションと同じセグメントに直接に接続されているかどうかを判定する。ステーション２１０は、ネットマスクを考慮に入れて、自己のＩＰアドレスを受信側のＩＰアドレスと比較する（ステップ１７１０）。いずれのマスクされたアドレスも、最初の２４ビットは１３８．１５．１０３となる。
【００７８】
この比較結果では、マスクされたアドレスは等しいと判断されるため、処理はこの例ではステップ１７２５に進む。
【００７９】
ステップ１７２０での判断により、ソースステーション２１０とデスティネーションステーション２２０は同じセグメントに接続されていると誤って推論される。従って、このパケットの次ホップは、デスティネーションステーション２２０のＩＰアドレスを有するステーションとなる。
【００８０】
ＩＰパケットを次ホップ（これはこの例ではデスティネーションステーション２２０である）に配送するために、ゲストステーション２１０は、次ホップのハードウェアアドレス（ＨＷアドレス）を判定しようとする。ステーション２１０は、ネットワーク４００上のあらゆるステーションにブロードキャスト形式で、次ホップのマシンのＨＷアドレスを問い合わせるＡＲＰメッセージを送出する（ステップ１７２０）。このＡＲＰメッセージは、デスティネーションステーション２２０を宛先の受信機として識別する。
【００８１】
次ホップは、ローカルネットワーク２００に参加しているステーションではなく、ネットワーク４００に参加しているいずれのステーションのＩＰアドレスも一致しないため、ＡＲＰ要求はネットワーク４００上のあらゆるステーションによって無視され、いずれのステーションもＡＲＰ応答を送信しない。
【００８２】
ステップ１７４０で、ステーション２１０は、ＡＲＰ応答が受信されたかどうかをチェックする。応答が受信されていないため、結局、エラー状況が存在すると判定される。ステーション２２０へのパケットは送信することができない。
【００８３】
次に、第３のネットワーク４００に接続されたゲストステーション２１０がＩＰパケットを、別のネットワーク上のステーションであるステーション３１０へ送信しようとする場合の例について説明する。今度も、ステーション３１０のＩＰアドレスは、例として、１４１．２０．２０．３１である。
【００８４】
まず、ステーション２１０は、デスティネーションステーション３１０と同じセグメントに直接に接続されているかどうかを判定する。ステーション２１０は、ネットマスクを考慮に入れて、自己のＩＰアドレスを受信側のＩＰアドレスと比較する（ステップ１７１０）。
【００８５】
２つのアドレスは、マスクすると、ステーション２１０は１３８．１５．１０３であり、ステーション３１０は１４１．２０．２０である。ステップ１７２０で、マスクされたアドレスが等しくないと判断されるため、処理はステップ１７３０に進む。
【００８６】
ステップ１７２０での判断により、ゲストステーション２１０とデスティネーションステーション３１０は同じセグメントに接続されていないとゲストステーション２１０によって推論される。従って、少なくともステーション２１０にプログラムされている内部ＩＰ設定によれば、このパケットの次ホップは、ルータ（ゲートウェイ）５０２である。ルータ５０２のＩＰアドレスは、既に述べたように、１３８．１５．１０３．５２である。パケットのデスティネーションはステーション３１０であるが、パケットの次ホップはルータ５０２であると設定される。
【００８７】
ＩＰパケットを次ホップ（これはこの例ではルータ５０２である）に配送するために、ゲストステーション２１０は、次ホップのハードウェアアドレスを判定しなければならない。ゲストステーション２１０は、次ホップのＩＰアドレス（すなわち、ルータ５０２のＩＰアドレス）を知っているが、次ホップのＨＷアドレスはまだ知らない。このために、ゲストステーション２１０は、第３のネットワーク４００上のあらゆるステーションにブロードキャスト形式で、次ホップのマシンのＨＷアドレスを問い合わせるＡＲＰメッセージを送出する（ステップ１７３０）。このＡＲＰメッセージは、ルータ５０２を宛先の受信機として識別する。
【００８８】
しかし、このルータは、ネットワーク４００に参加していないため、ＡＲＰ応答はステーション２１０には返ってこない。直前の例の場合と同様に、エラー状況が存在すると判定され、ゲストステーション２１０からデスティネーションステーション３１０へパケットを送信することができない。
【００８９】
ゲストステーション２１０のパケットを送出するようにルータ５０４をプログラムしておくことができるとしても、以下で説明するように、依然として問題点は残る。
【００９０】
ステーション２１０が第３のネットワーク４００上のゲストであり、ルータ５０４を通じてパケットをステーション３１０へ送信すると仮定する。このパケットは、ネットワーク４００上のルータ５０４によって受信される。ルータ５０４は、図６に示すルータ６００のような構成を有することが可能である。ルータ５０４は、そのネットワークアダプタ１４０の一方を通じてパケットを受信する。ルータ５０４は、そのルーティングテーブルでデスティネーションアドレスをチェックし、このパケットが、自己のネットワーク４００内のいずれのＩＰアドレスにも関係しないデスティネーションアドレスを有することを認める。ルータ５０４は、他方のネットワークインタフェース１０４にパケットを送信する。この時点で、パケットは、ステーション２１０をソースＩＰアドレスとし、ステーション３１０をデスティネーションＩＰアドレスとする。
【００９１】
パケットは、インターネット５００を通じて運ばれ、ルータ５０３に送られる。ルータ５０３は、ネットワーク３００内にあると予想されるステーションに対するすべてのパケットを受信するルータであるからである。ルータ５０３は、このパケットを受信し、自己のルーティングテーブルから、ステーション３１０のＩＰアドレスがネットワーク３００上のＩＰアドレスであると判断する。ルータ５０３は、このパケットをネットワーク３００上に送信し、ステーション３１０はこれを受信する。
【００９２】
ステーション３１０が返信パケットを送信するときに、問題の中心が明確になる。ステーション３１０によって受信されるパケットは、ステーション２１０をソースＩＰアドレスとする。従って、ステーション３１０は、返信パケットのデスティネーションとして、その同じＩＰアドレスを有する返信パケットを送信する。ステーション２１０のアドレスをデスティネーションＩＰアドレスとする返信パケットは、ルータ５０３によって受け取られ、インターネット５００上に送られる。
【００９３】
パケットは、インターネット５００を通じて運ばれ、ルータ５０２に送られる。ルータ５０２は、ネットワーク２００内にあると予想されるステーションに対するすべてのパケットを受信するルータであるからである。ルータ５０２は、このパケットを受信し、自己のルーティングテーブルから、ステーション２１０のＩＰアドレスがネットワーク２００上のＩＰアドレスであると判断する。ルータ５０２は、このパケットをネットワーク３００上に送信するが、ステーション２１０はこのネットワークに接続されていない。従って、ステーション３１０からステーション２１０への返信パケットは決してステーション２１０に到達することはない。ステーション２１０は外部ネットワーク４００上のゲストとして接続されているからである。
【００９４】
［ゲストステーションをホストする際の問題点に対する可能な解決法の説明］
ゲストステーションをホストする際の問題点に対する解決法は、ゲストのデバイスに変更を要求するものであるべきではない。これには４つの理由がある。第１に、そのような変更をすることは、ローカルネットワークポリシー及びＩＰアドレスに関する知識を必要とする。第２に、ゲストステーションのデバイスを変更することは面倒であり、エラーの生じやすい作業である。第３に、訪問が終了した後、変更を元に戻さなければならない。第４に、このような変更がゲストの装置に及ぼす影響については全く明らかであるとはいえない。このような設定変更の後にゲストのシステムのコンポーネントの調子が悪くなると、たとえそれが全く無関係な理由によるものだとしても、可能性のある原因や責任について議論が起こり得る。
【００９５】
さらに、ゲストステーションをホストする際の問題点に対する解決法は、ゲストからの悪意のある攻撃を避けるために、外部ネットワーク（また、自己の視点から見れば、ホスティングネットワーク）に対するセキュリティを可能にすべきである。
【００９６】
・ＤＨＣＰ
ダイナミックホストコンフィグレーションプロトコルＤＨＣＰ（Ｄｙｎａｍｉｃ  Ｈｏｓｔ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）の使用は、外部ネットワーク上でのゲストステーションのサポートのために考慮され得る１つの機構である。しかし、ＤＨＣＰは、ホストネットワークに対しても、ゲストステーションに対しても、セキュリティの点を考慮していないという点で不利である。
【００９７】
もう１つの克服しがたいＤＨＣＰの欠点は、ゲストステーションにおけるサポートを必要とすることである。すべてのゲストステーションがＤＨＣＰをサポートしているわけではなく、特に、最小のＩＰスタックしか有しない古いシステムや単純なデバイスではそうである。
【００９８】
さらにもう１つのＤＨＣＰの欠点は、各ゲストステーションごとに別々のＩＰアドレスを必要とすることである。適当な容量を提供するためには、ホストや会議施設は大きいＩＰ番号のプールを取得することが必要になるが、そのほとんどは一般には未使用のままとなる。
【００９９】
・モバイルＩＰ
モバイルＩＰは、ゲストステーションをホストする際の問題点に対する解決法として考慮され得るもう１つの機構である。しかし、モバイルＩＰは、各ゲストに対するホームエージェントの存在に依存する。このようなホームエージェントは通常、ほとんどのゲストにとって利用可能でない。
【０１００】
予想される単純なＩＰデバイスのほとんど（例えば、ＩＰペン、ポータブルプリンタ）は、ホスト側組織の環境だけで働く。ホームエージェントによるモバイルＩＰアプローチの場合のように、それらを論理的にホーム環境に入れることは非効率的である。ゲストユーザにとっては、ゲストステーションのレギュラーネットワークを通って迂回することなく、インターネットサービスのほとんど（すなわち、ＷＷＷの閲覧、電子メールの送信、ｆｔｐ、電子メールを読むためのｔｅｌｎｅｔなど）にアクセスすることができたほうがよい。
【０１０１】
・ネットワークアドレス変換
ネットワークアドレス変換ＮＡＴ（ｎｅｔｗｏｒｋ  ａｄｄｒｅｓｓ  ｔｒａｎｓｌａｔｉｏｎ）はＲＦＣ１６３１に記載されている。ＮＡＴの１つのバージョンは、ＣＩＳＣＯ  Ｓｙｓｔｅｍｓの市販製品で利用可能である。
【０１０２】
最も単純な設定では、ネットワークアドレストランスレータ（ＮＡＴ：Ｎｅｔｗｏｒｋ  Ａｄｄｒｅｓｓ  Ｔｒａｎｓｌａｔｏｒ）は、２つのネットワークどうしを接続するルータ上で動作する。これらのネットワークの一方（内部として指定される）は、プライベートアドレスまたは旧式（ｏｂｓｏｌｅｔｅ）アドレスでアドレス指定される。これらのアドレスは、パケットが他のネットワーク（外部として指定される）上に転送される前に、正式なアドレスに変換される必要がある。変換は、ルーティングとともに動作するため、ＮＡＴは、変換が必要なときに、利用者側のインターネットアクセスルータ上で簡単に実行することができる。
【０１０３】
ＮＡＴデバイスの使用は、ルータプラットフォーム上でＲＦＣ１６３１スタイルのネットワークアドレス変換を提供する（ＵＲＬ  ｈｔｔｐ：／／ｉｎｆｏ．ｉｎｔｅｒｎｅｔ．ｉｓｉ．ｅｄｕ：８０／ｉｎ−ｎｏｔｅｓ／ｒｆｃ／ｆｉｌｅｓ／ｒｆｃ１６３１．ｔｘｔを参照）。ＮＡＴの目標は、プライベートネットワークがあたかもグローバルに一意的なアドレスを有しておりＮＡＴデバイスが存在していないかのような機能を提供することである。市販品では、ＮＡＴは、パケット内のソースＩＰアドレス及びデスティネーションＩＰアドレスの両方の変換を実行することができる。この変換は、ＮＡＴ機能のあるルータで管理されるアドレス変換テーブルを用いることによって実行される。
【０１０４】
しかし、ＮＡＴは、ゲストステーションを扱わない。ＮＡＴによる変換は、アドレス変換テーブルにアドレスが入力されることを必要とする。パケットがこのようなルータによって受信される場合、ソースアドレスはアドレス変換テーブルに存在せず、変換を行うことができない。従って、ＮＡＴの使用は、ゲストステーションのをアドレス変換テーブルに追加するというホスト側組織のサポートを要求する。
【０１０５】
【課題を解決するための手段】
従って、本発明の目的は、ゲストがゲストステーションを外部ネットワークに簡単につないで即時にＩＰ接続ができるように、ゲストステーションをホストする際の問題点を解決することである。もう１つの目的は、外部ネットワークがイーサネットのようなブロードキャストＬＡＮを使用しているときでもこれを実現することである。本発明のさらにもう１つの目的は、以前に設定されたポータブルデバイスのネットワーク設定（ＩＰアドレス、ネットマスク、次ホップルータ（ゲートウェイ）や、ＤＮＳ（Ｄｏｍａｉｎ  Ｎａｍｅ  Ｓｅｒｖｉｃｅ）の設定など）への変更なしに、上記のことを実現することである。本発明のもう１つの目的は、ゲストステーションによるホスティングネットワークへの悪意のある攻撃を防ぐような方法で、即時のＩＰ接続を実現することである。本発明のもう１つの目的は、ゲストステーションに対して、必要であれば、外部ネットワークからの悪意のある侵入や攻撃に対するセキュリティを提供することを可能にするような方法で、上記の接続を実現することである。さらに、本発明の目的は、大きいＩＰアドレスのプールを必要とせずに、ゲストステーションのＩＰアクセスを提供することである。最後に、本発明の重要な目的は、ゲストステーションからのサポートなしに、また、ゲストのレギュラーネットワークからのサポートを期待することなく、ゲストステーションのＩＰアクセスを提供することである。
【０１０６】
本発明による、アクセスルータがＩＰサービスをゲストステーションに提供するアクセスルーティング方法は、前記ゲストステーションから、元のソースＩＰアドレス及びデスティネーションＩＰアドレスを有する元の出力ＩＰパケットをインターセプトするインターセプトステップと、前記元のソースＩＰアドレスをｃ／ｏ（ｃａｒｅ−ｏｆ）アドレスに関連づける関連づけステップと、前記元の出力ＩＰパケットに基づいて変更された出力ＩＰパケットに、前記元のソースＩＰアドレスの代わりに前記ｃ／ｏアドレスを提供するステップと、からなることを特徴とする。本発明は、一実施形態において、ゲストから送信されるすべてのパケットをインターセプトして、そのゲストのＩＰアドレスを、ホスト側組織に属するｃａｒｅ−ｏｆ（気付）ＩＰアドレスで置換するインテリジェントルータ（本明細書では、アクセスルータともいう）として実現される。
【０１０７】
【発明の実施の形態】
以下の論文は、ここで説明する主題に関する背景情報を理解するのに有用である。
（１）ＩＳＯ，  ”Ｏｐｅｎ  Ｓｙｓｔｅｍｓ  Ｉｎｔｅｒｃｏｎｎｅｃｔｉｏｎ  （ＯＳＩ）  Ｒｅｆｅｒｅｎｃｅ  Ｍｏｄｅｌ”，  Ｓｔａｎｄａｒｄ  ＩＳ７４９８
（２）Ｒ．  Ｄｒｏｍｓ，  ”Ｄｙｎａｍｉｃ  Ｈｏｓｔ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  Ｐｒｏｔｏｃｏｌ”，  ＲＦＣ  ２１３１，  ＩＥＴＦ，  １９９７
（３）Ｄ．  Ｐｌｕｍｍｅｒ，  ”Ａｎ  Ｅｔｈｅｒｎｅｔ  Ａｄｄｒｅｓｓ  Ｒｅｓｏｌｕｔｉｏｎ  Ｐｒｏｔｏｃｏｌ  −ｏｒ−  Ｃｏｎｖｅｒｔｉｎｇ  Ｎｅｔｗｏｒｋ  Ａｄｄｒｅｓｓｅｓ  ｔｏ  ４８−ｂｉｔ  Ｅｔｈｅｒｎｅｔ  Ａｄｄｒｅｓｓ  ｆｏｒ  Ｔｒａｎｓｍｉｓｓｉｏｎ  ｏｎ  Ｅｔｈｅｒｎｅｔ  Ｈａｒｄｗａｒｅ”，  ＲＦＣ８２６，  ＩＥＴＦ，  Ｎｏｖ  １９８２
（４）”Ｌｉｎｕｘ  ＩＰ  Ｍａｓｑｕｅｒａｄｅ  ｍｉｎｉ  ＨＯＷＴＯ”，  ｈｔｔｐ：／／ｗｗｗ．ｄｌｏｍａｓ．ｃｏｍ／ｍａｓｑｕｅｒａ．ｈｔｍｌ，  Ｍａｒ  １９９９
（５）Ｏｂｊｅｃｔ  Ｍａｎａｇｅｍｅｎｔ  Ｇｒｏｕｐ  （ＯＭＧ），  ”Ｔｈｅ  Ｃｏｍｍｏｎ  Ｏｂｊｅｃｔ  Ｒｅｑｕｅｓｔ  Ｂｒｏｋｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ  （ＣＯＲＢＡ）”，  Ｖｅｒｓｉｏｎ  ３．０，  ｗｗｗ．ｏｍｇ．ｏｒｇ，  Ａｐｒｉｌ  １９９９
（６）Ｗ．  Ｓｉｍｐｓｏｎ，  ”Ｔｈｅ  Ｐｏｉｎｔ−ｔｏ−Ｐｏｉｎｔ  Ｐｒｏｔｏｃｏｌ  （ＰＰＰ）”，  ＲＦＣ  １６６１，  ＩＥＴＦ，  Ｊｕｌ  １９９４
（７）Ｋ．  Ｈａｍｚｅｈ  ａｎｄ  ｏｔｈｅｒｓ，  ”Ｐｏｉｎｔ−ｔｏ−Ｐｏｉｎｔ  Ｔｕｎｎｅｌｉｎｇ  Ｐｒｏｔｏｃｏｌ”，  Ｉｎｔｅｒｎｅｔ  Ｄｒａｆｔ，  ＩＥＴＦ，  Ｊｕｌ  １９９７
（８）Ｇ．  Ｓ．  Ｐａｌｌ  ａｎｄ  Ｇ．  Ｚｏｒｎ，  ”Ｍｉｃｒｏｓｏｆｔ  Ｐｏｉｎｔ−ｔｏ−Ｐｏｉｎｔ  Ｅｎｃｒｙｐｔｉｏｎ  （ＭＰＰＥ）  Ｐｒｏｔｏｃｏｌ”，  Ｉｎｔｅｒｎｅｔ  Ｄｒａｆｔ，  ＩＥＴＦ，  Ｍａｒ  １９９８
（９）”Ｉｎｔｅｒｎｅｔ  Ｄｅｍｏｎ  ｉｎｅｔｄ  −  ｉｎｔｅｒｎｅｔ  ｓｕｐｅｒ−ｓｅｒｖｅｒ”，  Ｌｉｎｕｘ  Ｕｓｅｒ  Ｍａｎｕａｌ，  Ｓｅｃｔｉｏｎ  ８，  １９９７
（１０）Ｂ．  Ｓｃｈｎｅｉｅｒ  ａｎｄ  Ｍｕｄｇｅ，  ”Ｃｒｙｐｔａｎａｌｙｓｉｓ  ｏｆ  Ｍｉｃｒｏｓｏｆｔ’ｓ  Ｐｏｉｎｔ−ｔｏ−Ｐｏｉｎｔ  Ｔｕｎｎｅｌｉｎｇ  Ｐｒｏｔｏｃｏｌ  （ＰＰＴＰ）”，  Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  ５ｔｈ  ＡＣＭ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｃｏｍｍｕｎｉｃａｔｉｏｎｓ  ａｎｄ  Ｃｏｍｐｕｔｅｒ  Ｓｅｃｕｒｉｔｙ，  ＡＣＭ  Ｐｒｅｓｓ，  Ｎｏｖｅｍｂｅｒ  １９９８
（１１）Ｃ．  Ｐｅｒｋｉｎｓ，  ”ＩＰ  ｍｏｂｉｌｉｔｙ  ｓｕｐｐｏｒｔ”，  ＲＦＣ  ２００２，  ＩＥＴＦ，  Ｏｃｔ  １９９６
（１２）Ｓｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ，  ＪＩＮＩ  ｗｈｉｔｅ  ｐａｐｅｒｓ，  ｈｔｔｐ：／／ｗｗｗ．ｓｕｎ．ｃｏｍ／ｊｉｎｉ／ｗｈｉｔｅｐａｐｅｒｓ，  １９９９
【０１０８】
第１実施形態
本発明は、一実施形態では、ゲストから送信されるすべてのパケットをインターセプトして、そのゲストのＩＰアドレスを、ホスト側組織に属する  ｃａｒｅ−ｏｆ（気付）ＩＰアドレスで置換するインテリジェントルータ（本明細書では、アクセスルータともいう）として実現される。
【０１０９】
ここで、ターゲットマシンとは、ゲストステーションがパケットを送信しようとしているステーションであることは理解されるであろう。外部ネットワーク（ゲストステーションから見て）は、ホストネットワークと言い換えることも可能である。ｃａｒｅ−ｏｆアドレスは、ｃ／ｏアドレスともいう。ゲストステーションのホームネットワークは、ゲストステーションのレギュラーネットワークとも言い換えられる。ゲストステーションは単にゲストともいう。また、ホスト側組織は、ゲストステーションにホスティングのサービスを提供する組織または個人であることが可能であり、あるいは、このようなサービスを提供するように契約した第三者であることも可能である。
【０１１０】
上記のように、アクセスルータは、ゲストから送信されるすべてのパケットをインターセプトして、そのゲストのＩＰアドレスを、ホスト側組織に属するｃａｒｅ−ｏｆ  ＩＰアドレスで置換する。ターゲットマシンは、このようなパケットを受信した場合、応答をそのｃ／ｏアドレスに（すなわち、アクセスルータに）送ることになる。アクセスルータは、パケットを受信すると、そのｃ／ｏアドレスをゲストのＩＰアドレスで置換して、リンク層アドレスを用いてそのパケットを直接にゲストに配送する。ゲストの視点から見ると、（インテリジェント）アクセスルータは、彼のホームネットワーク上のマシン（特に、その次ホップルータ（ゲートウェイ））をエミュレートしている。ホスト側組織の視点から見ると、ゲストは、内部ネットワーク上の（専用のｃ／ｏアドレスを有する）新しいマシンになっている。
【０１１１】
図９に示すように、ＩＰアドレスａ．ｂ．ｃ．ｄを有するゲストステーションがＩＰアドレスｗ．ｘ．ｙ．ｚを有するターゲットステーションをデスティネーションアドレスとするパケットを送信すると、アクセスルータは、ソースＩＰアドレスａ．ｂ．ｃ．ｄをローカルｃ／ｏアドレスで置換する。従って、ターゲットステーションの返信はアクセスルータへルーティングされ、そこで、アドレス変換が元に戻される。
【０１１２】
図７を参照すると、理解されるように、アクセスルータは、ソースＩＰアドレスをｃ／ｏアドレスで置換し、パケットの生存時間（ｔｔｌ）値をデクリメントして、ＩＰチェックサムを再計算する。
【０１１３】
アクセスルータにより、ゲストステーションは、ＩＰトラフィックを開始することができる。すなわち、ゲストステーションは、ターゲットステーションへＩＰパケットを送信し、その返信を現在のロケーションで受信することができる。ゲストのＩＰアドレスをｃ／ｏアドレスで置換しないと、すべての返信はゲストのホームネットワークへルーティングされ、一般にそこで廃棄されることになる。
【０１１４】
部外者はゲストとの通信を開始することができない。部外者は、ゲストからパケットを受信するまで、ｃ／ｏアドレスを知らないからである。しかし、本発明のこの実施例によるアクセスルータは、ＷＷＷドキュメント検索、電子メール送信、ｔｅｌｎｅｔ（例えば、家で電子メールを読むため）及びｆｔｐを含むほとんどのインターネットサービスにアクセスするには十分である。
【０１１５】
アクセスルータのソフトウェアをインストールするのは簡単かつ容易である。ＤＨＣＰ（２）やモバイルＩＰ（１１）とは異なり、ゲストのマシンやゲストステーションのレギュラーネットワークには、セットアップシグナリングやあらかじめインストールされたソフトウェアは不要である。必要なことは、ゲストが、あらかじめインストールされているＩＰ設定を有することだけである。従って、任意の既存のＩＰデバイス、オペレーティングシステム及び設定を、変更なしでサポートすることができる。シグナリングや初期セットアップがないため、ここで提案する技術は高速で非常にスケーラブルである。
【０１１６】
・詳細な実装−第１実施例
以下で、本発明の第１実施例を実装することに関する詳細について説明する。
【０１１７】
アクセスルータを用いてゲストステーションにＩＰアクセスを提供する際の第１ステップは、ゲストのポータブルデバイスがＩＰパケットを任意のリモートデスティネーションへ送信することを可能にすること、及び、そこからの返信がポータブルデバイスの現在のロケーションに戻ってくることを保証することである。これは２ステップで実現される。第１ステップでは、アクセスルータは、ゲストから送信されるすべてのＩＰパケットを、指定された次ホップのＩＰアドレスが何であっても、インターセプトする。第２に、インターセプトしたパケットをさらに転送する前に、その同じアクセスルータは、ゲストのＩＰアドレスをローカルｃ／ｏ  ＩＰアドレスで置換する。同様に、帰路（リターン）トラフィックでは、このｃ／ｏアドレスは、パケットが最終的に物理リンクを通じてゲストに直接に配送される前に、ゲストの真の（ホーム）ＩＰアドレスに逆変換される。
【０１１８】
・プロキシＡＲＰを用いたＩＰパケットインターセプション
ゲストステーションとアクセスルータが物理ポイントツーポイント媒体を通じて接続されているとき、ＩＰパケットのインターセプション（横取り）は容易である。ゲストステーションとルータが共有媒体を通じて接続されているとき、いくつかの考慮すべき点がある。このような共有媒体の例には、有線あるいは無線のイーサネットがある。
【０１１９】
インターネットのトポロジー、すなわち、その接続グラフは、ＩＰアドレスにより規定される。ＩＰパケットを転送するとき、ネットワークノードは、そのパケットについてルーティングテーブル参照を行うことにより、そのパケットが次に送られなければならないノードのＩＰアドレスを得る。このノードを次ホップという。パケットは最終的にこれらの２つのノード間の物理媒体により伝送されるため、送信側は、次ホップのＩＰアドレスを媒体依存のハードウェアアドレスに変換しなければならない。共有媒体では、このＩＰ−ハードウェアアドレス変換はアドレス解決プロトコルＡＲＰ（３）によって行われる。
【０１２０】
ネットワークノードは、ＩＰアドレスをハードウェアアドレスに変換しなければならないとき、直接に接続されているすべてのマシンへＡＲＰメッセージをブロードキャストする。次ホップ（ルータまたは最終受信者）が、これらのマシンのうちの１つとなる。次ホップは、自己のＩＰアドレスに対するＡＲＰメッセージを受信すると、自己のハードウェアアドレスを応答する。このハードウェアアドレスを用いて、ＡＲＰ要求を発信したホストは、今度は物理層により次ホップへデータパケットを送信することができる。
【０１２１】
ＡＲＰ要求で指定されるＩＰアドレスを有するステーションの代わりに、別のマシンがそのＡＲＰ要求に応答することが可能である。この機構をプロキシ（代理）ＡＲＰといい、ターゲットマシンがＡＲＰをサポートしていない場合に使用することができる。
【０１２２】
ＡＲＰメッセージの交換は物理層で行われる。従って、各媒体ごとに、すべての可能なＡＲＰメッセージと、その媒体のメッセージフォーマットとの間のマッピングを定義しておく必要がある。
【０１２３】
本発明の第１実施例の好ましい実装によれば、プロキシＡＲＰを用いて、ゲストの出力ＩＰトラフィックをインターセプトする。ゲストステーションは、最初にホスティングネットワークに接続されるとき、そのネットワークのハードウェアアドレスを知らない。従って、依然としてホームネットワークに接続されていると仮定して、ゲストステーションは、次ホップルータ（ゲートウェイ）と、ホームネットワークセグメントに属する他のマシンのハードウェアアドレスについて知るためにＡＲＰ要求を送出する。これらはホスティングネットワークに存在しないため、ＡＲＰ要求は未応答のままとなる。これらの「欠けている」マシンをエミュレートするため、アクセスルータは自己のハードウェアアドレスにより（代理として）ＡＲＰ要求に応答する。これにより、ゲストステーションは、そのアクセスルータがもともと通信したい次ホップマシンであると考えて、アクセスルータへすべてのトラフィックを送信することになる。
【０１２４】
しかし、重要な点であるが、このアクセスルータは、ローカルネットワークセグメントに実際に存在するマシン（特に、他のゲスト）のＡＲＰ要求には応答しない。もしもアクセスルータが他のゲストに代理として応答すれば、ゲストステーションから他のゲストステーション宛のすべてのＩＰトラフィックは物理的にアクセスルータへ送信されることになり、他のゲストステーションは実質的に到達不可能となる。
【０１２５】
本発明のこの実施例で対処しなければならないもう１つの考慮すべき点は、多くのマシンが起動時に自己のＩＰアドレスのＡＲＰ要求を送出することである。これは、新たに起動されるマシンが、自己のＩＰアドレスが既に他のマシンによって使用されているかどうかを判定するために行われる。もしもアクセスルータがこのようなＡＲＰ要求に自己のハードウェアアドレスで応答すると、起動されたマシンは、アクセスルータが自分と同じＩＰアドレスを使用していると考え、ネットワークインタフェースをシャットダウンしてしまうことになる。この問題に対処する１つの方法について以下で説明する。
【０１２６】
例えばＬｉｎｕｘなどのＵｎｉｘシステムのようなＢｅｒｋｅｌｅｙ  Ｓｏｃｋｅｔ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ（ソケット）をサポートするオペレーティングシステムでは、接続されている各ネットワーク上にブロードキャストされたすべてのＡＲＰ要求をユーザレベルプロセスが受信することが可能である（実装のヒント：ＥＴＨ＃Ｐ＃ＡＲＰとして指定されたプロトコルのパケットソケットを用いる）。すべてのＡＲＰメッセージをリスン（ｌｉｓｔｅｎ）することにより、このプログラムは、ローカルネットワークに接続されているすべてのマシン（ゲストを含む）のＩＰアドレスと、対応するＨＷアドレスとについて知ることができる。このプログラム（インテリジェントルータ内で実行される）が、まだＩＰ／ＨＷアドレスマッピングを有しないＩＰアドレスに対するＡＲＰ要求を受信した場合、このＡＲＰ要求は、新しいゲストから来ていると結論する。ただし、このプログラムはまず、ある期間（現在の実装では２０ミリ秒間）待機する。この時間後、ＡＲＰ要求型のマシンによって送信されていない場合、このプログラムは、実際に新しいゲストを検出したと結論し、最初のＡＲＰ要求に対して、自己のＨＷアドレスにより応答する。このアルゴリズムは、（１）新しいゲストのＡＲＰ要求が応答されること、及び（２）実際に存在するマシンの代理としてＡＲＰ応答が生成されることはないこと、を保証する。
【０１２７】
本発明のこの第１実施例のルータによるパケットのインターセプションについて、以下、図１７、図１８、図１９、及び図２０を参照して説明する。
【０１２８】
図１９に、本発明のこの実施例によるルータを示す。参照符号９００は、アクセスルータを示す。アクセスルータは、ＣＰＵ９１０、メモリ９２０、ならびにネットワークアダプタ９４１及び９４２を有する。このルータは、以下で説明するステップに従って動作させるソフトウェアを備えた汎用デジタルコンピュータとすることが可能である。
【０１２９】
図１８に、前のいくつかのセクションで説明し図８に示したのと同様のネットワークを示す。しかし、図１８では、ルータ５０４は、アクセスルータ９００で置き換えられている。図１９に示すように、アクセスルータ９００の第１のネットワークアダプタ９４１は、ローカルネットワーク４００に接続されている。同様に、アクセスルータ９００の第２のネットワークアダプタ９４２は、参照符号５００で示される外部ネットワーク、あるいはインターネットに接続されている。アクセスルータ９００のメモリ９２０は、ＡＲＰあて先テーブル９２１及びゲストサービステーブル９２２を有する。
【０１３０】
ステーション２１０は、ネットワーク４００に対してはゲストステーションである。ステーション２１０のレギュラーネットワークは第１のネットワーク２００であるからである。この例ではステーション２１０は、第２のネットワーク３００内の通常の一にあるステーション３１０へＩＰパケットを送信しようとしている。ステーション３１０は、このＩＰパケットのデスティネーションステーションである。この例では、ステーション２１０の、レギュラーネットワークにおけるＩＰアドレスは１３８．１５．１０３．２１である。ステーション３１０のアドレスは１４１．２０．２０．３１である。ルータ９００のアドレスは、２１６．５２．９２．５４である。ステーション２１０は、自己のルータがルータ５０２であり、そのＩＰアドレスは１３８．１５．１０３．５２であることを認識して、レギュラーネットワーク内で動作するようにあらかじめ設定されている。
【０１３１】
ゲストステーション２１０の動作を図１７に示す。これは、ゲストステーションの視点から見て、ゲストステーション２１０があたかも自己のホームアドレスにあるのと全く同じである。
【０１３２】
まず、ステップ１７１０で、ゲストステーション２１０は、自己の所定のネットマスクを用いて、自己のＩＰアドレスを、出力ＩＰパケットのデスティネーションアドレスと比較する。ステップ１７２０の比較は、マスクされたアドレスが等しくないことを示すため、処理はステップ１７３０に進む。ゲストステーション２１０は、所定のルータＩＰアドレス１３８．１５．１０３．５２へＡＲＰ要求を送出する。
【０１３３】
通常の状況では、ネットワーク４００上にはＩＰアドレス１３８．１５．１０３．５２を有するステーションはないため、ゲストステーション２１０は通常は応答を受信しない。しかし、アクセスルータ９００がネットワーク４００上で動作しており、プロキシＡＲＰプログラムにより、図２０に示すようにＡＲＰ要求に応答する。
【０１３４】
ステップ２０１０で、アクセスルータ９００は、ゲストステーション２１０によって送信されたＡＲＰ要求を検出する。ステップ２０２０で、アクセスルータのプロキシＡＲＰプログラムは、自己のＡＲＰテーブル９２１をチェックして、ＡＲＰ宛先がアクセスルータに既に知られているかどうかを判定する。ＡＲＰ要求の宛先のＩＰアドレスが既にＡＲＰ宛先テーブル９２１に記録されている場合、処理はステップ２１１０に進む。ＡＲＰ要求の宛先のＩＰアドレスがＡＲＰ宛先テーブル９２１にまだ記録されていない場合、処理はステップ２０４０に進む。この例では、ゲストステーション２１０はネットワーク４００に接続されたばかりであるため、ＡＲＰ宛先テーブルは、ゲストステーション２１０からのＡＲＰ要求の宛先となるステーションのエントリを有している可能性は少ない（すなわち、ルータ５０２のエントリはない）。
【０１３５】
従って、処理はステップ２０４０に進む。ステップ２０４０で、アクセスルータは、ネットワーク４００上の他のステーションからゲストステーション２１０へ送られるＡＲＰ応答をリスンする。アクセスルータが、ネットワーク４００上の他のステーションからのＡＲＰ応答を検出した場合、処理はステップ２０６０に進む。そうでない場合、処理はステップ２０７０に進む。
【０１３６】
ネットワーク４００上の別のステーションがゲストステーション２１０からのＡＲＰ要求に応答した場合、これは、ＡＲＰ宛先がローカルネットワーク４００に参加していることを意味する。この状況は、ゲストステーション２１０とそのＡＲＰ宛先との間で通信が行われるためにこれ以上アクセスルータ９００による介入が不要であることを意味する。しかし、この例では、目的のＡＲＰ宛先（ルータ５０２）はネットワーク４００に参加していないため、処理はステップ２０７０に進む。
【０１３７】
ステップ２０７０で、アクセスルータ９００はウェイト状態に入る。ウェイト状態が満了した後、処理はステップ２０８０に進む。ステップ２０８０で、あらかじめ定義されたルータＡＲＰウェイトしきい値が満了したかどうかが判定される。この好ましい実施例では、ルータＡＲＰウェイトしきい値は３０ミリ秒である。しかし、ＡＲＰプロトコルの要求−応答期間の最大遅延の少なくとも２倍の時間しきい値を使用すれば十分である。
【０１３８】
ステップ２０８０で、ルータＡＲＰウェイトしきい値がまだ過ぎていない場合、処理はステップ２０５０に進み、ＡＲＰ応答が受信されたかどうかを調べる。この例では、ネットワーク４００上の他のステーションはゲストステーション２１０からのＡＲＰ要求メッセージに対するＡＲＰ応答を送信しない。従って、ルータＡＲＰウェイトしきい値は満たされ（経過し）、処理はステップ２０９０に進む。
【０１３９】
ステップ２０９０で、アクセスルータ９００は、ステーション２１０へプロキシＡＲＰ応答を返送する。このプロキシＡＲＰ応答は、アクセスルータ９００のＨＷアドレスを示す。ステップ２１００、アクセスルータは、ＩＰアドレス１３８．１５．１０３．５２（すなわち、ルータ５０２のＩＰアドレス）を、非ローカルステーションとして、ＡＲＰ宛先テーブル９２１に追加する。ステップ２１１０の処理については後述する。
【０１４０】
図１７に戻って、ゲストステーション２１０は前に、ＡＲＰ要求を、ルータ５０２のあらかじめ定義されたＩＰアドレス（すなわち、ＩＰアドレス１３８．１５．１０３．５２）に送出していた。ステップ１７４０で、ゲストステーション２１０はＡＲＰ応答を検出するため、処理はステップ１７７０に進む。しかし、このＡＲＰ応答は、実際にはアクセスルータ９００から送信されたプロキシＡＲＰ応答である。このプロキシＡＲＰ応答により、ゲストステーション２１０は、ルータ９００のＨＷアドレスが、自己のホームネットワークの次ホップマシン（この例ではルータ５０２）のＨＷアドレスであると考える。ステップ１７７０で、ゲストステーション２１０によって受信された応答を解析し、次ホップＨＷアドレスを取得する。この次ホップＨＷアドレスは、アクセスルータ９００のＨＷアドレスである。ステップ１７８０で、ゲストステーション２１０は、出力ＩＰパケットアドレス１４１．２０．２０．３１（すなわち、デスティネーションステーション３１０のＩＰアドレス）を有する出力ＩＰパケットを次ホップへ送信する。ゲストステーション２１０が、この次ホップＨＷアドレスはルータ５０２のＨＷアドレスであると考えていることは問題ではない。重要な効果は、ホスティングネットワーク４００にとって外来者であるゲストステーションからパケットが送信されていても、パケットが次ホップへ送信されることである。
【０１４１】
図２０に戻って、次に、ステップ２１１０での動作について説明する。特に、ゲストステーション２１０が、ＡＲＰ宛先をステーション５０２とするもう１つのＡＲＰ要求を送出することが起こり得る。このような場合、アクセスルータ９００は、ステップ２０１０でそのＡＲＰ要求を検出する。アクセスルータは、ステップ２０２０でＡＲＰ宛先テーブル９２１をチェックする。ステップ２０３０で、そのアドレスが既に既知でありテーブルにあるかどうかを判定する。ステップ２１１０で、ＡＲＰ宛先がネットワーク４００にとってローカルである場合、アクセスルータ９００は何のアクションもとらない。アクセスルータ９００は、ローカルステーションがＡＲＰ要求に応答すると期待するからである。他方、ＡＲＰ宛先がＡＲＰ宛先テーブル９２１で非ローカルステーションであると示されている場合、アクセスルータ９００は、自分がプロキシＡＲＰ応答を送信することによってＡＲＰ要求メッセージに応答しなければならないことを知る。この応答は、処理がステップ２０９０に進むと送信される。
【０１４２】
上記の例では、ゲストステーション２１０は、通常は自己のレギュラーネットワーク２００に属していなかったデスティネーション３１０へパケットを送信しようとしていた。次に、ゲストステーション２１０が、通常はステーション２１０と同じレギュラーネットワークにあるステーション２２０へＩＰパケットを送信しようとする場合の簡単な例について説明する。
【０１４３】
簡単にいえば、ステップ１７２０における比較の結果、ゲストステーション２１０とデスティネーションステーション２２０のマスクされたアドレスは等しいと判定される。従って、ステップ１７２５で、ゲストステーション２１０は、ステーション２２０のＩＰアドレス（今の例では１３８．１５．１０３．２２）へＡＲＰ要求を送出することになる。
【０１４４】
ステップ２０１０で、アクセスルータは、ＡＲＰ要求メッセージを検出する。ステップ２０２０におけるＡＲＰ宛先テーブルのチェックにより、ステップ２０３０で、ＡＲＰ宛先（すなわちステーション２２０）はアクセスルータ９００にとって未知であることがわかる。ステップ２０４０で、アクセスルータは、ネットワーク４００上のステーションがＡＲＰ応答を送信するのをリスンする。
【０１４５】
ステーション２２０の所有者も、ステーション２１０の所有者と同じホテルあるいは会議に出席しているという場合がある。この場合、ステーション２２０は、ステーション２１０へ直ちにＡＲＰ応答を返送し、アクセスルータ９００は、ＡＲＰ宛先テーブル９２１にローカルステーションとしてステーション２２０のＩＰアドレスを追加する。こうして、ステーション２１０と２２０は、アクセスルータ９００の介在なしに直接に通信することができる。しかし、ステーション２２０がそのレギュラーネットワーク２００に接続されていると仮定すると、ゲストステーション２１０にＡＲＰ応答は戻ってこない。
【０１４６】
ステップ２０８０で、ルータＡＲＰウェイトしきい値が経過すると、アクセスルータ９００は、自己のＨＷアドレスを与えるプロキシＡＲＰ応答をステーション２１０へ送信する。さらに、ＡＲＰ要求宛先のＩＰアドレスが、非ローカルステーションとして、ＡＲＰ宛先テーブル９２１に追加される。
【０１４７】
ステップ１７４０で、ゲストステーション２１０はＡＲＰ応答を受信し、アクセスルータ９００のＨＷアドレスを用いて、出力ＩＰパケットを次ホップへ送信する。こうして、出力ＩＰパケットのデスティネーションステーションが、ゲストステーションのレギュラーネットワークに通常は接続されているステーションであるか、それとも、ゲストステーションのレギュラーネットワークに通常は接続されていないデスティネーションステーションであるかにかかわらず、アクセスルータ９００は、ゲストステーション２１０に、出力ＩＰパケットをアクセスルータ９００へ送信させる。ただし、本発明のこの実施例は、通常は同じレギュラーネットワークを共有する２つのゲストステーションが存在するという状況を考慮に入れている。
【０１４８】
アクセスルータ９００がそのＨＷアドレスをゲストステーションに提供し、それによりゲストステーションが出力ＩＰパケットをアクセスルータに送信するとき、これを、アクセスルータが出力ＩＰパケットをインターセプトするという。
【０１４９】
・ｃ／ｏアドレス割当て
アクセスルータは、出力ＩＰパケットをインターセプトすると、ＩＰヘッダ（図７）のソースＩＰアドレスフィールドから、ゲストステーションのＩＰアドレス、すなわち、ゲストがそのホームネットワークで使用するＩＰアドレスを知ることができる。このホームアドレスはグローバルに一意的であるため、これは、ゲストステーションを識別するためにアクセスルータ内でさらに用いられる。ゲストが、グローバルに一意的である必要のないローカル／プライベートＩＰアドレス（すなわち、１９２．１６８．ｘ．ｘの形のＩＰアドレス）を有するという特殊な場合には、ゲストのＩＰアドレスを、ゲストのグローバルに一意的なＨＷアドレスとともに用いてゲストを識別する。
【０１５０】
さらに、登録されるゲストごとに、アクセスルータは、ゲストサービステーブル９２２内に、統計及びその他のゲストごとのデータを有するゲストサービスレコードを管理する。ゲストサービスレコードは、例えば、ゲストがいくつかの連続するｐｉｎｇ要求に応答しないときに削除される。このようなｐｉｎｇ要求は、所定時間だけイナクティブになっている各ゲストステーションに対してアクセスルータが定期的に発行する。
【０１５１】
既に説明したように、アクセスルータが通常のゲートウェイルータのようにふるまい、インターセプトしたパケットを単に転送する場合、受信機はゲストのＩＰアドレスに応答し、すべてのこのような応答パケットは失われてしまう。これらのパケットは、ホスティングネットワークではなくゲストのホームネットワークへルーティングされることになるからである。これを避けるため、アクセスルータは、ゲストのホームアドレスにローカルｃ／ｏアドレスを関連づけ、これをＩＰヘッダのソースアドレスフィールドに書き込む。これらのパケットに対する応答はアクセルルータに戻り、そこで、ゲストへの最終的な配送を行うことができる。ゲストステーションと、それに割り当てられたｃ／ｏアドレスとの間の関連づけは、ゲストサービスレコードに保持される。アクセスルータは、ゲストサービスレコードの存在しないＩＰパケットを受信した場合、自動的に新しいゲストを認識し、新しいゲストサービスレコードを（新しく関連づけられたｃ／ｏアドレスとともに）作成する。
【０１５２】
入力（帰路）トラフィックでは、アクセスルータは、デスティネーションアドレス（これは、前に割り当てたｃ／ｏアドレスのうちの１つであるはずである）を用いて、対応するゲストサービスレコードを見つける。そして、ゲストのホームＩＰアドレスをＩＰヘッダのデスティネーションアドレスフィールドに入れて、パケットを物理層によりゲストへ配送する。
【０１５３】
・ＩＣＭＰエコー応答メッセージ
ＩＣＭＰエコー応答メッセージは、以前に発行されたＩＣＭＰエコー要求に対する応答である。ＩＥＴＦ標準で規定されているように、この応答メッセージは、もとのエコー要求をワークロード内に「ピギーバック」して運ぶ。特殊な扱いがなければ、アクセスルータは、もとのメッセージ（これは、ＩＰヘッダに、ゲストのホームアドレスではなくｃ／ｏアドレスを含む）をカプセル化し、これは、アクセスルータに変更なしに渡される。一部のシステム、具体的には、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓシステムは、カプセル化されたもとのエコー要求メッセージ内に誤ったＩＰソースアドレスのあるＩＣＭＰエコー要求を受信すると混乱する。ｔｒａｃｅｒｔ（ＵＮＩＸのｔｒａｃｅｒｏｕｔｅのＷｉｎｄｏｗｓバージョン）のようなプログラムはうまく動作しない。この特定の場合には、本発明の第１実施例によるアクセスルータは、カプセル化されたパケットのＩＰヘッダにおいて、ｃ／ｏアドレスをゲストのホームアドレスで置換することによって、ＩＰパケットのワークロードを変更する。
【０１５４】
・チェックサムの計算
ＩＰパケットのソースアドレスまたはデスティネーションアドレスが変更された場合には、ＩＰヘッダチェックサムを再計算する必要がある。アクセスルータは各パケットのソースＩＰアドレスを変更するため、ヘッダチェックサムのこの再計算も同時に実行しなければならない。さらに、ＴＣＰ、ＵＤＰ、及びＩＣＭＰのプロトコルでは、ＴＣＰ／ＵＤＰ／ＩＣＭＰのヘッダチェックサムも再計算しなければならない。ＩＰヘッダのソースアドレス及びデスティネーションアドレスがこれらのチェックサムの計算には含まれるからである。
【０１５５】
・ゲスト間通信
本発明のこの好ましい実施例は、既に説明したように、あるゲストが別のゲストと通信したいときに、これらのゲストが通常は同じレギュラーネットワーク上にある場合でも、通信を提供する。この特殊な場合は実際には、最初に思われるほどまれではない。訪問者がいくつかのＩＰ機能付きデバイス（例えば、ラップトップ、ポータブルプリンタ、及びその他の有用な装置）をホスト側組織の環境に持ち込むと、それぞれがゲストステーションとなる。これらのゲストステーションはおそらく相互作用する必要がある。この状況は、ＳＵＮ  ＭＩＣＲＯＳＹＳＴＥＭＳのＪＩＮＩ技術（１２）と類似している。ＪＩＮＩでは、ポータブルデバイスはプラグアンドプレイにより即時にコミュニティを形成し、事前の計画や人間のインストールなしに、ユーザに高レベルのサービスを提供する。
【０１５６】
上記の状況では、２つのゲストはアクセスルータの関与なしに相互作用した。これらの異なるゲストステーションあるいはデバイスがネットワーク４００に接続するタイミングに依存して、ゲストのうちの１つのレコードに、別のゲストの代わりにアクセスルータのハードウェアアドレスが記録され、アクセスルータはその別のゲストの代理（プロキシ）として作用しており、アクセスルータはそのパケットをインターセプトすることになるという可能性がある。その後、通常は最初のゲストと同じレギュラーネットワークを共有する別のゲストがネットワーク４００に接続する。本発明の実施例によるアクセスルータは、ＡＲＰ宛先テーブル９２１で非ローカルであるとして示されるＡＲＰ宛先が、ゲストサービステーブル９２２においてゲストであるとして示されるのを認識するようにプログラムされる。このような場合、アクセスルータ９００は、ＡＲＰ宛先テーブル内のステータスをローカルに変更することにより、そのゲストが、ルータの介在なしに通信することを可能にする。これを実現するのに、出力パケットを、受信したのと同じネットワークアダプタ（すなわち、図１９におけるアダプタ９４１）を通じて変更なしに転送するなどの、他の方法も可能である。いずれの場合でも、ゲストどうしは、ホームＩＰアドレスを用いて相互に通信することができる。
【０１５７】
第２実施形態
本発明の第２実施形態は、ホスティングネットワークに対して追加のセキュリティ保護を提供する。
【０１５８】
想起されるように、アクセスルータは、ゲストから送信される各パケットを受け取り、そのソースＩＰアドレス（すなわち、ゲストのアドレス）をｃ／ｏアドレスで置換する。このｃ／ｏアドレスにより、パケットは、あたかもホストネットワークに関連するＩＰアドレスから発信されたかのように見える。しかし、このように見えることは、ホストネットワークの観点からは好ましくないことがある。特に、ホストネットワークのレギュラーステーションが、通常はホスティングネットワークのレギュラーメンバに予約されている特権を有することがある。さらに、ホスト側組織は、通常は部外者に対してファイアウォールにより保護されているホストネットワーク内でゲストがＩＰパケットを放出する場合に、セキュリティハザードと見なす可能性がある。
【０１５９】
また、悪意のあるゲストは、ホスティングネットワークのメンバであるふりをして、ホスティングネットワークに（アクセスルータを通じて）パケットを送信することができる可能性がある。このようなパケット内のソースＩＰアドレスは、ｃ／ｏアドレスで置換された後は、ホスティングネットワークのレギュラーステーションによって送信されたパケットと区別がつかない。
【０１６０】
本発明のこの第２実施形態によれば、アクセスルータと（公衆インターネット内のルータのような）外部ステーションとの間のＩＰトンネルを用いて、ホスティングネットワーク及びその環境を悪意のあるゲストからのＩＰパケットに対して保護する。パケットがゲストからホスト側組織内のマシンへ送信されると、まず、ＩＰトンネルを通じてホスト側組織のネットワークを抜けた後、企業のファイアウォールを通じて再び入らなければならない。ここで、「外部ステーション」とは、ホスト側組織のファイアウォールの外側のステーションである。これにより、ゲストからのＩＰパケットは、企業ファイアウォールによって認可されなければ（すなわち、通らなければ）、ホスティングネットワーク内のステーションに決して到達することができない。
【０１６１】
この追加保護は、アクセスルータの出力ネットワークインタフェースを、企業ファイアウォールの外側の次ホップルータに物理的に（例えば、長いケーブル（ｌｏｎｇ  ｃａｂｌｅ）で）接続することによって実現することができる。その場合でも、アクセスルータは依然として物理的にはホスト側組織の構内に位置する。ネットワークの観点から見ると、アクセスルータは企業ネットワークの外側にあり、公衆インターネットドメイン内にある。ゲストが、ホスト側組織の内部マシンのうちの１つへＩＰパケットを送信すると、このパケットは、公衆インターネットから来たのと全く同様に、ファイアウォールを通らなければならない。
【０１６２】
アクセスルータを外部次ホップルータに接続するために物理配線を使用する代わりに、ＩＰトンネルの形式の「仮想配線」を用いて、ずっと経済的かつフレキシブルな方法で、同じ機能と同程度の保護を提供することが可能である。
【０１６３】
ＩＰトンネルは、ＩＰアドレスによって識別される２つのトンネルエンドポイントにより規定される。トンネルの目的は、物理的なポイントツーポイント配線をエミュレートすることである。これは、これらの２点間でＩＰパケットを伝送する物理媒体の代わりに使用することができる。システムエンジニアの観点から見ると、ＩＰトンネルエンドポイントは、「論理的な」ネットワークインタフェース及びそれに等価のもの（例えば、イーサネットネットワークカードのインタフェース）として表されることが多い。ＩＰトンネルを通じてＩＰパケットを送信するためには、別のＩＰパケット内にカプセル化し、ホップバイホップで相手側のトンネルエンドポイントへルーティングする。そのエンドポイントに到達すると、カプセル化されたパケットが取り出される。
【０１６４】
もとのパケットは、カプセル化する側のパケットのワークロードに閉じ込められるため、そのＩＰヘッダは、カプセル化する側のパケットのルーティングに影響を及ぼすことはない。すなわち、カプセル化されたパケットがトンネルを離れることは不可能である。
【０１６５】
物理配線が通常有する十分なレベルのプライバシをエミュレートするには、ＩＰトンネルの両方のトンネルエンドポイントは一般に、相互に認証し、カプセル化されたパケットを暗号化する必要がある。しかし、本発明のこの実施例では、ＩＰトンネルは、ゲストのトラフィックをホスト側のネットワーク内で放出することができないことを保証するためにのみ使用されるため、認証／暗号化は、ホスト側環境にとっての関心事ではなく、省略可能である。
【０１６６】
図１０に、アクセスルータと公衆ネットワーク内の次ホップルータの間のＩＰトンネルを示す。ゲストステーションが送信し、アクセスルータが変更するパケットはすべてこのＩＰトンネルを通って送られる。
【０１６７】
ＩＰトンネルを作成するためにいくつかの技術が利用可能である。すべて、明示的なトンネルセットアップを必要とする。異なるのはカプセル化の方式である。非常にオーバーヘッドの少ない（増えるデータは２０バイトで、パケットごとのデータ処理はない）１つのＩＰトンネリング技術はＩＰ−ｏｖｅｒ−ＩＰである。ＬＩＮＵＸシステム上では、ｉｆｃｏｎｆｉｇコマンドを用いてこのようなトンネルをセットアップすることができる。
【０１６８】
オプションとして、ｃ／ｏアドレスのうちの１つを宛先とするトラフィックがトンネルを通じてルーティングされることを保証するように、外部ルータのルーティングテーブルを調整することも可能である。
【０１６９】
第３実施形態
本発明の第３の実施形態は、ゲストステーションに対して追加のセキュリティを提供する。
【０１７０】
ゲストは、ホスト側の環境を信頼しない可能性があり、また、公衆インターネットからの攻撃を心配する可能性もある。ゲストと特定のｃ／ｏアドレスとの関連づけは一時的でしかないため、インターネットからの攻撃はむしろ困難である。攻撃者には、いつどこで、彼の攻撃対象にどのｃ／ｏアドレスが割り当てられるかはわからないからである。アクセルルータを通じて送信されるパケットはゲストステーションのＩＰアドレスを含まず、ｃ／ｏ  ＩＰアドレスのみを含む。従って、ゲストステーションのＩＰアドレスは、アクセスルータにしかわからない。これに対して、ホスト側環境は、ゲストのＩＰアドレスと、それに割り当てられたｃ／ｏ  ＩＰアドレスとともに知っている。従って、パスワードやその他の秘密情報を含むゲストのＩＰパケットを容易にモニタし、その内容を変更することさえ可能な場合がある。
【０１７１】
ゲストのセキュリティを改善するために、ゲストは、ゲストステーションと、ゲストステーションのホームネットワークのような信頼される環境に存在するルータとの間にセキュアＩＰトンネルを作成することが可能である。このようなルータをトンネルサーバとして図１１に示す。ゲストステーションと、信頼された環境内のトンネルサーバとの間のセキュアＩＰトンネルの作成は、ゲストがあたかも実際にホームにいるかのようにゲストをそのホームネットワークに接続する「ロングワイヤ」をエミュレートするという追加の利点を有する。ゲストステーションからのすべてのトラフィックは、ホームネットワークセグメントで放出される。ゲスト宛のホームネットワークセグメントからのすべてのトラフィックはゲストによって受信されることが可能である。
【０１７２】
本発明のこの実施形態は、ゲストのホームネットワークからのサポートを必要とする。具体的には、ホームネットワークは、相互エンドポイント認証及びデータ暗号化を有するＩＰトンネルをサポートしなければならない。この方式の欠点の１つは、Ｗｉｎｄｏｗｓ  ９５、９８、及びＮＴは、ゲストステーションにおけるルーティングをサポートしていないことである。ゲストからのすべてのトラフィックは同じトンネルを通じてルーティングされ、これは、近くのデスティネーションへのトラフィックに対して不要な迂回を生じる。ＬＩＮＵＸシステムでは、例えば、ゲストはインターネット内の他の信頼されるルータへの追加のセキュアトンネルを作成することも可能である。このような追加のトンネルを、出力トラフィックの代替経路として使用することができる。
【０１７３】
図１１に示すように、ゲストは、上記の第２実施形態によるアクセスルータによって提供されるＩＰ接続を使用して、ゲストステーションと、そのホームネットワーク内のＶＰＮサーバ（すなわちトンネルサーバ）のような信頼されるエンティティとの間にセキュアＩＰトンネルを作成する。
【０１７４】
ＭｉｃｒｏｓｏｆｔのＷｉｎｄｏｗｓオペレーティングシステムのうちの１つを使用するゲストステーションに対応するために、本発明のこの第３実施形態の実際の実装は、トンネルエンドポイント認証にＭｉｃｒｏｓｏｆｔ  Ｃｈａｌｌｅｎｇｅ  Ｈａｎｄｓｈａｋｅプロトコル（ＭＳ−Ｃｈａｐ）を使用し、トラフィック暗号化にＭｉｃｒｏｓｏｆｔ  Ｐｏｉｎｔ−ｔｏ−Ｐｏｉｎｔ  Ｅｎｃｒｙｐｔｉｏｎ（ＭＰＰＥ）（８）を用いる、ＰＰＰ（６）ベースのトンネリング技術を使用することが好ましい。さらに、トンネルの開始及び制御を行い、２つのトンネルエンドポイント間でＰＰＰパケットを交換するために、Ｍｉｃｒｏｓｏｆｔ  Ｐｏｉｎｔ−ｔｏ−Ｐｏｉｎｔ  Ｔｒａｎｓｐｏｒｔ  Ｐｒｏｔｏｃｏｌ（ＰＰＴＰ）を使用するのが好ましい。このアプローチの主要な利点は、すべてのコンポーネントが上記のＭｉｃｒｏｓｏｆｔのシステムで利用可能であることである。さらに、これらのプロトコルはＩＥＴＦによって標準化されているため、提案した解決法は他のオペレーティングシステムとも互換性がある。
【０１７５】
従って、ゲストがＭｉｃｒｏｓｏｆｔのシステムを使用する場合、ゲストステーションがトンネルクライアントの役割を果たすには新たなソフトウェアは不要である。トンネルサーバ側では、市販のＭｉｃｒｏｓｏｆｔ  ＮＴ  ＶＰＮサーバが使用可能である。本発明のもう１つの実施例として、同等の機能を有するサーバを、ＬＩＮＵＸオペレーティングシステムで実装することも好ましい。
【０１７６】
ゲストステーションがホスト側組織からＩＰアクセスを取得した後、ゲストステーションのユーザは、簡単な方法で、ホームネットワークへのセキュアＩＰトンネルの作成を開始することが可能である。例えば、セキュアＩＰトンネルの作成は、ＭＳ  Ｗｉｎｄｏｗｓのデスクトップ上のＮｅｔｗｏｒｋ−Ｄｉａｌ−Ｉｎアイコンをクリックすることによって開始される。このダイヤルイン手続きは、電話番号の代わりにＩＰアドレスがリモートピアとして指定されることを除いては、アナログ電話線を通じてのダイヤルインと非常に似ている。ゲストがダイヤルインＧＵＩの”Ｃｏｎｎｅｃｔ”（接続）ボタンを押した後、クライアントシステムは、指定されたトンネルサーバへのＰＰＴＰコネクションを作成する。このＰＰＴＰコネクションは、実際にはサーバポート１７２３へのＴＣＰコネクションであり、まずＩＰサポートを提供するアクセスルータのアクティビティにより可能となる。ＰＰＴＰパケットは、トンネルサーバに到達すると、ホスト側組織のｃ／ｏアドレスを運ぶ。しかし、カプセル化されたＩＰパケットは、ゲスト自身のＩＰアドレスを運ぶが、アクセスルータからは見えない。アクセスルータの視点から見ると、ゲストは単にＰＰＴＰコネクションを有する。上記のトンネルは実際は２つのトランスポートコネクションを有する。一方は、トンネル制御のためのＴＣＰコネクションであり、他方は、カプセル化されたパケットの交換のためのコネクションである。ただし、ゲストは、このトンネル内に任意の数のコネクションを維持することが可能である。
【０１７７】
本発明のこの実施例の好ましい実装では、トンネルサーバはＬＩＮＵＸオペレーティングシステム上で動作する。インターネットデーモンｉｎｅｔｄは、ＰＰＴＰコネクション要求が到着すると、自動的にｐｐｔｐサーバの新しいインスタンスを起動する（ｉｎｅｔｄに関する詳細は（９）を参照）。この新しいｐｐｔｐサーバインスタンスは、入ってくるＴＣＰコネクションを受け入れ、クライアントともに、それをＰＰＴＰ制御コネクションとして使用する。さらに、トンネルサーバは、自分と発信側ゲストとの間にワークロードコネクションを作成する。このコネクションは、リモートゲストによってではなくＰＰＴＰサーバによって開始されるため、ゲストのホームネットワークのファイアウォールがそれをブロックすることはない。このワークロードコネクションは、ＰＰＰパケットを含むＭＰＰＥ  ＰＤＵを運ぶために使用される。最初のＰＰＰメッセージは実際には、２つのトンネルエンドポイントの相互認証と、トンネルの動作モードのネゴシエーション（暗号化方法及び初期キーのネゴシエーションを含む）のための制御メッセージである。
【０１７８】
注意すべき点であるが、トンネルは必ずしも対称である必要はない。それぞれの方向で異なる動作モードをネゴシエートすることが可能である。この実施例の好ましい実装では、トンネルサーバはＭＰＰＥ暗号化を必要とするが、４０ビットと１２８ビットの間の選択はゲストに委ねられる。知られているように（１０を参照）、Ｍｉｃｒｏｓｏｆｔ  ＭＰＰＥで実装されるような４０ビット暗号化は解読可能であるが、これには非常な労力を必要とする。
【０１７９】
初期ネゴシエーションが完了した後、ワークロードコネクションを使用して、トンネルサーバとリモートクライアントの間で暗号化されたＩＰパケットを交換する。トンネルサーバのＰＰＰ部分は、ＬＩＮＵＸシステム上では別個のプロセス（ＰＰＰデーモンｐｐｐｄ）であり、通常は、リモートトンネルエンドポイントのＩＰアドレスに対するプロキシＡＲＰとなる。従って、これは、ゲスト宛にホームネットワークセグメントに到着するすべてのＩＰパケットをインターセプトし、セキュアトンネルを通じてそれを転送する。逆方向では、ゲストからセキュアトンネルを通じてホームネットワークに到着するパケットはホームネットワーク内で放出される。
【０１８０】
このように、暗号化と組み合わせて、ゲスト自身が、エンドツーエンドＩＰトンネルを使用して、ホスト側環境と公衆インターネットに対して自分のトラフィックを保護することが可能である。さらに、このようなＩＰトンネルはゲストをホームネットワークのＶＰＮサーバと接続することが可能である。この場合、ゲストは、ホスト側組織のネットワーク及び公衆インターネットをＩＰトンネルのための実装基盤としてのみ使用して（これは、ゲストデバイスとホームネットワークセグメントの間の仮想的なケーブルとして作用する）、ホームネットワークと（論理的に）接続されることになる。
【０１８１】
次に、ｐｐｔｐサーバと、トンネルセットアップのいくつかの実際的な事項について簡単に説明する。
【０１８２】
［ＬＩＮＵＸ上におけるＰＰＴＰサーバのインストール］
本発明の実際の実装では、Ｍｉｃｒｏｓｏｆｔ  Ｐｏｉｎｔ−ｔｏ−Ｐｏｉｎｔ  Ｅｎｃｒｙｐｔｉｏｎ（ＭＰＰＥ）をサポートするＰＰＴＰサーバの、完全にＬＩＮＵＸベースの実装が作成される。このサーバは、ＰＰＰデーモン、ＰＰＴＰサーバプログラム及びＭＰＰＥ  ＬＩＮＵＸカーネルモジュールという３つの部分を有する。以下、これらの３つの部分のそれぞれについて説明する。
【０１８３】
・ＰＰＰのインストール
ＬＩＮＵＸシステムは通常、既にＰＰＰデーモン（ｐｐｐｄ）がインストールされている可能性がある。しかし、現在のバージョンは、Ｍｉｃｒｏｓｏｆｔ  Ｐｏｉｎｔ−ｔｏ−Ｐｏｉｎｔ  Ｅｎｃｒｙｐｔｉｏｎプロトコル（ＭＰＰＥ）のパラメータのネゴシエーションをサポートしていない可能性がある。従って、新しいｐｐｐｄのバージョンをＰＰＴＰサーバに含めることが必要になる場合がある。これを実行するには、以下のことが必要である。
【０１８４】
ＰＰＰデーモン実行可能ファイルを／ｕｓｒ／ｓｂｉｎ／ｐｐｐｄにコピーする。
【０１８５】
／ｕｓｒ／ｓｂｉｎ／ｐｐｐｄの所有者（オーナ）をルートに設定し、このファイルのｓｅｔ−ｕｉｄビットをセットする（新しいトンネルを確立するとき、ｐｐｐｄは、プログラムｒｏｕｔｅ及びａｒｐを呼び出して、システムのルーティングテーブル及びＡＲＰテーブルを変更する必要があり、これはスーパーユーザ特権を必要とする）。
【０１８６】
ｃｏｎｆｉｇファイルにより、１行に１つのオプションずつ、ｐｐｐｄを構成する。重要なオプションを図１２に示す。
【０１８７】
ＭＳ−ＣＨＡＰ認証プロセス中にｐｐｐｄ自身を呼出し側（リモートクライアント）に対して認証し、呼出し側の識別を確認するために使用する、図１３に示すような秘密情報をｐｐｐｄに与える。
【０１８８】
・ＰＰＴＰデーモンのインストール
ＰＰＴＰデーモンは、ＴＣＰポート１７２３で、呼出しの到着を待機する。ダイヤルイン要求（すなわち、新しいトンネルを確立する要求）が受信されると、ＰＰＴＰデーモンは、呼出し側とのＴＣＰ制御コネクションと、追加のワークロードコネクションを確立する。これらのステップが正しく完了した場合、ＰＰＴＰデーモンはＰＰＰデーモンを起動し、エンドレスループで、トンネルを通じて受信するすべてのデータをＰＰＰデーモン入力にコピーする。逆に、ＰＰＴＰデーモンは、ＰＰＰデーモンの出力をインターセプトして、トンネルを通じてそれをリモートクライアントへ送る。
【０１８９】
ＰＰＰデーモンは、ファイル／ｅｔｃ／ｐｐｐ／ｏｐｔｉｏｎｓを読み出して自分を構成し、リモート側の相手とのネゴシエーションを開始する。後で暗号化がネゴシエートされる場合でも、このネゴシエーションプロセス中に交換されるメッセージは暗号化されない。ネゴシエーションの完了後、ＰＰＰデーモンはローカルネットワークインタフェースを作成し（例えばＬＩＮＵＸ上ではｐｐｐ０）、すべての出力ＩＰパケットをＰＰＰパケット内にカプセル化する。ＰＰＴＰサーバは、これらのパケットを、ＰＰＰデーモンの出力からインターセプトして、ＧＲＥ（Ｇｅｎｅｒａｌ  Ｒｏｕｔｉｎｇ  Ｅｎｃａｐｓｕｌａｔｉｏｎ）パケット内にカプセル化した後にトンネルを通じて送信する。同様に、逆方向では、ＰＰＴＰデーモンはリモートクライアントからＧＲＥパケットを受信し、ＰＰＰパケットを取り出し、それをＰＰＰデーモンの入力に転送し、そこで、カプセル化されたＩＰパケットが取り出される。
【０１９０】
ＰＰＴＰサーバ（ｐｐｔｐ−ｓｅｒｖｅｒ）は単一のプログラムである。これは、例えば、／ｕｓｒ／ｓｂｉｎ／ｐｐｔｐ＃ｓｅｒｖｅｒのようにインストールされなければならない。特別な特権は不要である。
【０１９１】
ＰＰＴＰサーバを実行するために現在のところ好ましい方法は、ＴＣＰポート１７２３をモニタしてこのポートに対するコネクション要求が到着したときに自動的にＰＰＴＰデーモンを起動するように、インターネットデーモンｉｎｅｔｄを構成することである。ＰＰＴＰサーバの位置が上記の通りであると仮定すると、ｉｎｅｔｄ構成（コンフィグレーション）ファイル内の対応する行は図１４に示すようにすることが可能である。
【０１９２】
ただし、これは、ＰＰＴＰサービスの名前ｐｐｔｐが、図１５に示すように／ｅｔｃ／ｓｅｒｖｉｃｅｓファイル内の行によってシステムに導入されていることを仮定している。
【０１９３】
・ＭＰＰＥ暗号化モジュールのインストール
ＭＰＰＥは、暗号化／復号を、圧縮／伸長の特殊な形式と見なす。圧縮／伸長アルゴリズムが、圧縮モジュールを通じてＬＩＮＵＸに利用可能になっていなければならない。このようなモジュールは、静的にカーネル内にコンパイルすることも可能であり（その場合にはこのようなモジュールは常に利用可能となる）、あるいは、コマンドｉｎｓｍｏｄ  ｍｐｐｅ＃ｃｏｍｐで動的にロードされることも可能である。
【０１９４】
・トンネルのセットアップ
ＩＰトンネルは、アクセスルータと、ホスティングネットワークの企業ファイアウォールの外部のマシンとの間に、ゲストからのすべてのトラフィックが公衆インターネットまでの途中で保護されることを保証するように作成される。ここで、「保護」とは、ファイアウォールを通って戻ることなしに、ゲストステーションから来るパケットがその出力パスを離れることや、ホスト側組織のネットワーク内のステーションに到達することができないことを保証することを意味する。
【０１９５】
ＩＰ−ｏｖｅｒ−ＩＰトンネルは、このような保護機構を確立するための多くの可能な技術のうちの１つに過ぎない。このようなトンネルを使用することは、最も少ないオーバーヘッドしか要求しないために、好ましい。次に、このようなトンネルを確立する実際の例について説明する。
【０１９６】
２つのマシン１２８．１．１．１と１２８．２．２．２の間にＩＰ−ｏｖｅｒ−ＩＰトンネルを確立するために、擬似ネットワークインタフェースｔｕｎ１０を作成し構成しなければならない（これらのＩＰアドレスは、これらのトンネルエンドポイントのイーサネットインタフェースに属するものである）。
【０１９７】
図１６に示すコマンドは、ＩＰアドレス１２８．１．１．１のマシン（アクセスルータ）からＩＰアドレス１２８．２．２．２のマシン（外部ルータ）への一方向トンネルを作成する。
【０１９８】
外部ルータ（外部ポストということもある）が入力トラフィックに対するルータとして作用しない場合、プロキシＡＲＰを用いて、外部ルータがｃ／ｏアドレスに対する入力トラフィックを受信することを保証しなければならない。以下のコマンドはこれを実行するが、認識されるように、外部ルータがイーサネットインタフェースｅｔｈ０を通じて、入力トラフィックを運ぶネットワークセグメントに接続されていると仮定している。
ａｒｐ  −ｓ  ＜ｃ／ｏ  ａｄｄｒｅｓｓ＞  ＜ｅｔｈ０−ｈａｒｄｗａｒｅ−ａｄｄｒ＞  −ｉ  ｅｔｈ０  ｐｕｂ
【０１９９】
第４実施形態
本発明の第４実施形態は、ＩＰアドレスの大きいプールの必要性を回避する方法を提供する。
【０２００】
多数のゲストをサポートすることができるためには、ホスト側組織は十分多くのｃ／ｏアドレス（ゲストごとに１つのアドレス）を確保しなければならない。ゲストの数とポータブルデバイスの数は増大するであろう。インターネットのルーティング構造のもとでは、与えられたアクセスルータに新しいｃ／ｏアドレスを割り当てることが困難である。これらの２つのファクタが組み合わさることにより、ホスト側組織に重大な問題を生じる可能性がある。
【０２０１】
本発明のこの第４実施形態によれば、２つの機能がｃ／ｏアドレスによって実行される。第１に、ｃ／ｏアドレスは、応答（返信）トラフィックがゲストのホームネットワークの代わりにアクセスルータへルーティングされることを保証する。第２に、一意的なｃ／ｏアドレスにより、アクセスルータは、それぞれの返信パケットが属するゲストを識別する。
【０２０２】
第１の目的を実現するためには、すべてのゲストに対する単一のｃ／ｏアドレスで十分である。第２の目的のためには、ＩＰマスカレード（４）と呼ばれる技術を適用することにより、ＴＣＰあるいはＵＤＰのポート番号を用いて、入力ＩＰパケットに対応するゲストを識別する。
【０２０３】
ホーム−ｃ／ｏ  ＩＰアドレス変換と同様に、アクセスルータは、ゲストのソースポート番号を、ルータ内で一意的なｃ／ｏソースポート番号に変換する。ｃ／ｏ  ＩＰアドレスはすべてのゲストに対して同一となる。一意的なソースポート番号（返信トラフィックにおいてデスティネーションポート番号として現れる）を用いて、ゲストサービスレコード（これは、ｃ／ｏアドレスをゲストの真の（ホーム）ＩＰアドレスで置換するために必要となる）を検索し、ｃ／ｏポート番号をもとのソースポート番号で置換することが可能である。こうして、ゲストごとに平均で１０個以下の同時コネクションがある場合に、ｃ／ｏアドレスあたり６，５００までのゲストをサポートすることが可能である。
【０２０４】
ただし、ＩＰマスカレードは、ＵＤＰやＴＣＰのように、ポート番号で上位レベルプロトコルを運ぶＩＰトラフィックに対してのみうまく動作する。しかし、これらのプロトコルは、まさにゲストが最も関心のあるプロトコルであり、上記のＰＰＴＰ  ＩＰトンネルを作成するのに必要なプロトコルである。ゲストは、ＩＰトンネルを確立した後、再び、他のすべてのゲストとは独立に、２１６個のすべてのポート番号を使用することが可能である。
【０２０５】
第５実施形態
本発明の第５実施形態は、効率的なＤＮＳ問合せ（クエリ）の取扱いを実現する。
【０２０６】
ＤＮＳは、既に述べたように、ｗｗｗ．ｎｅｃ．ｃｏｍのような人間が読取り可能なホスト名を１４３．１０１．２５０．２０のようなＩＰアドレスへと解決するネットワークサービスである。ゲストステーションのＩＰ設定には、ゲストのホームネットワークにおけるいくつかのＤＮＳサーバ（これらにすべてのＤＮＳと居合わせ葉送られる）が指定されているはずである。ＤＮＳ問合せを含むＩＰパケットは、ＩＰヘッダのプロトコルフィールドにおける値１７（これはＵＤＰを示す）と、ＵＤＰヘッダにおけるデスティネーションポート番号５３（これはＤＮＳを示す）によって認識することができる。
【０２０７】
この実施形態によるアクセスルータは、ＤＮＳ問合せであるＩＰパケットを認識すると、そのＤＮＳとい合わせのデスティネーションＩＰアドレスを、ローカルＤＮＳサーバのＩＰアドレスで置換する。ＤＮＳはグローバルなネットワークサービスであるため、問合せが、ゲストステーションのホームネットワークのＤＮＳエージェントの代わりに実際にはホスト側組織のＤＮＳエージェントによって応答されることは、ホスティングネットワークのローカルなＤＮＳエージェントを使用するほうが高速で効率的に動作することを除いては、実際上何の問題もない。
【０２０８】
このことは、ＤＮＳ問合せが公衆インターネット上で見えるホストに対して行われる限りにおいて正しい。しかし、ゲストのホームネットワークのＤＮＳサーバが、外部には見えないマシンに関するエントリを維持している可能性がある。そのようなホストに関する問合せは、ホスト側組織のローカルＤＮＳサーバによっては明らかに応答され得ない。さらに、ホスト側組織は、ローカルＤＮＳサーバへのアクセス権を任意のゲストに与えることに関して予約を有する可能性がある。ゲストは、ホスト側組織のネットワークの外部から見えることを想定していないホスティングネットワークに関する情報を受けとる可能性があるからである。従って、この第５実施例の変形によれば、ＤＮＳ問合せをローカルＤＮＳサーバへリダイレクトする機能は、ホスト側組織によってオフにすることが可能なオプションである。すなわち、ＤＮＳリダイレクト機能は、現在の好ましい実施例では選択可能な機能である。
【０２０９】
このような選択可能性を実現するために、アクセスルータは制御インタフェースを有することが可能である。この実施例の実際の実装では、この制御インタフェースは、ＣＯＲＢＡ（５）に基づくオープンな実装とすることが可能である。このようなインタフェースにより、リモートクライアントは、現在登録されているゲストのリストを取得することが可能となる。さらに、これは、ＤＮＳサーバを特定のゲストに割り当てる方法や、ＤＮＳ問合せリダイレクト機能をオフにするための方法を提供する。
【０２１０】
ＣＯＲＢＡは本来的にリモートアクセスをサポートするため、ホスト側組織のネットワーク管理者は、アクセスルータをリモート制御することができる。相互ピア認証やデータ暗号化のようなＣＯＲＢＡの組込みセキュリティ機能は、このインタフェースの無権限の使用に対する保護を行う。
【０２１１】
第６実施形態
ＤＮＳ問合せリダイレクトが提供される第５実施形態と同様に、この実施形態は、ローカルプリンタあるいはプリントサーバへのプリントジョブのリダイレクトを提供する。アクセスルータは、プリントサービス要求が認識されると、ゲストステーションからのパケット内のＩＰデスティネーションアドレスをローカルプリンタあるいはプリントサーバのＩＰアドレスで置換することによりこれをサポートすることができる。プリントサービスに関連するトラフィックは、デスティネーションポート番号によって認識される。本発明のこの実施形態によれば、アクセスルータは、オープンなＣＯＲＢＡベースのインタフェースを提供する。これによれば、特定のローカルプリンタを各ゲストに割り当てること、あるいは、プリントリダイレクトを選択的にオフにすること（この場合、プリントサービス要求によってゲストのホームにあるプリンタが起動される）が可能となる。
【０２１２】
第７実施形態
本発明の第７実施形態は、ゲストサービスレコードの制御のためのＧＵＩを提供する。このＧＵＩは、ホスティングネットワークのシステム管理者のためのコンポーネントと、ゲストステーションを使用するゲストのためのコンポーネントを含む。
【０２１３】
［ホスト側組織のシステム管理者のためのコンポーネント］
ホスト側組織のシステム管理者は、ＣＯＲＢＡ機能付きＪａｖａアプレットを提供するウェブサイトをアクセスルータ（ａｃｃｅｓｓ−ｒｏｕｔｅｒ）からダウンロードすることができる（ＵＲＬ  ｈｔｔｐ：／／＜ａｃｃｅｓｓ−ｒｏｕｔｅｒ＞／ＧｕｅｓｔＩＰｃｏｎｔｒｏｌ．ｈｔｍｌ）。このアプレットは、現在登録されているゲスト、そのゲストのホームＩＰアドレス、及び、そのゲストに割り当てられているｃ／ｏアドレスのリストを示すＧＵＩを備える。このリストから項目を選択することによって、システム管理者は、特定のゲストについての詳細、例えば、そのゲストが登録された時刻や、そのゲストが選択することが可能なローカルＤＮＳサーバ及びローカルプリンタのリスト、を問い合わせることができる。そして、システム管理者は、このリストをゲストごとに編集して、特定のゲストにさらに選択肢を与えたり、選択肢を減らしたりすることができる。さらに、システム管理者は、選択されたゲストの代わりに、利用可能な選択肢のうちの１つを選択する特権を有する。
【０２１４】
［ゲストのためのコンポーネント］
ホスト側組織のシステム管理者によって設定される制限内で、ゲストは、ウェブページｈｔｔｐ：／／＜ａｃｃｅｓｓ−ｒｏｕｔｅｒ＞／ＧｕｅｓｔＩＰ．ｈｔｍｌを開くことが可能である。このウェブページは、ローカルサーバへのＤＮＳ問合せのリダイレクトや、ローカルプリンタへのプリンタ要求のリダイレクトの現在の設定を示すＣＯＲＢＡ機能付きＪａｖａアプレットを提供する。
【０２１５】
次に、パフォーマンスについていくつかの考察を行う。
【０２１６】
パフォーマンス
アクセスルータにおいてｃ／ｏアドレス変換を実行するための主なコストは、ゲストのサービスレコードのルックアップと、ＩＰ／ＵＤＰ／ＴＣＰ／ＩＣＭＰヘッダのチェックサムの再計算である。ゲストのサービスレコードは、ゲストとの間のＩＰパケットごとに検索する必要がある。ルックアップは、トラフィックの方向に依存して、ゲストのホームアドレスまたはｃ／ｏアドレスに基づく。このオペレーションのコストはＯ（ｌｏｇ（ｎ））である。ただし、ｎは登録されているゲストの数である。ｎは通常小さい（２０より小さい）ため、このオペレーションによって受ける転送遅延は無視し得る。
【０２１７】
ヘッダチェックサムの再計算（チェックサムフィールド自体を除くＩＰパケット全体の１６ビットの１の補数の１の補数和）のコストは、ＩＰパケットサイズに線形に比例する。しかし、ソースＩＰアドレスフィールドのみが変更されるため、このコストは、ゲストによって前に計算されたＩＰチェックサムを再使用する際には一定となる。
【０２１８】
認識されるように、本発明の上記の実施例によるアクセスルータを用いたＩＰゲストサポートはネットワークエッジで提供される。ここでは、要求されるスループットは、コアネットワークほど厳しくはない。
【０２１９】
【発明の効果】
結論
インターネットは、現在の支配的なネットワークである。ユーザ数と高度なサービスの数の急速な増大により、インターネットに接続されることは日々ますます重要になっている。同時に、コンピュータのようなネットワークのエンドサービスの物理的サイズは急速に減少しており、（潜在的に）ポータブルになっている。これには、ラップトップのみならず、小型のプリンタ、入力／スキャンデバイス、カメラ、及びその他の、近い将来の多くの有用な装置が含まれる。これらのポータブルデバイスが固有の一意的ＩＰアドレスを有するようになり、これがグローバルに一意的な識別を提供する。本発明によれば、これらのデバイスは、一時的なロケーションにおいても、ＩＰサービスを容易かつ簡単に受けられ、ゲストステーションをホストする際の問題点が解決される。
【０２２０】
本発明によるＩＰアクセスによれば、ホスト側組織は、ローカルなｃ／ｏアドレスをポータブルデバイスに関連づける。ポータブルデバイス（すなわち、ゲストステーション）でのサポートや変更を必要とせずに、インテリジェントアクセスルータは透過的にポータブルデバイスのＩＰアドレス（ホームアドレス）を、そのデバイスの現在のロケーションを指定する関連づけられたｃ／ｏアドレスで置換する。これにより、帰路トラフィックがポータブルデバイスの現在のロケーションに到達することが可能となる。このアドレス変換は入力トラフィックに対しては元に戻されるため、全体のプロセスはポータブルデバイスにとっては透過的なままである。
【０２２１】
ホスト側組織は、ＩＰトンネルを用いて、悪意のあるゲストに対して自分を効果的に保護することができる。さらに、ゲスト（すなわち、ポータブルデバイス）は、セキュアＩＰトンネルを用いて、自分をホスト側組織及び公衆インターネットに対して保護することができる。最後に、ＩＰマスカレードにより、アクセスポイントにおいて多数のポータブルデバイスをサポートするのに必要なｃ／ｏアドレスの数を大幅に少なくすることができる。
【０２２２】
さらに、ゲストを、ローカルネットワークの設定（ＤＮＳサーバやプリンタのアドレスなど）に適合させるためのフレキシブルな機構により、ローカルネットワーク管理者の作業が軽減される。新たな、あるいは一時的に異なるネットワーク設定についての情報をあらゆるユーザのローカルシステムに入れる必要がないためである。
【図面の簡単な説明】
【図１】コンピュータ及びそのいくつかのモジュールの例を示す図である。
【図２】ネットワーク上のステーションを示す図である。
【図３】互いに通信していない２つのネットワークの図である。
【図４】より概念的に、互いに通信していない３つのネットワークを示す図である。
【図５】ネットワークによって相互接続された図４の３つのネットワークの図である。
【図６】ルータがどのようにして２つのネットワークを接続するかを示す図である。
【図７】ＩＰパケットのヘッダの図である。
【図８】１つのステーションが外部ネットワークのゲストステーションであるような、図５のネットワークの図である。
【図９】本発明の実施例によるルータを通じてゲストがターゲットマシンと通信することを示す図である。
【図１０】公衆インターネットにおける、アクセスルータと次ホップルータの間のＩＰトンネルを示す図である。
【図１１】ＩＰ接続を用いて、ゲストステーションがどのようにして、自分と、信頼されたエンティティ（例えば、ゲストステーションのレギュラーネットワーク内のＶＰＮサーバ）との間にセキュアＩＰトンネルを作成するかを示す図である。
【図１２】本発明の一実施例の具体的実装に関連するいくつかの具体的なコマンド及びエントリを示す図である。
【図１３】本発明の一実施例の具体的実装に関連するいくつかの具体的なコマンド及びエントリを示す図である。
【図１４】本発明の一実施例の具体的実装に関連するいくつかの具体的なコマンド及びエントリを示す図である。
【図１５】本発明の一実施例の具体的実装に関連するいくつかの具体的なコマンド及びエントリを示す図である。
【図１６】本発明の一実施例の具体的実装に関連するいくつかの具体的なコマンド及びエントリを示す図である。
【図１７】ＩＰパケットを送信するステーションに関連する流れ図である。
【図１８】本発明の実施例によるアクセスルータがホスティングネットワーク上に設けられた、図８のネットワークの図である。
【図１９】本発明の実施例によるアクセスルータの概略図である。
【図２０】本発明の実施例によるアクセスルータの動作に関する流れ図である。
【符号の説明】
１０  汎用デジタルコンピュータ
１００  中央処理装置（ＣＰＵ）
１１０  メインメモリ
１２０  Ｉ／Ｏプロセッサ
１３０  Ｉ／Ｏデバイス
１４０  ネットワークアダプタ
２００  第１のネットワーク
２１０  コンピュータ
２２０  コンピュータ
２３０  コンピュータ
２４０  コンピュータ
３００  第２のネットワーク
３１０  コンピュータ
３２０  コンピュータ
３３０  コンピュータ
３４０  コンピュータ
４００  第２のネットワーク
４１０  レギュラーステーション
４２０  レギュラーステーション
４３０  レギュラーステーション
４４０  レギュラーステーション
５００  インターネットワーク
５０２  アクセスステーション
５０３  アクセスステーション
５０４  アクセスステーション
６００  ルータ
９００  アクセスルータ
９１０  ＣＰＵ
９２０  メモリ
９２１  ＡＲＰあて先テーブル
９２２  ゲストサービステーブル
９４１  ネットワークアダプタ
９４２  ネットワークアダプタ
【図１】
0003575369.tif 000002
【図２】
0003575369.tif 000003
【図３】
0003575369.tif 000004
【図４】
0003575369.tif 000005
【図５】
0003575369.tif 000006
【図６】
0003575369.tif 000007
【図７】
0003575369.tif 000008
【図８】
0003575369.tif 000009
【図９】
0003575369.tif 000010
【図１０】
0003575369.tif 000011
【図１１】
0003575369.tif 000012
【図１２】
0003575369.tif 000013
【図１３】
0003575369.tif 000014
【図１４】
0003575369.tif 000015
【図１５】
0003575369.tif 000016
【図１６】
0003575369.tif 000017
【図１７】
0003575369.tif 000018
【図１８】
0003575369.tif 000019
【図１９】
0003575369.tif 000020
【図２０】
0003575369.tif 000021