(57)【要約】【課題】ＩＰｖ４（インターネットプロトコルのバージョン４）のアプリケーション１０８が、ＩＰｖ６（インターネットプロトコルのバージョン６）のシステム１０４とコンピュータネットワーク１０６を介して通信できるようにするシステムを提供する。【解決手段】このシステムは、コンピュータ装置と実行可能な命令を含んでいる。実行可能な命令は、ＩＰｖ４ソケットのアプリケーションプログラミングインターフェース（ＡＰＩ）に関数コールするように構成されている。命令は、関数コールをローソケットを使用する翻訳関数コールに翻訳する。ローソケットを使用するその翻訳関数コール用のＩＰｖ４ソケットＡＰＩに別の関数コールを行う。パケットをＩＰｖ４スタックに渡す。【選択図】図１
2005057752.tif 000002
【特許請求の範囲】
【請求項１】
第１バージョンのプロトコルを用いる第１システムと第２バージョンのプロトコルを用いる第２システムとの間の通信を提供するコンピュータシステムのための方法であって、前記第１システムに第１のアプリケーションを供給することと、前記第１バージョン用のソケットアプリケーションプログラミングインターフェース（ＡＰＩ）に関数コールを行うことと、該関数コールをローソケットを使用する翻訳関数コールに翻訳することと、ローソケットを使用する翻訳関数コール用のソケットＡＰＩに関数コールを行うことと、パケットを前記プロトコルの第１バージョン用のスタックに渡すことと、を含んでなることを特徴とする方法。
【請求項２】
前記プロトコルの前記第１バージョンがＩＰｖ４（インターネットプロトコルのバージョン４）であり、前記プロトコルの前記第２バージョンがＩＰｖ６（インターネットプロトコルのバージョン６）であることを特徴とする請求項１に記載の方法。
【請求項３】
ＩＰヘッダを供給することをさらに含むことを特徴とする請求項２に記載の方法。
【請求項４】
ＩＰヘッダを一回だけ供給することさらに含むことを特徴とする請求項２に記載の方法。
【請求項５】
前記方法は、ソケットＡＰＩ層とＴＣＰ／ＩＰｖ４層との間にＡＰＩレベルトランスレータ層を挿入することにより実行することを特徴とする請求項２に記載の方法。
【請求項６】
前記方法は、ＩＰｖ６スタックを用いることなく実行することを特徴とする請求項２に記載の方法。
【請求項７】
前記パケットをネットワークカードドライバに渡すことをさらに含むことを特徴とする請求項４に記載の方法。
【請求項８】
受信関連ＩＰｖ４ソケット関数のための代替実行を提供することをさらに含み、該代替実行は、ローソケット上で到着パケットを受信することと、該到着パケット用の正しい宛先を決定するためにソースホストをチェックすることと、前記到着パケット用のポート番号をチェックすることと、前記到着パケットからトランスポートヘッダ及びＩＰヘッダを剥ぎ取ることと、ペイロードを宛先アプリケーションに渡すことと、を含んでなること特徴とする請求項２に記載の方法。
【請求項９】
ＩＰｖ４のルーティングインフラストラクチャによるＩＰｖ６パケットのトンネリングを実行することをさらに含むことを特徴とする請求項２に記載の方法。
【請求項１０】
ネーム−アドレスのリゾルブ関連関数を実行するためにネームリゾルバサービスを用いることをさらに含むことを特徴とする請求項２に記載の方法。
【請求項１１】
前記ネームリゾルバサービスは、ＩＰｖ４スタックとＩＰｖ６スタックを含む個別のホスト上で実行されるように構成されていることを特徴とする請求項１０に記載の方法。
【請求項１２】
前記ネームリゾルバサービスのネーム−アドレスリゾルバ関数がＩＰｖ６スタックを使用することを特徴とする請求項１１に記載の方法。
【請求項１３】
前記ネームリゾルバサービスが、前記第１システムからの問い合わせを受信し、前記アドレスリゾルバ関数を用いてレコードを獲得し、該レコードを前記第１システムに送るように構成されていることを特徴とする請求項１２に記載の方法。
【請求項１４】
送信関連ＩＰｖ４ソケット関数のための代替実行を提供することをさらに含み、該代替実行が、パケットを送るためにＩＰｖ４ソケットＡＰＩコールを代行受信することと、ローソケットを用いるためにＩＰｖ４ソケットＡＰＩコールを翻訳することと、トランスポートヘッダ及びＩＰｖ６ヘッダを供給することと、前記ローソケット用の該当するＩＰｖ４ソケットのＡＰＩ関数をコールすることと、前記パケットを前記スタックに渡すことと、を含んでなることを特徴とする請求項２に記載の方法。
【請求項１５】
ＩＰｖ４ルーティングインフラストラクチュアによるＩＰｖ６パケットのトンネリングを実行することをさらに含むことを特徴とする請求項１４に記載の方法。
【請求項１６】
前記パケットを断片化することをさらに含むことを特徴とする請求項１４に記載の方法。
【請求項１７】
前記パケットをネットワークカードドライバに渡すことをさらに含むことを特徴とする請求項１４に記載の方法。
【請求項１８】
ＩＰｖ４（インターネットプロトコルのバージョン４）システムとＩＰｖ６（インターネットプロトコルのバージョン６）システムとの間の通信を提供する方法を、ＩＰｖ４のコンピュータシステムに実装するための実行可能な１組の命令であって、前記方法は、前記ＩＰｖ４システムにＩＰｖ４アプリケーションを供給することと、ＩＰｖ４ソケットアプリケーションプログラミングインターフェース（ＡＰＩ）に関数コールを行うことと、該関数コールをローソケットを使用する翻訳関数コールに翻訳することと、ローソケットを使用する前記翻訳関数コール用の前記ＩＰｖ４ソケットＡＰＩに他の関数コールを行うことと、パケットをＩＰｖ４スタックに渡すことと、を含んでなることを特徴とする実行可能な１組の命令。
【請求項１９】
前記方法はＩＰヘッダを一回だけ供給することさらに含むことを特徴とする請求項１８に記載の実行可能な１組の命令。
【請求項２０】
前記方法は、ソケットＡＰＩ層とＴＣＰ／ＩＰｖ４層との間にＡＰＩレベルトランスレータを挿入することにより実行することを特徴とする請求項１８に記載の実行可能な１組の命令。
【請求項２１】
前記方法は、ＩＰｖ６スタックを用いることなく実行することを特徴とする請求項１８に記載の実行可能な１組の命令。
【請求項２２】
前記方法は、受信関連ＩＰｖ４ソケット関数のための代替実行を提供することをさらに含み、該代替実行は、ローソケット上で到着パケットを受信することと、該到着パケット用の正しい宛先を決定するためにソースホストをチェックすることと、前記到着パケット用のポート番号をチェックすることと、前記到着パケットからトランスポートヘッダ及びＩＰヘッダを剥ぎ取ることと、ペイロードを前記ＩＰｖ４アプリケーションに渡すことと、を含んでなることを特徴とする請求項１８に記載の実行可能な１組の命令。
【請求項２３】
前記方法は、送信関連ＩＰｖ４ソケット関数のための代替実行を提供することをさらに含み、該代替実行は、データを送るためにＩＰｖ４ソケットのＡＰＩコールを代行受信することと、ローソケットを用いるためにＩＰｖ４ソケットＡＰＩコールを翻訳することと、トランスポートヘッダ及びＩＰｖ６ヘッダを供給することと、前記ローソケット用の該当するＩＰｖ４ソケットＡＰＩ関数をコールすることと、前記データを前記ＩＰｖ４スタックに渡すことと、を含んでなることを特徴とする請求項１８に記載の実行可能な１組の命令。
【請求項２４】
ＩＰｖ４ルーティングインフラストラクチュアによるＩＰｖ６パケットのトンネリングを実行することをさらに含むことを特徴とする請求項２３に記載の実行可能な１組の命令。
【請求項２５】
前記パケットを断片化することをさらに含むことを特徴とする請求項２３に記載の実行可能な１組の命令。
【請求項２６】
前記パケットをネットワークカードドライバに渡すことをさらに含むことを特徴とする請求項２３に記載の実行可能な１組の命令。
【請求項２７】
請求項１８乃至２６のいずれか１項に記載の実行可能な１組の命令を記憶したコンピュータ読み取り可能な記録媒体。
【請求項２８】
ＩＰｖ４（インターネットプロトコルのバージョン４）のアプリケーションが、ＩＰｖ６（インターネットプロトコルのバージョン６）システムを用いるコンピュータネットワークを介して通信できるようにするシステムであって、当該システムは、コンピュータ装置と、コンピュータ装置で実行可能な命令より成り、該実行可能な命令は、ＩＰｖ４ソケットアプリケーションプログラミングインターフェース（ＡＰＩ）に関数コールを行うことと、該関数コールをローソケットを使用する翻訳関数コールに翻訳することと、ローソケットを使用する前記翻訳関数コール用の前記ＩＰｖ４ソケットＡＰＩに他の関数コールを行うことと、パケットをＩＰｖ４スタックに渡すことと、を含んでなる方法を実行するように構成されていることを特徴とするシステム。
【請求項２９】
ソケットＡＰＩ層とＴＣＰ／ＩＰｖ４層との間にあるＡＰＩレベルトランスレータを有することを特徴とする請求項２８に記載のシステム。
【請求項３０】
前記方法は、受信関連ＩＰｖ４ソケット関数のための代替実行を提供することをさらに含み、該代替実行は、ローソケット上で到着パケットを受信することと、該到着パケット用の正しい宛先を決定するためにソースホストをチェックすることと、前記到着パケット用のポート番号をチェックすることと、前記到着パケットからトランスポートヘッダ及びＩＰヘッダを剥ぎ取ることと、ペイロードを前記ＩＰｖ４アプリケーションに渡すことより成ることを特徴とする請求項２８に記載のシステム。
【請求項３１】
前記方法は、送信関連ＩＰｖ４ソケット関数のための代替実行を提供することをさらに含み、該代替実行は、前記パケットを送るためにＩＰｖ４ソケットＡＰＩコールを代行受信することと、ローソケットを用いるために前記ＩＰｖ４ソケットＡＰＩコールを翻訳することと、トランスポートヘッダ及びＩＰｖ６ヘッダを供給することと、前記ローソケット用の該当する前記ＩＰｖ４ソケットＡＰＩ関数をコールすることと、前記パケットを前記ＩＰｖ４スタックに渡すことと、を含んでなることを特徴とする請求項２８に記載のシステム。
【請求項３２】
前記方法は、ＩＰｖ４ルーティングインフラストラクチュアによるＩＰｖ６パケットのトンネリングを実行することをさらに含むことを特徴とする請求項２８に記載のシステム。
【請求項３３】
前記方法は、前記パケットを断片化することをさらに含むことを特徴とする請求項２８に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、全体として、コンピュータネットワークを介する電子通信に関し、特に、異なるプロトコルバージョンを持つシステム間の通信を提供する装置及び方法に関する。
【背景技術】
【０００２】
コンピュータ技術及び通信技術は、急速に進歩し続けている。実際に、コンピュータ技術及び通信技術は、個人の日常生活に様々な形で組み込まれている。例えば、一般の消費者により現在使用されている多くの装置には、小型のコンピュータが組み込まれている。これらの小型のコンピュータは、サイズも精巧度も様々である。これらの小型コンピュータは、１つのマイクロコントローラから機能を完備した完全なコンピュータシステムまで精巧度も多様である。例えば、小型コンピュータは、マイクロコントローラのようなワンチップコンピュータ、コントローラのようなワンボードタイプのコンピュータ、ＩＢＭ−ＰＣ互換のデスクトップコンピュータなどがある。
【０００３】
コンピュータは、ビジネス、産業及び学術研究の殆どあらゆる分野で用いられている。コンピュータを使用する家庭も増加している。コンピュータの普及も、インターネットを含むコンピュータネットワークの利用の増大により急速に進んでいる。殆どの会社は、１つ以上のコンピュータネットワークを有しており、インターネットを盛んに利用している。従業員の生産性を上げるために、人とコンピュータの対話が要求されることも多い。コンピュータとソフトウェアの改良は、ビジネス及び産業の生産性を飛躍的に向上させる原動力となっている。
【０００４】
コンピュータネットワークは、データの送受信を支配する規則を用いる。コンピュータネットワークのこれらの規則は、プロトコルと呼ばれることが多い。コンピュータネットワークとの組み合わせで今日使用されているプロトコルは多種多様である。現在用いられている重要なプロトコルの１つは、インターネットプロトコルである。このインターネットプロトコルは、ＴＣＰ／ＩＰ通信プロトコル群中のネットワーク層プロトコルである。
【０００５】
現在のインターネットプロトコルのバージョンは、ＩＰｖ４（ＩＰバージョン４）として知られている。インターネットの急速な成長により、ＩＰｖ４のアドレス空間は、最終的には使い尽くされるであろう。インターネットプロトコルの新しいバージョンは、ＩＰｖ６（ＩＰバージョン６）として知られている。ＩＰｖ６は、コンピュータネットワーク通信のために強化された機能性の提供を目的としている。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ＩＰｖ４からＩＰｖ６への移行は、急進的に行われるのではなく、完了するまでに或る程度の期間を要するであろう。そのために、或るシステムはＩＰｖ４を使用し、或るシステムはＩＰｖ６を使用する移行期間が生じるであろう。即ち、この移行期間中、ＩＰｖ４プロトコルとＩＰｖ６プロトコルは共存する必要がある。
【０００７】
本発明は、上述のごとき実情に鑑みてなされたものであり、例えばＩＰｖ４とＩＰｖ６との共存のような、プロトコルの異なるバージョン間での共存を可能にするシステム及び方法を提供することをその目的とする。
【課題を解決するための手段】
【０００８】
本発明は、上述のごとき課題を解決するために、以下の各技術手段により構成される。
本発明の第１の技術手段は、第１バージョンのプロトコルを用いる第１システムと第２バージョンのプロトコルを用いる第２システムとの間の通信を提供するコンピュータシステムのための方法であって、前記第１システムに第１のアプリケーションを供給することと、前記第１バージョン用のソケットアプリケーションプログラミングインターフェース（ＡＰＩ）に関数コールを行うことと、該関数コールをローソケットを使用する翻訳関数コールに翻訳することと、ローソケットを使用する翻訳関数コール用のソケットＡＰＩに関数コールを行うことと、パケットを前記プロトコルの第１バージョン用のスタックに渡すことと、を含んでなることを特徴としたものである。
【０００９】
第２の技術手段は、第１の技術手段において、前記プロトコルの前記第１バージョンがＩＰｖ４（インターネットプロトコルのバージョン４）であり、前記プロトコルの前記第２バージョンがＩＰｖ６（インターネットプロトコルのバージョン６）であることを特徴としたものである。
【００１０】
第３の技術手段は、第２の技術手段において、ＩＰヘッダを供給することをさらに含むことを特徴としたものである。
【００１１】
第４の技術手段は、第２の技術手段において、ＩＰヘッダを一回だけ供給することさらに含むことを特徴としたものである。
【００１２】
第５の技術手段は、第２の技術手段において、前記方法は、ソケットＡＰＩ層とＴＣＰ／ＩＰｖ４層との間にＡＰＩレベルトランスレータ層を挿入することにより実行することを特徴としたものである。
【００１３】
第６の技術手段は、第２の技術手段において、前記方法は、ＩＰｖ６スタックを用いることなく実行することを特徴としたものである。
【００１４】
第７の技術手段は，第４の技術手段において，前記パケットをネットワークカードドライバに渡すことをさらに含むことを特徴としたものである。
【００１５】
第８の技術手段は、第２の技術手段において、受信関連ＩＰｖ４ソケット関数のための代替実行を提供することをさらに含み、該代替実行は、ローソケット上で到着パケットを受信することと、該到着パケット用の正しい宛先を決定するためにソースホストをチェックすることと、前記到着パケット用のポート番号をチェックすることと、前記到着パケットからトランスポートヘッダ及びＩＰヘッダを剥ぎ取ることと、ペイロードを宛先アプリケーションに渡すことと、を含んでなること特徴としたものである。
【００１６】
第９の技術手段は，第２の技術手段において，ＩＰｖ４のルーティングインフラストラクチャによるＩＰｖ６パケットのトンネリングを実行することをさらに含むことを特徴としたものである。
【００１７】
第１０の技術手段は、第２の技術手段において、ネーム−アドレスのリゾルブ関連関数を実行するためにネームリゾルバサービスを用いることをさらに含むことを特徴としたものである。
【００１８】
第１１の技術手段は、第１０の技術手段において、前記ネームリゾルバサービスは、ＩＰｖ４スタックとＩＰｖ６スタックを含む個別のホスト上で実行されるように構成されていることを特徴としたものである。
【００１９】
第１２の技術手段は，第１１の技術手段において，前記ネームリゾルバサービスのネーム−アドレスリゾルバ関数がＩＰｖ６スタックを使用することを特徴としたものである。
【００２０】
第１３の技術手段は、第１２の技術手段において、前記ネームリゾルバサービスが、前記第１システムからの問い合わせを受信し、前記アドレスリゾルバ関数を用いてレコードを獲得し、該レコードを前記第１システムに送るように構成されていることを特徴としたものである。
【００２１】
第１４の技術手段は、第２の技術手段において、送信関連ＩＰｖ４ソケット関数のための代替実行を提供することをさらに含み、該代替実行が、パケットを送るためにＩＰｖ４ソケットＡＰＩコールを代行受信することと、ローソケットを用いるためにＩＰｖ４ソケットＡＰＩコールを翻訳することと、トランスポートヘッダ及びＩＰｖ６ヘッダを供給することと、前記ローソケット用の該当するＩＰｖ４ソケットのＡＰＩ関数をコールすることと、前記パケットを前記スタックに渡すことと、を含んでなることを特徴としたものである。
【００２２】
第１５の技術手段は、第１４の技術手段において、ＩＰｖ４ルーティングインフラストラクチュアによるＩＰｖ６パケットのトンネリングを実行することをさらに含むことを特徴としたものである。
【００２３】
第１６の技術手段は、第１４の技術手段において、前記パケットを断片化することをさらに含むことを特徴としたものである。
【００２４】
第１７の技術手段は、第１４の技術手段において、前記パケットをネットワークカードドライバに渡すことをさらに含むことを特徴としたものである。
【００２５】
第１８の技術手段は，ＩＰｖ４（インターネットプロトコルのバージョン４）システムとＩＰｖ６（インターネットプロトコルのバージョン６）システムとの間の通信を提供する方法を、ＩＰｖ４のコンピュータシステムに実装するための実行可能な１組の命令であって、前記方法は、前記ＩＰｖ４システムにＩＰｖ４アプリケーションを供給することと、ＩＰｖ４ソケットアプリケーションプログラミングインターフェース（ＡＰＩ）に関数コールを行うことと、該関数コールをローソケットを使用する翻訳関数コールに翻訳することと、ローソケットを使用する前記翻訳関数コール用の前記ＩＰｖ４ソケットＡＰＩに他の関数コールを行うことと、パケットをＩＰｖ４スタックに渡すことと、を含んでなることを特徴としたものである。
【００２６】
第１９の技術手段は、第１８の技術手段において、前記方法はＩＰヘッダを一回だけ供給することさらに含むことを特徴としたものである。
【００２７】
第２０の技術手段は、第１８の技術手段において、前記方法は、ソケットＡＰＩ層とＴＣＰ／ＩＰｖ４層との間にＡＰＩレベルトランスレータを挿入することにより実行することを特徴としたものである。
【００２８】
第２１の技術手段は、第１８の技術手段において、前記方法は、ＩＰｖ６スタックを用いることなく実行することを特徴としたものである。
【００２９】
第２２の技術手段は、第１８の技術手段において、前記方法は、受信関連ＩＰｖ４ソケット関数のための代替実行を提供することをさらに含み、該代替実行は、ローソケット上で到着パケットを受信することと、該到着パケット用の正しい宛先を決定するためにソースホストをチェックすることと、前記到着パケット用のポート番号をチェックすることと、前記到着パケットからトランスポートヘッダ及びＩＰヘッダを剥ぎ取ることと、ペイロードを前記ＩＰｖ４アプリケーションに渡すことと、を含んでなることを特徴としたものである。
【００３０】
第２３の技術手段は、第１８の技術手段において、前記方法は、送信関連ＩＰｖ４ソケット関数のための代替実行を提供することをさらに含み、該代替実行は、データを送るためにＩＰｖ４ソケットのＡＰＩコールを代行受信することと、ローソケットを用いるためにＩＰｖ４ソケットＡＰＩコールを翻訳することと、トランスポートヘッダ及びＩＰｖ６ヘッダを供給することと、前記ローソケット用の該当するＩＰｖ４ソケットＡＰＩ関数をコールすることと、前記データを前記ＩＰｖ４スタックに渡すことと、を含んでなることを特徴としたものである。
【００３１】
第２４の技術手段は、第２３の技術手段において、ＩＰｖ４ルーティングインフラストラクチュアによるＩＰｖ６パケットのトンネリングを実行することをさらに含むことを特徴としたものである。
【００３２】
第２５の技術手段は、第２３の技術手段において、前記パケットを断片化することをさらに含むことを特徴としたものである。
【００３３】
第２６の技術手段は、第２３の技術手段において、前記パケットをネットワークカードドライバに渡すことをさらに含むことを特徴としたものである。
【００３４】
第２７の技術手段は、第１８乃至２６のいずれかの技術手段における実行可能な１組の命令を記憶したコンピュータ読み取り可能な記録媒体である。
【００３５】
第２８の技術手段は、ＩＰｖ４（インターネットプロトコルのバージョン４）のアプリケーションが、ＩＰｖ６（インターネットプロトコルのバージョン６）システムを用いるコンピュータネットワークを介して通信できるようにするシステムであって、当該システムは、コンピュータ装置と、コンピュータ装置で実行可能な命令より成り、該実行可能な命令は、ＩＰｖ４ソケットアプリケーションプログラミングインターフェース（ＡＰＩ）に関数コールを行うことと、該関数コールをローソケットを使用する翻訳関数コールに翻訳することと、ローソケットを使用する前記翻訳関数コール用の前記ＩＰｖ４ソケットＡＰＩに他の関数コールを行うことと、パケットをＩＰｖ４スタックに渡すことと、を含んでなる方法を実行するように構成されていることを特徴としたものである。
【００３６】
第２９の技術手段は、第２７の技術手段において、ソケットＡＰＩ層とＴＣＰ／ＩＰｖ４層との間にあるＡＰＩレベルトランスレータを有することを特徴としたものである。
【００３７】
第３０の技術手段は、第２７の技術手段において、前記方法は、受信関連ＩＰｖ４ソケット関数のための代替実行を提供することをさらに含み、該代替実行は、ローソケット上で到着パケットを受信することと、該到着パケット用の正しい宛先を決定するためにソースホストをチェックすることと、前記到着パケット用のポート番号をチェックすることと、前記到着パケットからトランスポートヘッダ及びＩＰヘッダを剥ぎ取ることと、ペイロードを前記ＩＰｖ４アプリケーションに渡すことより成ることを特徴としたものである。
【００３８】
第３１の技術手段は、第２７の技術手段において、前記方法は、送信関連ＩＰｖ４ソケット関数のための代替実行を提供することをさらに含み、該代替実行は、前記パケットを送るためにＩＰｖ４ソケットＡＰＩコールを代行受信することと、ローソケットを用いるために前記ＩＰｖ４ソケットＡＰＩコールを翻訳することと、トランスポートヘッダ及びＩＰｖ６ヘッダを供給することと、前記ローソケット用の該当する前記ＩＰｖ４ソケットＡＰＩ関数をコールすることと、前記パケットを前記ＩＰｖ４スタックに渡すことと、を含んでなることを特徴としたものである。
【００３９】
第３２の技術手段は、第２７の技術手段において、前記方法は、ＩＰｖ４ルーティングインフラストラクチュアによるＩＰｖ６パケットのトンネリングを実行することをさらに含むことを特徴としたものである。
【００４０】
第３３の技術手段は、第２７の技術手段において、前記方法は、前記パケットを断片化することをさらに含むことを特徴としたものである。
【発明の効果】
【００４１】
本発明によれば、コンピュータネットワークのシステムと方法を改良してＩＰｖ４とＩＰｖ６のプロトコルの共存など、プロトコルの異なるバージョン間での共存が可能となり、この移行期間中に発生し得る幾つかの難しい問題を最小限に留めることができる。また、本発明によれば、強化した機能性の提供で実現される利益により、ＩＰｖ４からＩＰｖ６への移行を促進させることができる。
【発明を実施するための最良の形態】
【００４２】
本発明の実施形態は、添付の図面を参照し、明細書の説明と特許請求範囲の記述を読むことにより明らかになろう。これらの図面は、代表的な実施形態を説明しているのであり、従って、本発明の範囲を制限するものではない。添付図面を参照し、実施形態につき詳述する。
【００４３】
コンピュータシステムが、第１のシステムと第２のシステム間の通信を提供するための方法を開示する。第１のシステムは、プロトコルの第１バージョンを用い、第２のシステムは、プロトコルの第２バージョンを用いる。第１アプリケーションは、第１システムに備えられている。関数コールを、第１バージョン用のソケットＡＰＩ（アプリケーションプログラミングインターフェース）に対して行う。この関数コールが、ローソケットを用いる翻訳関数コールに翻訳される。パケットが第１バージョンのプロトコル用のスタックに渡される。このパケットはネットワークカードドライバに送ることができる。
【００４４】
一実施例によれば、第１バージョンプロトコルは、ＩＰｖ４（インターネットプロトコルのバージョン４）であり、第２バージョンプロトコルは、ＩＰｖ６（インターネットプロトコルのバージョン６）である。
【００４５】
開示の方法は、ＩＰヘッダの供給をも含んでいる。本方法の一実施例において、ＩＰヘッダは、一回だけ提供される。
【００４６】
この方法は、ソケットＡＰＩ層とＴＣＰ／ＩＰｖ４層との間にＡＰＩレベルトランスレータ層を挿入することにより実装できる。さらに、この方法は、ＩＰｖ６スタックを用いないで実装できる。
【００４７】
受信に関係するＩＰｖ４ソケット関数は、代わりの実装方法でも提供できる。この代替の実装方法において、入ってくるパケットは、１つのローソケットで受信される。到着パケットの正確な宛先を決定するためにソースホストがチェックされる。到着パケット用のポート番号がチェックされる。トランスポート，ＩＰヘッダが到着パケットから剥がされる。ペイロードが宛先アプリケーションに渡される。ＩＰｖ４のルーティングインフラストラクチュアでのＩＰｖ６パケットのトンネリングを実行できる。
【００４８】
ネームリゾルバサービスは、ネーム−アドレスのリゾルバ関連関数を実行するために使用できる。このネームリゾルバサービスは、ＩＰｖ４スタックとＩＰｖ６スタックを含む独立ホスト上で実行するように構成されている。ネームリゾルバサービスのネーム−アドレスリゾルバ関数は、ＩＰｖ６スタックを使用する。ネームリゾルバサービスは、第１システムからの問い合わせを受信し、アドレスリゾルバ関数を使用して、レコードを獲得し、そのレコードを第１システムに送るように構成することができる。
【００４９】
送信関連ＩＰｖ４ソケット関数は、代わりの実行方法でも提供可能である。この別の実行方法では、ＩＰｖ４ソケットのＡＰＩコールは、パケットを送るために代行受信（インターセプト）される。ＩＰｖ４ソケットのＡＰＩコールは、１つのローソケットを使用するために翻訳される。トランスポートとＩＰｖ６のヘッダが供給される。該当するＩＰｖ４ソケットのＡＰＩ関数が前述のローソケットのために呼び出され、パケットがスタックに渡される。
【００５０】
幾つかのシステムでは、このパケットを断片化する。さらに、このパケットをネットワークカードドライバに引き渡す。
【００５１】
ＩＰｖ４（インターネットプロトコルバージョン４）のコンピュータシステムに、ＩＰｖ４システムとＩＰｖ６（インターネットプロトコルバージョン６）システムとの間の通信を提供するための方法を実装する実行可能な命令セットを開示する。ＩＰｖ４アプリケーションは、ＩＰｖ４システムに装備される。ＩＰｖ４ソケットのアプリケーションプログララミングインターフェース（ＡＰＩ）に関数コールをかける。この関数コールを翻訳し、翻訳関数コールがローソケットを用いる。もう１つの関数コールが、ローソケットを用いる翻訳関数用ＩＰｖ４ソケットＡＰＩに対して行われる。１つのパケットが、１つのＩＰｖ４スタックに渡される。
【００５２】
実行可能な命令セットの方法は、ソケットＡＰＩ層とＴＣＰ／ＩＰｖ４層との間にＡＰＩレベルトランスレータ層を挿入することにより実装できる。実行可能な命令は、コンピュータ可読媒体に記憶される。
【００５３】
ＩＰｖ４（インターネットプロトコルバージョン４）のアプリケーションを、コンピュータネットワークを通じてＩＰｖ６（インターネットプロトコルバージョン６）のシステムと通信できるようにするシステムを開示する。このシステムは、コンピュータ装置と実行可能な命令を含んでいる。実行可能な命令は、ＩＰｖ４ソケットのアプリケーションプログラミングインターフェース（ＡＰＩ）に関数コールをするように構成されている。これらの命令が、関数コールを翻訳関数コールに翻訳し、その翻訳関数コールがローソケットを使用する。もう１つの関数コールが、ローソケットを使用する翻訳関数コール用のＩＰｖ４ソケットＡＰＩになされる。１つのパケットが、１つのＩＰｖ４スタックに送られる。
【００５４】
図面に図示し記述した実施形態の構成要素は、種々異なる構成に配置して設計できることは容易に理解できよう。図面に図示した本発明によるシステムと方法の実施形態に関し以下に詳述するが、その説明は、発明の範囲を制限するものではなく、本発明の実施形態を説明するだけのものである。
【００５５】
用語“一例の”は、“一例、一つの特例、或いは図例”を意味する。“一例”として記述された実施形態は、必ずしも、他の実施形態に対し優位もしくは有利な形態として構成されるものではない。種々の実施形態を図面に表示しているが、図面に特記ない限り、必ずしも縮尺製図したものではない。
【００５６】
本明細書に記述した幾つかの実施形態は、コンピュータ装置に格納されたソフトウェアモジュールもしくは構成要素として示される。ここで使用されているソフトウェアモジュールもしくは構成要素は、メモリ装置内に格納され、及び／又は、システムバス又はネットワークで電子信号として送信される任意のタイプの演算命令もしくはコンピュータが実行可能なコードを含んでいる。ソフトウェアモジュールは、例えば、一つ以上の演算命令の物理的もしくは論理的ブロックより成り、ルーチン，プログラム，オブジェクト，コンポーネント，データストラクチャ等として構成することができ、一つ以上のタスクを実行するか、または、特定のアブストラクトデータ形式を実動化する。
【００５７】
或る特定の実施形態において、特定のソフトウェアモジュールをメモリ装置の異なる場所に格納された異なる命令より構成することができ、共に、そのモジュールの記述された機能性を実現する。実際に、一つのモジュールは単一命令もしくは多数の命令より構成でき、幾つかの異なるコードセグメント、異なるプログラム、及び幾つかのメモリ装置に、分散することができる。幾つかの実施形態は、コンピュータネットワークを通じて結合された或る遠隔処理装置がタスクを実行する分散計算機環境において実際に使用することができる。分散計算機環境において、ソフトウェアモジュールは、地域及び／又は遠隔の記憶装置に置くことができる。
【００５８】
一実施形態を、ここでの実施例として説明するが、別の実施例も本発明の範囲を逸脱することなく種々の形態を含むことができることを注記しておく。
【００５９】
開示の実施形態と関連して記述した方法のステップ又は動作の順序は、当業者であれば、本発明の範囲を逸脱することなく変更することが可能である。従って、図面又は明細書中のどの順序も説明のためだけのものであり、要求される順序を意味するものではない。
【００６０】
インターネットは、数多くの異なる種類のコンピュータとコンピュータ装置が互いに通信することを可能にする。インターネット上のコンピュータとコンピュータ装置は、インターネットプロトコルを用いて互いに通信する。図１は、コンピュータネットワークにより互いに通信する２つの異なるシステムを示すブロック図である。図１に示す一方のシステム１０２は、ＩＰｖ４（ＩＰバージョン４）として知られている現在のバージョンのインターネットプロトコルを使用し、他方のシステム１０４は、ＩＰｖ６（ＩＰバージョン６）として知られている新しいバージョンのインターネットプロトコルを使用する。これらのシステムは、コンピュータネットワーク１０６により互いに通信する。説明のために、ＩＰｖ４のアプリケーション１０８をＩＰｖ４コンピュータシステム１０２に装備する。
【００６１】
多くの異なる種類のコンピュータ装置をコンピュータネットワーク上で使用することができる。図２は、本実施形態と共に用いられる代表的なハードウェアの主構成品を示すブロック図である。開示のシステムと方法は、コンピュータネットワーク１０６を介して他の装置と通信するコンピュータ装置２０２で用いられる。コンピュータ装置２０２は、当技術分野において公知の市販されているものである。図２には、コンピュータ装置２０２内に用いられている主なハードウェア構成品を示してある。コンピュータ装置２０２は一般的に、入力部品又は入力装置２０４及び／又は出力部品又は出力装置２０６と電子通信するプロセッサ２０３を含んでいる。このプロセッサ２０３は、プロセッサ２０３と電子通信可能な、即ち、電気信号の形式で入力及び／又は出力可能な入力装置２０４及び／又は出力装置２０６と操作可能に接続されている。装置２０２の実施形態は、入力装置２０４、出力装置２０６、及びプロセッサ２０３を同一の物理的構成もしくは個別のハウジング又は構造に含むことができる。
【００６２】
電子装置２０２は、メモリ２０８を含むことができる。このメモリ２０８は、プロセッサ２０３から離れた別の構成品であってよい。或いは、メモリ２０８は、プロセッサ２０３として同じ部分に含まれるオンボードメモリ２０８であってもよい。例えば、マイクロコントローラは、ある特定量のオンボードメモリを搭載していることが多い。
【００６３】
プロセッサ２０３は、通信インターフェース２１０とも電子通信する。通信インターフェース２１０は、他の装置２０２との通信に使用することができる。従って、種々異なる装置２０２の通信インターフェース２１０は、互いに通信して、コンピュータ装置２０２間の信号もしくはメッセージを送信するように設計することができる。
【００６４】
コンピュータ装置２０２は、他の通信ポート２１２を含むことができる。さらに、他の構成品２１４を電子装置２０２に含むことができる。
【００６５】
勿論、当業者ならば、本実施形態には、異なる多くの種類の装置が用いられることを理解できよう。コンピュータ装置２０２は、マイクロコントローラの様なワンチップコンピュータ、コントローラのようなワンボードタイプのコンピュータ、ＩＢＭ−ＰＣと互換性のあるデスクトップ型コンピュータ、ルータ、ホスト、パーソナルデジタルアシスタント（ＰＤＡ）、ユニックスベースのワークステーション等である。したがって、図２のブロック図は、コンピュータ装置２０２の代表的な構成品を説明するためのものであり、開示実施形態の範囲を制限するものではない。
【００６６】
現在のインターネットプロトコルのバージョンは、ＩＰｖ４（ＩＰバージョン４）として知られている。ＩＰｖ４は、３２ビットを用いてアドレスを表現する。インターネットの急速な発展により、ＩＰｖ４のアドレス空間が最終的に枯渇してしまう。インターネットプロトコルの新しいバージョンは、ＩＰｖ６（ＩＰバージョン６）として知られている。ＩＰｖ６は、１２８ビットを用いてアドレスを表現する。ＩＰアドレスの増大に加え、ＩＰｖ６は、より簡素な構成をサポートし、ＩＰレベルにおけるセキュリティを提供し、サービスの品質（ＱＯＳ）をよりよく維持することを目的としている。
【００６７】
ＩＰｖ４からＩＰｖ６へ移行は、迅速なプロセスではなく、その完了までにはある程度の期間を要する。従って、この移行期間の間、ＩＰｖ４とＩＰｖ６のプロトコルは共存する必要がある。ＩＰｖ６は、ＩＰｖ４からの移行をサポートするように設計されている。ＲＦＣ２８９３，Ｇｉｌｌｉｇａｎ  Ｒ．，Ｎｏｒｄｍａｒｋ  Ｅ．の“ＩＰｖ６ホスト及びルータ用移行メカニズム”（２０００年８月）は、ＩＰｖ６のホスト及びルータのための、ＩＰｖ４と互換性のあるメカニズムを定義している。この互換性を達成するための幾つかのメカニズムは、トンネルと、二重のＩＰスタックと、ドメインネームシステムである。
【００６８】
トンネリングに関して、ＩＰｖ６のパケットは、現存のＩＰｖ４の経路インフラストラクチャでトンネルさせることができる。これは、ＩＰｖ６のパケットにＩＰｖ４ヘッダをつけてカプセル化し、ＩＰｖ４ヘッダのソースと宛先アドレスフィールドをトンネルの終点に設定することにより実現される。
【００６９】
二重のＩＰスタックも、ＩＰｖ４互換性を助けることができる。システムは、ＩＰｖ６ノード上にＩＰｖ６とＩＰｖ４の両方のスタックを実装し維持するように構築される。
【００７０】
ドメインネームシステム（ＤＮＳ）への変更は、ＩＰｖ４の互換性を助けることができる。ＤＮＳのインフラストラクチャは、ＩＰｖ４とＩＰｖ６のノードのネームからアドレス及びアドレスからネームの解決をサポートするためにアップグレードすることができる。
【００７１】
現在、現存のＩＰｖ４のアプリケーションの数は、ＩＰｖ６のアプリケーションの数より多い。ＩＰｖ４のアプリケーションをＩＰｖ６で使用できるようにする１つの方法は、ＩＰｖ４のアプリケーションをＩＰｖ６の新しいＡＰＩを使用するように変更することである。しかしながら、ＩＰｖ４アプリケーションを変更することは、全ての場合に実現できるわけではない。例えば、ソースコードは、入手できないか、もしくは、これらのアプリケーションのために失われている。さらに、ＩＰｖ４アプリケーションの変更は、これらのアプリケーションを実行する特定のオペレーティングシステムのために使用可能なＩＰｖ６スタックがあることを前提にしている。これは、全ての場合に当てはまることではない。例えば、幾つかの埋め込まれたアプリケーションの場合、それらのアプリケーション用のオペレーションシステムはＩＰｖ６スタックのためのサポートを有していない。かような状況においては、現存のＩＰｖ４アプリケーションが、ＩＰｖ４アプリケーションのソースコードを変更することなく、ＩＰｖ６のホストと通信できるようにする解決法が望まれる。これを実現する幾つかの可能な方法があり、その中にＢｕｍｐ−Ｉｎ−ｔｈｅ−Ｓｔａｃｋ（ＢＩＳ）とＢｕｍｐ−Ｉｎ−ｔｈｅ−ＡＰＩ（ＢＩＡ）が含まれている。
【００７２】
ＢＩＳ法は、ＴＣＰ／ＩＰｖ４層とネットワークカードドライバモジュールの間のデータの流れを代行受信（インターセプト）し、ＩＰｖ４からＩＰｖ６又はその逆に翻訳することにより動作する。ＢＩＡ法は、ＩＰｖ４  ＡＰＩとＩＰｖ６  ＡＰＩ間の翻訳メカニズムを設ける。
【００７３】
ＢＩＳ法は、下記の欠点を有している。ＢＩＳのシナリオでは、先ず、ＩＰｖ４ヘッダをＴＣＰ／ＩＰｖ４スタックにより追加し、次に、ＢＩＳモジュールがパケットを代行受信し、ＩＰｖ６ヘッダを追加する。これは、ＩＰｖ４ヘッダを最初に加え、その後、ＩＰｖ６ヘッダに交換するために、オーバヘッドを含んでいる。ＢＩＳモジュールは、ＩＰｖ４スタックとネットワークドライバ間のパケットを代行受信する必要があり、オペレーティングシステム又はネットワークドライバ構造によってサポートされていない。システムがＢＩＳを用いることを試み、オペレーティングシステム又はネットワークドライバがそのＢＩＳの操作をサポートしていない場合、このシステムは、サポートされていないＢＩＳの使用を試みている間、そのシステムは不安定になるか、さもなければ、使用不能になる。
【００７４】
ＢＩＡ法は、下記の欠点を有している。ＢＩＡは、ＩＰｖ４アプリケーションを走らせるＩＰｖ６スタックをホストに据え付ける必要がある。しかしながら、ＩＰｖ６スタックは、全てのオペレーティングシステムに対し使用可能ではない。
【００７５】
このシステムと方法は、ＡＰＩレベルのトランスレータ（ＡＬＴ）法を提供し、現存のＩＰｖ４アプリケーションのＩＰｖ６ホストとの通信を可能にする。この方法は、パケットをスタックレベルにおいて捕捉することを要求せず、ホストにＩＰｖ６スタックが据え付けられていない場合でも実動する。開示のシステムと方法は、ＩＰｖ４アプリケーションがＩＰｖ６ホストと通信する上で幾つかの利点を提供する。この方法は、ＩＰｖ６スタックが据え付けられていない（例えば、そのシステム用のＩＰｖ６スタックが存在していない）場合でも実動する。ＢＩＳ法と異なり、このシステムは、ＩＰヘッダを２回付加する必要がない。さらに、開示の実施形態は、（ＢＩＳ法の場合と異なり）ＩＰスタックとネットワークカードドライバ間でパケットを捕捉する必要がない。
【００７６】
ここに開示するシステムと方法は、現存のＩＰｖ４アプリケーションがＩＰｖ６ホストと通信できるようにする。以下の実施態様を理解する上で有益であるので、ＢＩＳ法とＢＩＡ法について簡単に説明する。
【００７７】
図３はＢｕｍｐ−Ｉｎ−ｔｈｅ−Ｓｔａｃｋ（ＢＩＳ）法３０２の全体構造を示している。ＩＰｖ４アプリケーション３０４は、最上層にある。ＩＰｖ４アプリケーション３０４はソケットＡＰＩ（ＩＰｖ４）３０６の上にあり、ソケットＡＰＩ（ＩＰｖ４）３０６はＴＣＰ（ＵＤＰ）／ＩＰｖ４  ３０８の上にある。ＢＩＳは、ＴＣＰ／ＩＰｖ４層３０８とネットワークカードドライバ層３１２の間に、特別な層を加えることにより作用する。この新しい層は、パケット代行受信（ＢＩＳ）層３１０である。この層３１０において、パケットは代行受信され、送出パケットはＩＰｖ４からＩＰｖ６に翻訳され、到着パケットはＩＰｖ６からＩＰｖ４に翻訳される。
【００７８】
図４は、Ｂｕｍｐ−Ｉｎ−ｔｈｅ−ＡＰＩ（ＢＩＡ）法４０２の全体構造を示している。ＩＰｖ４アプリケーション４０４は、最上層にある。ＩＰｖ４アプリケーション４０４はソケットＡＰＩ（ＩＰｖ４，ＩＰｖ６）４０６の上にある。図示のように、ＢＩＡ法は、各ＩＰｖ４ソケットのＡＰＩをＩＰｖ６ソケットのＡＰＩにマップする。従って、ＢＩＡトランスレータ４０８は、ソケット関数コールを代行受信する。ＢＩＡ法の場合、オペレーティングシステム用に使用でき、設置できるＩＰｖ６スタック層が必要である。結果として、ＢＩＡ法はＩＰｖ６スタックが使用できなければ働けない。
【００７９】
図５はＡＰＩレベルのトランスレータの構造５０２を示している。ＩＰｖ４アプリケーション５０４は、最上層にある。ＩＰｖ４アプリケーション５０４は、ソケットＡＰＩ（ＩＰｖ４）５０６の上にある。図５から明らかなように、ＡＰＩレベルの翻訳方法において、ＩＰｖ４ソケット関数コールを代行受信する。しかしながら、（ＢＩＡ法の場合）ＩＰｖ６のスタックがないので、各関数コールをマップしてローソケットを用い、（“送信”操作のために）自身のＩＰヘッダを供給し、ＩＰｖ４スタックの機能性を使用する。ＡＰＩレベルの翻訳方法について以下に詳述する。図示のように、ＡＰＩレベルのトランスレータは、ＩＰヘッダの提供を可能にするローソケット及びＩＰ＿ＨＤＲＩＮＣＬ又は等価のソケットオプションをサポートしている任意のシステムで働くことができる。
【００８０】
図６は、ＡＰＩレベルトランスレータを実装するための一般方法を示すフローチャートである。データを送る際に、ＩＰｖ４アプリケーションは、ＩＰｖ４ソケットＡＰＩをコールする（ステップ６０２）。各ソケットコールは、ローソケット（ＳＯＣＫ＿ＲＡＷ  ｏｐｔｉｏｎ）を使用するために翻訳される（ステップ６０４）。本方法は自身のＩＰヘッダを提供する（ステップ６０６）。１つの実施例において、これは、ＩＰヘッダを供給するためにローソケットにソケットオプションを設定することにより実行される（ｓｅｔｓｏｃｋｏｐｔ  ｆｕｎｃｔｉｏｎ，ＩＰ＿ＨＤＲＩＮＣＬ  ｏｐｔｉｏｎ）。次に、本方法は、ＩＰｖ４ソケット関数用の代替の実装を提供する（ステップ６０８）。
【００８１】
ＩＰｖ４ソケット関数用の代替の実装を提供する際に、下記のガイドラインに従うことができる。このガイドラインは、伝送及び受信関連機能（例えば、ｓｅｎｄｔｏ，ｓｅｎｄ，ｒｅｃｖｆｒｏｍ，ｒｅｃｖ）用に使用することができる。
【００８２】
図７は、データ受信方法７００を説明するためのフローチャートである。データを受信する時に、システムは、ローソケットで到着パケットを受信することができる（ステップ７０２）。必要ならば、ソースホストをチェックし、正しいアプリケーション用パケットであるかを確認する（ステップ７０４）。受信したパケットのポート番号をチェックする（ステップ７０６）。次に、システムは、受信パケットのトランスポートヘッダ及びＩＰヘッダを剥ぎ取り（ステップ７０８）、ペイロードをアプリケーションに渡す（ステップ７１０）。
【００８３】
トンネルを用いることができる。ローソケットの挙動に応じて、ＩＰｖ６パケットを、“ホストからルータへの”トンネルを用いるように作成することができる。ＵＤＰ及びＩＣＭＰプロトコルの場合は、ここに記述のシステムを用いてパケットを送信し受信できることは、当業者ならば理解できよう。ＴＣＰプロトコルの場合、ユーザレベルのＴＣＰの実動化が用いられる。
【００８４】
ネーム−アドレスの解決に関連する関数（例えば、ｇｅｔｈｏｓｔｂｙｎａｍｅ，ｇｅｔｈｏｓｔｂｙａｄｄｒ，ｉｎｔｅｒ＿ａｄｄｒ）の場合、次の２つの方法の中の１つを用いることができる。第１の方法は、ＢＩＳにより用いられる方法である。即ち、拡張ネームリゾルバとアドレスマッパをＢＩＳにおけるように使用する。第２の方法は、図９に示すように、“ネームリゾルバ”サービスを定義して使用する。“ネームリゾルバ”サービス９０６は、ＩＰｖ６とＩＰｖ４のスタック（９１０及び９０８）を有する個別のホスト９０２上で実行できる。ＩＰｖ４のみのホスト９０４上の代行受信されたネーム−アドレスのリゾルバ関数は、“ネームリゾルバ”サービス９０６を参照することができ、問い合わせを送る。サービス９０６は、ＩＰｖ６スタック９１０を用いより新しいネーム‐アドレスリゾルバ関数（例えば、ｇｅｔａｄｄｒｉｎｆｏ，ｇｅｔｎａｍｅｉｎｆｏ等）を用いることができ、ＩＰｖ４のみのホスト９０４からの問い合わせに対して得たレコードＡＡＡＡを返送する。このレコードＡＡＡＡは、特定のホスト名又はＩＰｖ４アドレスの問い合わせを伴い、ＡＰＩレベルトランスレータ（ＡＬＴ）のアドレス解決モジュールに記憶される。このマッピングは、該当する宛先ホスト名又は宛先ＩＰｖ４アドレスに一致する全ての宛先アドレスに対する適当なＩＰｖ６ヘッダを供給するために使用される。ソースＩＰｖ４アドレスは、ＲＦＣ２７６５（Ｓｔａｔｅｌｅｓｓ  ＩＰ／ＩＣＭＰ−翻訳アルゴリズム（ＳＩＩＴ）−Ｎｏｒｄｍａｒｋ  Ｅ．，Ｓｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ“Ｓｔａｔｅｌｅｓｓ  ＩＰ／ＩＣＭＰ翻訳アルゴリズム（ＳＩＩＴ），”ＲＦＣ２７６５、２０００年２月）からの勧告に基づきＩＰｖ６アドレスにマップすることができる。
【００８５】
ＢＩＳ、ＢＩＡ及びＡＬＴの方法におけるステップの順序について以下に説明し、これらの方法の差異をさらに明らかにする。ＩＰｖ４アプリケーションが、或るデータを送りたいケースを考える。ＢＩＳ法の場合、ＩＰｖ４アプリケーションは、データを送るためにＩＰｖ４ソケットＡＰＩのコールをする。このデータは、ＩＰｖ４ソケットＡＰＩによりＩＰｖ４スタックに渡される。ＩＰｖ４スタックは、その上にトランスポート，ＩＰｖ４ヘッダを付ける。スタックは、さらに他の関数を実行し、ＩＰｖ４パケットを下の層に渡す。ＢＩＳパケット代行受信者がこのＩＰｖ４パケットを代行受信し、それをＩＰｖ６パケットに翻訳し、次に、そのパケットをネットワークカードドライバに渡す。
【００８６】
ＢＩＡ法の場合，ＩＰｖ４アプリケーションがデータを送るためにＩＰｖ４ソケットＡＰＩのコールをする。ＢＩＡモジュールがこの関数コールを代行受信し、代わりに、対応するＩＰｖ６ソケットＡＰＩ関数をコールする。データは、かようにしてＩＰｖ６スタックに渡される。ＩＰｖ６スタックは、適当なトランスポート，ＩＰｖ６ヘッダを付加する。このＩＰｖ６スタックは、また、他の関数を実行でき、ＩＰｖ６パケットをネットワークカードドライバに渡す。
【００８７】
図８は、ＩＰｖ４アプリケーションがＡＬＴ法を用いてデータを送る方法８００を説明するためのフローチャートである。ＡＬＴ法において、ＩＰｖ４アプリケーションは、データを送るためにＩＰｖ４ソケットＡＰＩのコールをする（ステップ８０２）。ＡＬＴモジュールがこの関数コールを代行受信する（ステップ８０４）。ＡＬＴモジュールは、対応するソケットを、すでにローソケットにマップしている（ステップ８０６）。ＡＬＴは、適当なトランスポートとＩＰｖ６ヘッダを付加する（ステップ８０８）。必要ならば、ホストからルータへのトンネルを用いる（ステップ８１０）。また、必要ならば、パケットを断片化する（ステップ８１１）。次に、ＡＬＴは、ローソケットのための対応ＩＰｖ４ソケットＡＰＩ関数をコールし（ステップ８１２）、パケットをＩＰｖ４スタックに渡す（ステップ８１４）。このスタックは、（トランスポート，ＩＰヘッダの付加以外の）他の関数を実行でき、パケットをネットワークカードドライバに渡す（ステップ８１８）。
【００８８】
当業者ならば、情報及び信号は、種々異なる技術及び技法を用い表現できることは理解できよう。例えば、上述の説明において記述されたデータ、命令、指令、情報、信号、ビット、記号、チップは、電圧、電流、電磁波、磁場もしくは磁気粒子、光フィールドもしくは光粒子又は任意の組み合わせによって表現することができる。
【００８９】
当業者ならば、開示の実施形態に関連する種々の論理ブロック、モジュール、回路、及びアルゴリズムのステップは、電子ハードウェア、コンピュータハードウェア、もしくは両方の組み合わせとして実装できることは理解できよう。このハードウェアとソフトウェアの互換性を明瞭に示すために、種々の構成要素、ブロック、モジュール、回路、及びステップは、全体として機能性の面から記述してきた。かような機能性をハードウェアもしくはソフトウェアとして実装するかは、特定のアプリケーションと全システムに課せられた設計上の制約に依存する。熟練者であれば、各特定のアプリケーションに対して種々の方法で記述の機能性を実装できるが、しかし、そのような実装の決定は、本発明の範囲から逸脱するものと解釈すべきではない。
【００９０】
開示の実施形態に関連する種々の論理ブロック、モジュール、及び回路は、汎用のプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイシグナル（ＦＰＧＡ）もしくは他のプログラム可能な論理装置、離散的ゲートもしくはトランジスタ論理、離散的ハードウェア構成要素、又は記述された関数を実行するために設計された任意の組み合わせによって実装でき、実行できる。汎用プロセッサは、マイクロプロセッサであってよいが、それに代わり、プロセッサを、普通のプロセッサ、コントローラ、マイクロコントローラ、もしくはステートマシンとしてもよい。プロセッサは、コンピュータ装置の組み合わせ、例えば、ＤＳＰ（デジタル信号プロセッサ）とマイクロプロセッサの組み合わせ、複数のマイクロプロセッサ、ＤＳＰを核として連結した１つ以上のマイクロプロセッサもしくは任意の他の構成として実装することもできる。
【００９１】
開示の実施形態に関連し記述された方法もしくはアルゴリズムのステップは、直接ハードウェアに、プロセッサにより実行されるソフトウェアモジュールに、もしくは両方の組み合わせとして実装できる。ソフトウェアモジュールは、ＲＡＭメモリ、フラッシュメモリ、ＲＯＭメモリ、ＥＰＲＯＭメモリ、ＥＥＰＲＯＭメモリ、レジスタ、ハードディスク、取り外し可能なディスク、ＣＤ−ＲＯＭもしくは当技術において公知の任意形状の記憶媒体に常駐させることができる。典型的な記憶媒体は、その記憶媒体からの情報を読み取り、またその記憶媒体に情報を書き込みすることができるプロセッサと連結されている。別の選択肢として、記憶媒体をプロセッサと一体化してもよい。プロセッサと記憶媒体は、ＡＳＩＣ（特定用途向け集積回路）に常駐させることもできる。ＡＳＩＣは、ユーザの端末機に常駐させることができる。別の選択肢として、プロセッサと記憶媒体をユーザの端末機内の離散的構成要素として常駐させてもよい。
【００９２】
開示の方法は、記述した方法を達成するための１つ以上のステップもしくは動作から成る。方法のステップ及び／又は動作は、本発明の範囲から逸脱することなく、互換性を有する。即ち、実施形態の適切な実行のために、ステップもしくは動作の特別な順序が要求されない限り、特別なステップ及び／又は動作の順序及び／又は使用は、本発明の範囲から逸脱することなく変更することができる。
【００９３】
本発明の特別な実施形態と応用について図示し説明してきたが、本発明は、開示された通りの正確な構成と構成要素に限定されないことを理解すべきである。本発明の精神と範囲から逸脱することなく、ここに開示した本発明の方法及びシステムの配列、動作及び細部について、当業者には明らかな種々の変形、変更及び変化を加えることができる。
【図面の簡単な説明】
【００９４】
【図１】１つのコンピュータネットワークを介して互いに通信する２つ異なるシステムを示すブロック図である。
【図２】本発明の一実施形態において使用されるコンピュータ装置で利用されている、代表的なハードウェアの主要な構成要素を示すブロック図である。
【図３】ＢＩＳ（Ｂｕｍｐ−Ｉｎ−ｔｈｅ−Ｓｔａｃｋ）法の全体構造の説明図である。
【図４】ＢＩＡ（Ｂｕｍｐ−Ｉｎ−ｔｈｅ−ＡＰＩ）法の全体構造を示す図である。
【図５】ＡＰＩレベルトランスレータの構造を示す図である。
【図６】ＡＰＩレベルトランスレータを実装する一般的な方法を説明するためのフローチャートである。
【図７】データの受信方法を説明するためのフローチャートである。
【図８】ＡＰＩレベルのトランスレータを用いＩＰｖ４アプリケーションがデータを送信する方法を説明するためのフローチャートである。
【図９】ネームリゾルバサービスを説明するためのブロック図である。
【符号の説明】
【００９５】
１０２…コンピュータシステム（ＩＰｖ４システム）、１０４…コンピュータシステム（ＩＰｖ６システム）、１０６…コンピュータネットワーク、１０８…ＩＰｖ４アプリケーション、２０２…コンピュータ装置、２０３…プロセッサ、２０４…入力装置、２０６…出力装置、２０８…メモリ、２１０…通信インターフェース、２１２…通信ポート、２１４…他の構成要素、３０４−ＩＰｖ４アプリケーション、３０６…ソケットＡＰＩ（ＩＰｖ４）、３０８…ＴＣＰ（ＵＤＰ）／ＩＰｖ４、３１０…パケット代行受信者（ＢＩＳ）、３１２…ネットワークカードドライバ、４０４…ＩＰｖ４アプリケーション、４０６…ソケットＡＰＩ（ＩＰｖ４，ＩＰｖ６）、４０８…ＢＩＡトランスレータ（ＢＩＡ）、４１０…ＴＣＰ（ＵＤＰ）／ＩＰｖ６、４１２…ＴＣＰ（ＵＤＰ）／ＩＰｖ４、４１４…ネットワークカードドライバ、５０４…ＩＰｖ４アプリケーション、５０６…ソケットＡＰＩ（ＩＰｖ４）、５０８…ＡＰＩレベルのトランスレータ（ＡＬＴ）、５１０…ＴＣＰ（ＵＤＰ）／ＩＰｖ４，ローソケット、５１２…ネットワークカードドライバ、９０２…コンピュータシステム、９０４…ＩＰｖ４ホスト、９０６…ネームリゾルバサービス、９０８…ＩＰｖ４スタック、９１０…ＩＰｖ６スタック。
【図１】
2005057752.tif 000003
【図２】
2005057752.tif 000004
【図３】
2005057752.tif 000005
【図４】
2005057752.tif 000006
【図５】
2005057752.tif 000007
【図６】
2005057752.tif 000008
【図７】
2005057752.tif 000009
【図８】
2005057752.tif 000010
【図９】
2005057752.tif 000011