(57)【要約】内部ネットワークに接続されたホストにサブアドレスを割り当て、サブアドレスが割り当てられたホストへパケットを送るときは、パケットにデスティネーションサブアドレスとしてそのホストに割り当てられたサブアドレスを設定して送る。そのようなパケットを内部ネットワークへルーティングするには、サブアドレスとＩＰアドレスの対応表を参照して、パケットに設定されたデスティネーションサブアドレスが割り当てられたホストのＩＰアドレスを求めてパケットのデスティネーションＩＰアドレスに上書きを行う。
2002101998.tif 000002
【特許請求の範囲】
【請求項１】
内部ネットワークと外部ネットワークとのパケットのルーティングを計算機に実行させるルーティングプログラムであって、内部ネットワークのホストに割り当てられたＩＰアドレスとサブアドレスの対応表を参照して、外部ネットワークから受信したパケットのデスティネーションサブアドレスから前記対応表を用いてＩＰアドレスを求めるデスティネーションＩＰアドレス解決ステップと、パケットのヘッダのデスティネーションＩＰアドレスを前記デスティネーションＩＰアドレス解決ステップで求められたＩＰアドレスに上書きして内部ネットワークへパケットをルーティングする内部方向ルーティングステップとを計算機に実行させるルーティングプログラム。
【請求項２】
外部ネットワークから受信したパケットに、デスティネーションサブアドレスが書かれていない場合には、あらかじめ定められたデフォルトホストのＩＰアドレスをパケットのデスティネーションＩＰアドレスに上書きして内部ネットワークへルーティングするデフォルトルーティングステップを計算機に実行させる請求の範囲第１項記載のルーティングプログラム。
【請求項３】
内部ネットワークからパケットを受信した場合に、ソースＩＰアドレスから前記対応表を参照して得られるサブアドレスをソースサブアドレスとしてパケットに設定して外部ネットワークへルーティングする外部方向ルーティングステップを計算機に実行させる請求の範囲第１項記載のルーティングプログラム。
【請求項４】
通信の相手となるホストのＩＰアドレスとサブアドレスとを求めるアドレス解決ステップと、前記アドレス解決ステップで求められたＩＰアドレスをデスティネーションＩＰアドレスとしてパケットに設定し、前記アドレス解決ステップで求められたサブアドレスをデスティネーションサブアドレスとしてパケットに設定するデスティネーションアドレス設定ステップを計算機に実行させる通信プログラム。
【請求項５】
前記アドレス解決ステップにおいて、ドメインネームサーバの特定のレコードに記録されているサブアドレスによって通信の相手となるホストのサブアドレスを求める請求の範囲第４項記載の通信プログラム。
【請求項６】
自ホストのサブアドレスをパケットのソースサブアドレスとして設定するソースサブアドレス設定ステップを計算機に実行させる請求項４に記載の通信プログラム。
【請求項７】
ＩＰパケットに、ソースサブアドレスとサブアドレスとを設定して、ＩＰアドレスとサブアドレスとで決定されるホスト間で通信を行う通信方法。
【請求項８】
前記ソースサブアドレスと前記サブアドレスは、ＩＰパケットのヘッダのオプション部分に設定される請求の範囲第７項記載の通信方法。
【請求項９】
サブアドレスをドメインネームサーバの特定のレコードに記録してサブアドレスを解決する請求の範囲第７項または請求の範囲第８項記載の通信方法。
【請求項１０】
内部ネットワークに接続されたホストにサブアドレスを割り当てるサブアドレス割り当てステップと、内部ネットワークに接続されたホスト全てに同一のＩＰアドレスを割り当てるＩＰアドレス割り当てステップと、内部ネットワークに接続されたホストに割り当てられたＩＰアドレスが仮のＩＰアドレスかどうかを判定するＩＰアドレス判定ステップと、前記ＩＰアドレス割り当てステップで割り当てられたＩＰアドレスが前記ＩＰアドレス判定ステップによって仮のＩＰアドレスであると判定された場合には、正式のＩＰアドレスをネットワークに接続されたホスト全てに割り当てる正式ＩＰアドレス割り当てステップと、内部ネットワークからパケットを受信した場合、正式ＩＰアドレス割り当てステップとともに、パケットのソースＩＰアドレスを前記正式ＩＰアドレス割り当てステップにおいて割り当てた正式ＩＰアドレスに上書きする外部ルーティングステップとを計算機に実行させるルーティングプログラム。
【請求項１１】
内部ネットワークに接続されたホストからパケットを受信した場合、前記サブアドレス割り当てステップにおいて、そのホストに割り当てられたサブアドレスをパケットのソースサブアドレスに設定するソースサブアドレス設定ステップを計算機に実行させる請求の範囲第１０項記載のルーティングプログラム。
【請求項１２】
外部ネットワークからデスティネーションサブアドレスが指定されたパケットを受信した場合、前記サブアドレス割り当てステップによってそのデスティネーションサブアドレスが割り当てられたホストへパケットを送信する内部ルーティングステップを計算機に実行させる請求の範囲第１０項記載のルーティングプログラム。
【請求項１３】
自ホストのサブアドレスを獲得する自サブアドレス解決ステップと、送信するパケットのソースサブアドレスに前記自サブアドレス解決ステップにおいて獲得されたサブアドレスを設定する自サブアドレス設定ステップとを計算機に実行させる通信プログラム。
【請求項１４】
内部ネットワークと外部ネットワークとのパケットのルーティングを行うルーティング装置であって、内部ネットワークのホストに割り当てられたＩＰアドレスとサブアドレスとの対応表を参照して、外部ネットワークから受信したパケットのデスティネーションサブアドレスから前記対応表を用いてＩＰアドレスを求めるデスティネーションＩＰアドレス解決部と、パケットのヘッダのデスティネーションＩＰアドレスを前記デスティネーションＩＰアドレス解決ステップで求められたＩＰアドレスに上書きして内部ネットワークへパケットをルーティングする内部方向ルーティング部とからなるルーティング装置。
【請求項１５】
外部ネットワークから受信したパケットに、デスティネーションサブアドレスが書かれていない場合には、あらかじめ定められたデフォルトホストのＩＰアドレスをパケットのデスティネーションＩＰアドレスに上書きして内部ネットワークへルーティングするデフォルトルーティング部を備えた請求の範囲第１４項記載のルーティング装置。
【請求項１６】
内部ネットワークからパケットを受信した場合に、ソースＩＰアドレスから前記対応表を参照して得られるサブアドレスをソースサブアドレスとしてパケットに設定して外部ネットワークへルーティングする外部方向ルーティング部を備えた請求の範囲第１４項記載のルーティング装置。
【請求項１７】
内部ネットワークに接続されたホストにサブアドレスを割り当てるサブアドレス割り当て部と、内部ネットワークに接続されたホスト全てに同一のＩＰアドレスを割り当てるＩＰアドレス割り当て部と、内部ネットワークに接続されたホスト全てに割り当てられたＩＰアドレスが仮のＩＰアドレスかどうかを判定するＩＰアドレス判定部と、内部ネットワークに接続されたホスト全てに割り当てられたＩＰアドレスが前記ＩＰアドレス判定ステップによって仮のＩＰアドレスであると判定された場合には、正式のＩＰアドレスをネットワークに接続されたホスト全てに割り当てる正式ＩＰアドレス割り当て部と、内部ネットワークからパケットを受信した場合、正式ＩＰアドレス割り当て部によって正式ＩＰアドレスを割り当てるとともに、パケットのソースＩＰアドレスを前記正式ＩＰアドレス割り当て部によって割り当てたられた正式ＩＰアドレスに上書きしてルーティングする外部ルーティング部とを備えたルーティング装置。
【請求項１８】
前記外部ルーティング部は、内部ネットワークに接続されたホストからパケットを受信した場合、そのホストに割り当てられたサブアドレスをパケットのソースサブアドレスに設定するソースサブアドレス設定手段を有する請求の範囲第１７項記載のルーティング装置。
【請求項１９】
外部ネットワークからデスティネーションサブアドレスが指定されたパケットを受信した場合、前記サブアドレス割り当て部によって、そのデスティネーションサブアドレスが割り当てられたホストへパケットを送信する内部ルーティング部を有する請求の範囲第１７項記載のルーティング装置。
【発明の詳細な説明】
技術分野
この発明は、インターネットプロトコルによって通信のために使われるパケットのルーティングを計算機に実行させる方法、ソフトウェア、及び、ルーティングを行う装置、並びに、インターネットプロトコルによる通信を計算機に実行させるプログラムに関する。
背景技術
従来から、インターネットプロトコルを用いた通信が広く用いられている。このインターネットプロトコルを用いた通信においては、通信を行う計算機（以下では「ホスト」と呼ぶ）にＩＰアドレスという４バイトで表される番号を割り当てておく。あるホストが別のホスト（以下では「相手ホスト」と呼ぶ）へ通信によりデータを送信するには、相手ホストのＩＰアドレスを得て、送信されるデータをパケットに分割し、パケットのヘッダに相手ホストのＩＰアドレスをデスティネーションＩＰアドレス、自ホストのＩＰアドレスをソースＩＰアドレスとして設定してネットワークへパケットを送信する。
相手ホストは、自ホストと同じネットワークに接続されている場合もあれば、異なるネットワークに接続されている場合もある。異なるネットワークに接続されているホストと通信が行えるためには、異なるネットワークの境界においてパケットの転送が制御される必要がある。このような異なるネットワークの間でのパケットの転送の制御は「ルーティング」と呼ばれる。
２つの異なるネットワークが接続されている場合に、どちらか一方を「内部ネットワーク」、他方を「外部ネットワーク」と呼び区別することがある。一般に、２つの異なるネットワークのうち、小さい方を内部ネットワークと呼び、大きい方を外部ネットワークと呼ぶ。例えば、家庭内のネットワークとインターネットというネットワークとが接続されている場合、家庭内のネットワークを内部ネットワークと呼び、インターネットというネットワークを外部ネットワークと呼ぶことになる。
内部ネットワークと外部ネットワークとは常に接続されていることはなく、例えば、家庭内でのネットワークである内部ネットワークとインターネットという外部ネットワークとは常に接続されているわけではない。このような場合に、内部ネットワークに接続されたホストには、外部ネットワークに接続されているどのホストとも異なるＩＰアドレスを割り当てるのはＩＰアドレスを無用に消費し無駄であるので、内部ネットワークに接続されたホストには「プライベートアドレス」に分類されるＩＰアドレスが割り当てられる。プライベートアドレスは、内部ネットワークの中に限ってホストを一意に識別できるが、内部ネットワークと外部ネットワークとを含めたネットワーク全体では一意にホストが識別できない。これに対し、ネットワーク全体で一意にホストが識別されるＩＰアドレスは「グローバルアドレス」と呼ばれる。
プライベートアドレスが割り当てられたホストはネットワーク全体で一意に識別されないため外部ネットワークに接続されたホストとは直接通信することができないことになる。そこで、「ネットワークアドレス変換（Ｎｅｔｗｏｒｋ  Ａｄｄｒｅｓｓ  Ｔｒａｎｓｌａｔｏｒ）」や「ネットワークアドレス及びポート変換（Ｎｅｔｗｏｒｋ  Ａｄｄｒｅｓｓ  Ｐｏｒｔ  Ｔｒａｎｓｌａｔｉｏｎ）」と呼ばれる手法が用いられる。これらの手法は、内部ネットワークと外部ネットワークとのパケットのルーティングを行う計算機あるいは装置の外部ネットワーク側のネットワークインターフェースに、グローバルアドレスを割り当て、ルーティングを行う装置が内部ネットワークから外部ネットワークへパケットを転送する際にはパケットのヘッダのソースＩＰアドレスを、ルーティングを行う計算機あるいは装置に割り当てられたグローバルアドレスによって上書きしてルーティングを行い、また反対に、インターネットからプライベートアドレスが割り当てられたホストが接続されたネットワークへパケットを転送する場合には、デスティネーションＩＰアドレスをプライベートアドレスによって上書きしてルーティングを行う。これにより、プライベートアドレスが割り当てられたホストとインターネットに接続されたホストとが通信できるようになる。
しかし、ネットワークアドレス変換やネットワークアドレス及びポート変換を用いたとしても、通信の開始は内部ネットワークに接続されたホストから行われる必要があり、外部ネットワークに接続されたホストが、プライベートアドレスが割り当てられた任意のホストを特定して通信を開始することができないという問題がある。このため、通信プロトコルによっては、プライベートアドレスが割り当てられたホストでは使用できないアプリケーションが存在することになり、好ましくない。
従って、本発明は、外部ネットワークに接続されたホストから、内部ネットワークに接続されたホストを特定して通信を開始することができるようにし、通信プロトコルによらず、全てのアプリケーションプログラムが内部ネットワークに接続され、プライベートアドレスが割り当てられたホストで使用できるようにすることを目的とする。また、内部ネットワークに接続されたホストから、外部ネットワークを経由して別の内部ネットワークに接続されたホストを特定して通信を開始することができるようにすることも本発明の目的である。
発明の開示
本発明においては、内部ネットワークに接続されたホストに、ＩＰアドレスとは別にサブアドレスを割り当てておく。外部ネットワークに接続されたホストが内部ネットワークに接続された特定のホストにパケットを送るときは、パケットのヘッダにその特定のホストに割り当てられたサブアドレスをデスティネーションサブアドレスとして設定する。
また、ヘッダにデスティネーションサブアドレスが設定されたパケットを外部ネットワークから内部ネットワークへルーティングするためには、デスティネーションサブアドレスが割り当てられたホストのＩＰアドレスをパケットのデスティネーションＩＰアドレスに上書きして内部ネットワークへパケットを送信する。また、デスティネーションサブアドレスが設定されていないパケットを外部ネットワークから内部ネットワークへルーティングするためには、内部ネットワークに接続された特定のホストのＩＰアドレスをパケットのデスティネーションＩＰアドレスに上書きして内部ネットワークへパケットを送信する。内部ネットワークから外部ネットワークへパケットをルーティングするには、ソースＩＰアドレスが割り当てられたホストのサブアドレスを求めて、それをヘッダのソースサブアドレスとして設定して外部へパケットを送信する。
サブアドレスが割り当てられたホストと通信するためには、そのホストに割り当てられたサブアドレスを知る必要があるが、サブアドレスをドメインネームサーバの特定レコードに記録しておくことにより、ホストのサブアドレスを知ることができるようにする。
また、内部ネットワークに接続されたホストは、内部ネットワーク内ではサブアドレスによって特定することができるので、内部ネットワークに接続されたホストには、異なるＩＰアドレスを割り当てる必要がない。そこで、内部ネットワークに接続されたホストには、同じＩＰアドレスを仮に割り当てておき、内部ネットワークと外部ネットワークとでパケットをルーティングするために内部ネットワークにグローバルＩＰアドレスが割り当てられた時に、そのグローバルＩＰアドレスを正式なＩＰアドレスとして内部ネットワークに接続されたホストに割り当ててもよい。
発明を実施するための最良の形態
本発明をより詳細に説述するために、添付の図面を用いてこれを説明する。
第１図は、ルーティングを行う計算機１０１がインターネット１０２に接続された外部ネットワーク１０３と内部ネットワーク１０４に接続されており、内部ネットワークにホスト１０５、１０６、１０７が接続され、外部ネットワークにはホスト１０８が接続されている状態を示す。内部ネットワークのホスト１０５、１０６、１０７には、それぞれ１９２．１６８．０．２、１９２．１６８．０．３、１９２．１６８．０．４というプライベートアドレスが割り当てられており、ルーティングを行う計算機１０１の内部ネットワーク１０４側のネットワークインターフェースに１９２．１６８．０．１というプライベートアドレスが割り当てられ、外部ネットワーク１０３側のネットワークインターフェースには１３３．１３９．２１０．４というグローバルアドレスが割り当てられているとする。
第２図は、ネットワークに接続されたホストが通信を行うために用いられるパケットの構造を示しており、パケットの最初の部分（「ヘッダ」と呼ばれる）は３２ビットを一つの単位として分割され、２０１の部分にソースＩＰアドレス、２０２の部分にデスティネーションＩＰアドレスが設定される。２０３の部分はオプションと呼ばれる部分であり、本発明においては、ソースサブアドレスとデスティネーションサブアドレスを格納するのに用いられる。
第３図は、第１図の内部ネットワーク１０４に接続されたホスト１０５、１０６、１０７にそれぞれサブアドレスとして１、２、３が割り当てられた状態を示している。このようにサブアドレスを割り当てると、ルーティングを行う計算機１０１は、第４図に示す表４０１のような内部ネットワークに接続されたホストに割り当てられたＩＰアドレスとサブアドレスとの対応関係を表す表を保持することになる。
サブアドレスが割り当てられたホストが送信あるいは受信するパケットには、そのホストに割り当てられたサブアドレスが設定される。その設定の一つの方法としては、例えば、パケットのオプションの部分に設定する方法が挙げられる。この方法に基づき、第５図は、サブアドレスが割り当てられたホストが送信あるいは受信するパケットにサブアドレスを設定するために、パケットのオプションの部分２０３にサブアドレスが格納されている状態を示している。サブアドレスが１６ビットで表されるとすれば、オプション部分の最初の１６ビット部分に、パケットを送信したホストに割り当てられたサブアドレスであるソースサブアドレスが格納され、次の１６ビット部分に、パケットの行き先であるホストに割り当てられたサブアドレスであるデスティネーションサブアドレスが設定される。
第６図は、ルーティングを行う計算機１０１にルーティングを実行させるプログラムの動作を説明するフローチャートである。まず、ステップＳ６０１において、パケットを受信するまで計算機１０１を待機させる。パケットを受信した場合、ステップＳ６０２に制御を計算機１０１に移行させ、パケットが外部ネットワーク１０３から受信したものか、内部ネットワーク１０４から受信したものかどうかを判断させ、外部ネットワークから受信した場合にはステップＳ６０３へ制御を移行させ、内部ネットワークから受信した場合にはステップＳ６０７へ制御を移行させる。ステップＳ６０３においては、パケットのオプション部分にデスティネーションサブアドレスが設定されているかどうかを計算機１０１に判断させ、デスティネーションサブアドレスが設定されていればステップＳ６０４へ制御を移行させ、設定されていなければステップＳ６０６へ制御を移行させる。ステップ６０４は、表４０１を参照してデスティネーションサブアドレスよりパケットを受け取るべきホストのＩＰアドレスを計算機１０１に獲得させるステップである。すなわち、このステップは、内部ネットワークのホストに割り当てられたＩＰアドレスとサブアドレスの対応表４０１を参照して、外部ネットワーク１０３から受信したパケットのデスティネーションサブアドレスから前記対応表を用いてＩＰアドレスを求めるデスティネーションＩＰアドレス解決ステップである。ステップＳ６０５においては、ステップＳ６０４で得られたＩＰアドレスをパケットのデスティネーションＩＰアドレスとして計算機１０１に上書きさせパケットをルーティングさせる。すなわち、このステップは、パケットのヘッダのデスティネーションＩＰアドレスを前記デスティネーションＩＰアドレス解決ステップで求められたＩＰアドレスに上書きして内部ネットワーク１０４へパケットをルーティングする内部方向ルーティングステップである。このデスティネーションＩＰアドレス解決ステップと内部方向ルーティングステップとにより、デスティネーションサブアドレスが指定されたパケットを外部ネットワークから受信した場合に、デスティネーションサブアドレスが割り当てられた内部ネットワークに接続されたホストへパケットを到達させることができる。
ステップＳ６０３において、パケットにデスティネーションサブアドレスが設定されていないと判断された場合には、ステップＳ６０６へ制御を移行させ、あらかじめ定められたデフォルトホストのＩＰアドレスをパケットのデスティネーションＩＰアドレスに上書きして内部ネットワークへルーティングするデフォルトルーティングステップを計算機１０１に実行させる。このデフォルトルーティングステップにより、デスティネーションサブアドレスが設定されていないパケットが外部ネットワークから受信されても、そのパケットを処理するデフォルトホストへパケットを到達させることができる。
ステップＳ６０２において、内部ネットワーク１０４からパケットが受信された場合には、ステップＳ６０７へ制御を移行させ、ソースＩＰアドレスからＩＰアドレスとサブアドレスの対応表４０１を参照して得られるサブアドレスをソースサブアドレスとしてパケットに設定して外部ネットワークへルーティングする外部方向ルーティングステップを計算機１０１に実行させる。この外部方向ルーティングステップにより、内部ネットワーク１０４に接続されたホストから外部ネットワーク１０３へ送信されるパケットには、ソースサブアドレスが必ず設定されるので、外部ネットワークに接続されたホストがそのパケットを受信した場合、通信の相手先のホストのサブアドレスを知ることができ、そのサブアドレスを用いることにより応答のパケットをそのホストへ送信することが可能となる。
このようなステップからなるプログラムを計算機１０１に実行させることにより、外部ネットワーク１０３に接続されたホスト１０８が内部ネットワークに接続されたホストに割り当てられたサブアドレスをパケットにデスティネーションサブアドレスとして設定し、内部ネットワークに接続された特定のホストにパケットを送信できるようになる。また、ルーティングを行う計算機１０１に、内部ネットワークに接続されたホストから外部ネットワークに送信されたパケットに、その内部ネットワークに接続されたホストに割り当てられたサブアドレスをソースサブアドレスとして設定させることにより、外部ネットワークに接続されたホストは、パケットを送信したホストに割り当てられたサブアドレスを知ることができるようになる。
第７図は、外部ネットワーク１０３に接続されたホスト１０８が、内部ネットワーク１０４に接続されたホストを特定してまず送信を行うことにより通信を開始して処理を行うことを説明するフローチャートである。まず、ステップＳ７０１において、通信の相手となるホストのＩＰアドレスとサブアドレスを計算機であるホスト１０８に求めさせる。すなわち、ステップＳ７０１はアドレス解決ステップである。内部ネットワークに接続されたホストにプライベートアドレスが設定されている場合には、プライベートアドレスでは一意にホストが特定できないため、ルーティングを行う計算機１０１の外部ネットワーク１０３に接続されたネットワークインターフェースに割り当てられたグローバルアドレスを求めさせることになる。このグローバルアドレスを求めさせるには、ドメインネームサーバのＡレコードを参照させるなどの方法がある。なお、まず受信を行って通信を開始する場合には、受信を行ったパケットに設定されたＩＰアドレスとサブアドレスから通信相手のホストを特定することができる。また、内部ネットワークに接続されたホストに割り当てられたサブアドレスは、ドメインネームサーバの特定レコードに記録されているサブアドレスを参照させることにより得させてもよい。特定レコードの例としては、ＨＩＮＦＯレコードが挙げられる。ステップＳ７０２において、データ送信させるかどうかを判断し、データ送信させるならばステップＳ７０３へ制御を移行させ、データ受信させるならばステップＳ７０６へ制御を移行させる。ステップＳ７０３においては、送信データの生成を実行させ、ステップＳ７０４においては、送信データをパケットに分割させ、パケットにステップＳ７０１で求められたＩＰアドレスとサブアドレスとをデスティネーションＩＰアドレスとデスティネーションサブアドレスとして設定するデスティネーションサブアドレス設定ステップを実行させる。そしてステップＳ７０５において、パケットを送信させ、ステップＳ７０８において通信が終了したかどうかを判断させ、通信が終了すれば処理を終了させ、そうでなければステップＳ７０２へ制御を移行させる。ステップＳ０２において、データ受信させるならばステップＳ７０６へ制御を移行させ、受信の処理を実行させ、ステップＳ７０７において、受信したデータの処理を実行させ、ステップＳ７０８へ制御を移行させる。
第７図の処理を計算機に実行させるプログラムは、外部ネットワーク１０３に接続されたホスト１０８だけではなく、内部ネットワーク１０４に接続されたホストが外部ネットワークに接続されたホストであってサブアドレスが割り当てられたホストと通信を行う際にも用いることができる。
また、ステップＳ７０４において、デスティネーションＩＰアドレスとデスティネーションサブアドレスをパケットに設定させるのみならず、自ホストにサブアドレスが設定されている場合には、そのサブアドレスをソースサブアドレスとしてパケットに設定させるソースサブアドレス設定ステップを実行させるようにしてもよい。
以上においては、内部ネットワークに接続されたホストには異なるＩＰアドレスを割り当てるようにしたが、内部ネットワークに接続されたホストに同じＩＰアドレスを割り当てるようにしてもよい。第８図は、内部ネットワークに同じＩＰアドレスが割り当てられている状態を示す。すなわち、ルーティングを行う計算機８０１にインターネット８０２に接続された外部ネットワーク８０３と内部ネットワーク８０４とが接続されており、内部ネットワークにホスト８０５、８０６、８０７が接続されており、これらのホスト８０５、８０６、８０７とルーティングを行う計算機８０１の内部ネットワーク側のネットワークインターフェースに同じＩＰアドレス１９２．１６８．０．１が割り当てられており、ルーティングを行う計算機８０１の内部ネットワーク側のネットワークインターフェースと、ホスト８０５、８０６、８０７とにそれぞれサブアドレスとして、０、１、２、３が割り当てられている。第８図では、ルーティングを行う計算機８０１の内部ネットワーク側のネットワークインターフェースに０．０．０．０というＩＰアドレスが割り当てられているが、これは、ルーティングを行う計算機８０１と外部ネットワーク８０３が接続されていないことを表している。
このように内部ネットワークに接続されたホストおよびルーティングを行う計算機８０１の内部ネットワーク側のネットワークインターフェースに同じＩＰアドレスが割り当てられた場合、内部ネットワーク内で通信を行うためには、物理層におけるアドレスによって通信先のホストを特定することになる。例えば、内部ネットワーク８０４がイーサーネットを用いて構築されている場合には、ＭＡＣアドレスによってホストを特定することになる。このため、第９図に示すようにＭＡＣアドレスとサブアドレスとを対応付ける表９０１を、ルーティングを行う計算機８０１、ホスト８０５、８０６、８０７が持つことになる。以下では、内部ネットワークがイーサーネットで構築されていると仮定するが、他の物理的なネットワークの構築についても同様である。
第１０図はルーティングを行う計算機８０１と外部ネットワーク８０３が接続され、ルーティングを行う計算機８０１の外部ネットワーク側のネットワークインターフェースに１３３．１３９．２１３．９４というグローバルアドレスが割り当てられ、これに伴って、内部ネットワークに接続されたホスト８０５、８０６、８０７に１３３．１３９．２１３．９４というグローバルアドレスが割り当てられた図である。このようにグローバルアドレスが内部ネットワークに接続されたホストに割り当てられても、サブアドレスは変わらない。
第１１図は、このように内部ネットワークに接続されたホストに同じＩＰアドレスを割り当てる場合のルーティングを行う計算機８０１にルーティングをその計算機に実行させるプログラムの動作を説明するフローチャートである。まず、ステップＳ１１０１において、内部ネットワークに接続されたホストに対してサブアドレスを計算機８０１に割り当てさせる。すなわち、ステップＳ１１０１はサブアドレス割り当てステップである。このステップを計算機８０１に実行させると、どのＭＡＣアドレスを持つホストにどのサブアドレスが割り当てられたかを知ることができ、表９０１のようなＭＡＣアドレスとサブアドレスの対応表を作ることができる。ステップＳ１１０２において、内部ネットワークに接続されたホストに対して同一のＩＰアドレスを割り当てさせる。ステップＳ１１０３において、パケットを受信するまで待機することを計算機８０１に行わせる。ステップＳ１１０４において、受信したパケットが内部ネットワーク８０４から受信されたものであるかどうか判断させ、内部ネットワーク８０４から受信されたものであればステップＳ１１０４に制御を移行させ、そうでなければステップＳ１１０８へ制御を移行させる。ステップＳ１１０５において、ステップＳ１１０１のサブアドレス割り当てステップで割り当てられたＩＰアドレスが「仮のＩＰアドレス」であるかどうかを判断するＩＰアドレス判断ステップを実行させる。仮のＩＰアドレスとは、「正式なＩＰアドレス」ではないＩＰアドレスであり、正式なＩＰアドレスとは、ルーティングを行う計算機８０１と外部ネットワーク８０３が接続されている状態下でのルーティングを行う計算機８０１の外部ネットワーク８０３側のネットワークインターフェースに割り当てられているＩＰアドレスのことである。したがって、ルーティングを行う計算機８０１と外部ネットワーク８０３が接続されていなければ、ルーティングを行う計算機８０１の外部ネットワーク８０３側のネットワークインターフェースに割り当てられているＩＰアドレスは仮のＩＰアドレスとなる。ステップＳ１１０５において、仮のＩＰアドレスが割り当てられていないと判断された場合には、ステップＳ１１０７へ制御を移行させ、仮のＩＰアドレスが割り当てられていると判断された場合にはステップＳ１１０６へ制御を移行させ、正式のＩＰアドレスを内部ネットワークに接続されたホスト全てに割り当ててステップＳ１１０７へ制御を移行させる。ステップＳ１１０７においては、パケットのソースＩＰアドレスを正式ＩＰアドレス割り当てステップにおいて割り当てた正式アドレスに上書きする外部ルーティングステップを実行させる。これにより、内部ネットワーク８０４から外部ネットワーク８０３へパケットが送信される場合、正式なＩＰアドレスがソースＩＰアドレスになったパケットが送信される。
ステップＳ１１０４において、外部ネットワークからパケットを受信した場合には、パケットに書かれたデスティネーションサブアドレスが割り当てられたホストへパケットを送信する内部ルーティングステップを実行させる。これにより、外部ネットワーク８０３に接続されたホストがデスティネーションサブアドレスをパケットに設定すれば、そのデスティネーションサブアドレスが割り当てられたホストへパケットを到達させることができる。
なお、ステップＳ１１０７において、パケットを外部ネットワーク８０３へルーティングする際には、どのＭＡＣアドレスを持つホストからパケットが送信されたかを調べ、表９０１からそのホストのサブアドレスを得て、パケットのソースサブアドレスに設定するソースサブアドレス設定ステップを実行させてもよい。これにより、内部ネットワーク８０４の接続されたホストから送信されたパケットを受信した外部ネットワーク８０３に接続されたホストが、どのサブアドレスが割り当てられたホストからのパケットであるかを知ることが確実にできるようになる。
また、内部ネットワーク８０４に接続されたホストにおいては、通信を行うために、自ホストのサブアドレスを獲得する自サブアドレス解決ステップと、送信するパケットのソースサブアドレスに、自サブアドレス解決ステップによって獲得された自ホストのサブアドレスを設定する自サブアドレス設定ステップとを計算機であるホストに実行させるプログラムを動作させることにより、内部ネットワーク８０４に接続されたホストと外部ネットワーク８０３に接続されたホストが通信できるようになる。
このような構成により、サブアドレスが割り当てられたホストへ向けて外部ネットワークに接続されたホストより通信を行うことが可能となる。
第１２図は、外部ネットワーク１２０１とサブアドレスが割り当てられたホストが接続された内部ネットワーク１２０２との間でパケットのルーティングを行うルーティング装置１２００のブロック図である。ルーティング装置１２００は、デスティネーションＩＰアドレス解決部１２０３と、内部方向ルーティング部１２０４と、デフォルトルーティング部１２０５と、外部方向ルーティング部１２０６とから構成される。
デスティネーションＩＰアドレス解決部１２０３は、第４図の表４０１のように内部ネットワークに接続されたホストに割り当てられたＩＰアドレスとサブアドレスとの対応関係を示す表を参照して、外部ネットワークから受信したパケットのデスティネーションサブアドレスからそのデスティネーションサブアドレスが割り当てられたホストのＩＰアドレスを求める。
内部方向ルーティング部は、パケットのヘッダのデスティネーションＩＰアドレスをデスティネーションＩＰアドレス解決部１２０３で求められたＩＰアドレスに上書きして内部ネットワークへルーティングする。
デスティネーションＩＰアドレス解決部１２０３と内部方向ルーティング部によって、デスティネーションサブアドレスが設定されたパケットを外部ネットワーク１２０１から受信した場合、そのデスティネーションサブアドレスが割り当てられた内部ネットワークに接続されたホストへパケットをルーティングすることが可能となる。
デフォルトルーティング部１２０５は、外部ネットワーク１２０１から受信したパケットにデスティネーションサブアドレスが書かれていない場合に、あらかじめ定められたデフォルトホストのＩＰアドレスをパケットのデスティネーションＩＰアドレスに上書きして内部ネットワークへルーティングする。これにより、デスティネーションサブアドレスが設定されていないパケットを外部ネットワーク１２０１から受信した場合、そのパケットを処理するホストへパケットをルーティングすることができる。
外部方向ルーティング部１２０６は、内部ネットワーク１２０２からパケットを受信し、パケットのソースＩＰアドレスから表４０１に示されるような内部ネットワークに接続されたホストに割り当てられたＩＰアドレスとサブアドレスとの対応関係を示す表を参照して得られるサブアドレスをソースサブアドレスとしてパケットに設定して外部ネットワークへルーティングする。このとき、パケットのソースＩＰアドレスをルーティング装置の外部ネットワーク１２０１側のネットワークインターフェースに割り当てられたＩＰアドレスに上書きしてもよい。この外部方向ルーティング部１２０６により、内部ネットワーク１２０２から外部ネットワーク１２０１へルーティングされるパケットには、ソースサブアドレスが必ず設定されることになり、そのようなパケットを受信した外部ネットワーク１２０１に接続されたホストは、内部ネットワーク１２０２に接続されたどのホストから送信されたパケットであるかを知ることができ、返信のパケットをそのホスト宛に送信することが可能となる。
このような構成のルーティング装置により、外部ネットワークから内部ネットワークのホストを特定して通信を行うことが可能となる。
第１３図は、同じＩＰアドレスが割り当てられるホストが接続される内部ネットワークと外部ネットワークとのパケットのルーティングを行うルーティング装置のブロック図である。ルーティング装置１３００は、サブアドレス割り当て部１３０１と、ＩＰアドレス割り当て部１３０２と、ＩＰアドレス判定部１３０３と、正式ＩＰアドレス割り当て部１３０４と、外部ルーティング部１３０５と、ソースサブアドレス設定手段１３０６と、内部ルーティング部１３０７からなる。
サブアドレス割り当て部１３０１は、内部ネットワーク１３０８に接続されたホストにサブアドレスを割り当てる。
ＩＰアドレス割り当て部１３０２は、内部ネットワーク１３０８に接続されたホストに同じＩＰアドレスを割り当てる。
ＩＰアドレス判定部１３０３は、内部ネットワーク１３０８に接続されたホストに割り当てられているＩＰアドレスが「仮のものである」かどうかを判定する。ＩＰアドレスが仮のものであるということは、ＩＰアドレスが「正式なもの」ではないということで定義される。ＩＰアドレスが正式なものであるとは、ＩＰアドレスが、ルーティング装置１３００と外部ネットワーク１３０９が接続されてられており、かつ、ルーティング装置１３００の外部ネットワーク１３０９側のネットワークインターフェースに割り当てられているＩＰアドレスと等しいという条件が成り立つことによって定義される。したがって、ルーティング装置１３００と外部ネットワーク１３０９とが接続されていなければ、ルーティング装置１３００の外部ネットワーク１３０９側のネットワークインターフェースに割り当てられているＩＰアドレスは正式なものではないことになる。
正式ＩＰアドレス割り当て部１３０４は、正式なＩＰアドレスをネットワークに接続されているホスト全てに割り当てることを行う。すなわち、正式なものであるＩＰアドレスをネットワークに接続されているホスト全てに割り当てることを行う。ここに、「ネットワークに接続されているホスト」とは、内部ネットワーク１３０８に接続されているホストのことである。
外部ルーティング部１３０５は、内部ネットワーク１３０８からパケットを受信した場合、正式ＩＰアドレス割り当て部１３０４によって正式なＩＰアドレスをネットワークに接続されたホストに割り当て、受信したパケットのソースＩＰアドレスを正式ＩＰアドレス割り当て部１３０４によって割り当てられた正式なＩＰアドレスに設定して外部ネットワーク１３０９へルーティングする。
以上の構成により、内部ネットワーク１３０８から外部ネットワーク１３０９へパケットがルーティングされるとき、パケットのソースＩＰアドレスが正式なＩＰアドレスとなってルーティングされ、外部ネットワーク１３０９に接続されたホストがパケットを受信した場合に、返信のパケットを送信することができるようになる。
また、この外部ルーティング部１３０５は、内部ネットワーク１３０８に接続されたホストから受信した場合に、そのホストに割り当てられたサブアドレスをパケットのソースサブアドレスに設定するソースサブアドレス設定手段１３０６を有していてもよい。これにより、外部ネットワーク１３０９にルーティングされるパケットにはソースサブアドレスが確実に設定され、内部ネットワーク１３０８に接続されたホストから送信されたパケットを受信した外部ネットワーク１３０９に接続されたホストは、内部ネットワーク１３０８に接続されたどのホストから送信されたパケットであるかを知ることができる。
内部ルーティング部１３０７は、外部ネットワーク１３０９からデスティネーションサブアドレスが指定されたパケットを受信した場合、サブアドレス割り当て部１３０１によってそのサブアドレスが割り当てられたホストへパケットを送信する。これにより、外部ネットワーク１３０９に接続されたホストが内部ネットワーク１３０８に接続されたホストのサブアドレスを指定することにより、内部ネットワーク１３０８に接続された特定のホストへパケットを送信することができるようになる。
このような構成を持つルーティング装置１３００により、内部ネットワーク１３０８に接続されたホストに同一のＩＰアドレスを割り当てても、外部ネットワーク１３０９に接続されたホストは、サブアドレスを指定することにより、内部ネットワーク１３０８に接続されたホストを特定でき、そのホストと通信を行うことができる。
産業上の利用可能性
以上のように、本発明にかかわるルーティングソフトウェア、通信プログラム、通信方法、および、ルーティング装置によれば、内部ネットワークに接続されプライベートアドレスが割り当てられたホストを、外部ネットワークに接続されたホストより特定することが可能であり、通信プロトコルによらず、全てのアプリケーションプログラムがプライベートアドレスの割り当てられたホストで使用できるようになる。また、内部ネットワークに接続されたホストに同一のＩＰアドレスを割り当てても、異なるサブアドレスを割り当てることにより、インターネットなどの外部ネットワークに接続されたホストからは、サブアドレスを指定して内部ネットワークに接続されたホストを特定して通信を行うことができるようになる。また、内部ネットワークに接続されたホストから、外部ネットワークを経由して別の内部ネットワークに接続されたホストを特定して通信を開始することができる。
【図面の簡単な説明】
第１図は、外部ネットワークと内部ネットワークがルーティングを行う計算機によって接続されていることを示す。第２図は、通信で用いられるパケットの最初の部分の構造を示している。第３図は、内部ネットワークに接続されたホストにサブアドレスが割り当てられた状況を示す。第４図は、内部ネットワークに接続されたホストに割り当てられたＩＰアドレスとサブアドレスとの対応を示す表の一例を示す。第５図は、パケットにソースサブアドレスとデスティネーションアドレスを設定するために、パケットのオプション部分にそれらを設定した例について示した図である。第６図は、ルーティングを計算機に実行させるプログラムのフローチャートである。第７図は、サブアドレスが割り当てられたホストとの通信を実行させるプログラムのフローチャートである。第８図は、内部ネットワークに接続されたホストに同一の仮のＩＰアドレスを割り当てた状態を示す。第９図は、内部ネットワークに接続されたホストのＭＡＣアドレスとサブアドレスとの対応を示す表の一例を示す。第１０図は、内部ネットワークに接続されたホストに正式なＩＰアドレスを割り当てた状態を示す。第１１図は、内部ネットワークに接続されたホストに同一のＩＰアドレスを割り当てて外部ホストとルーティングを行う処理のフローチャートである。第１２図は、内部ネットワークに接続されたホストに異なるＩＰアドレスと異なるサブアドレスを割り当ててパケットのルーティングを行う装置の構成を示す。第１３図は、内部ネットワークに接続されたホストに同一のＩＰアドレスを割り当ててパケットのルーティングを行う装置の構成を示す。
【図１】
2002101998.tif 000003
【図２】
2002101998.tif 000004
【図３】
2002101998.tif 000005
【図４】
2002101998.tif 000006
【図５】
2002101998.tif 000007
【図６】
2002101998.tif 000008
【図７】
2002101998.tif 000009
【図８】
2002101998.tif 000010
【図９】
2002101998.tif 000011
【図１０】
2002101998.tif 000012
【図１１】
2002101998.tif 000013
【図１２】
2002101998.tif 000014
【図１３】
2002101998.tif 000015
【国際調査報告】
2002101998.tif 000016
2002101998.tif 000017
2002101998.tif 000018