(57)【特許請求の範囲】
【請求項１】
通信ミドルウェアを備え他の通信装置との間でネットワークを介してデータを送信及び受信する機能を備える通信装置であって、
前記通信装置は、
送信側の自装置である第１の通信装置から受信側の他装置である第２の通信装置へ対象の第１のデータをパケットとして送信する場合の送信機能として、
前記対象の第１のデータに、前記第２の通信装置を宛先として指定するアドレス情報を含む第１ヘッダを付けて、第１パケットを作成する処理を行う第１パケット作成部と、
前記第１パケットを用いて、前記第１の通信装置の通信ミドルウェア及び使用するプロトコルに関する所定の第１の処理を実行する第１の処理部と、
前記第１パケットに、前記第２の通信装置を宛先として指定するアドレス情報を含む第２ヘッダを付けて、カプセル化した第２パケットを作成する処理を行う第２パケット作成部と、
前記第２パケットを用いて、前記第１の通信装置の通信ミドルウェア及び使用するプロトコルに関する所定の第２の処理を実行し、当該第２パケットをネットワークへ送信する第２の処理部と、を有し、
送信側の他装置である第２の通信装置から受信側の自装置である第１の通信装置へ対象の第２のデータをパケットとして受信する場合の受信機能として、
前記ネットワークから受信した前記第２パケットに対し、前記第１の通信装置の通信ミドルウェア及び使用するプロトコルに関する所定の第３の処理を実行し、前記第２ヘッダを外してカプセル化解除により前記第１パケットを取り出し、前記第１パケットから前記第１ヘッダを外して前記対象の第１のデータを取り出す処理を行う第３の処理部と、
前記第１の通信装置の通信ミドルウェアを通じて受け取った前記第２パケットにおける前記第１パケットの部分の第１ヘッダの宛先アドレス情報を、当該受信側の自装置である第１の通信装置のアドレス情報によって書き替えることにより、当該第１パケットを自装置で受領させる処理を行うヘッダ書き替え部と、を有すること、を特徴とする通信装置。
【請求項２】
通信ミドルウェアを備え他の通信装置との間でネットワークを介してデータを送信及び受信する機能を備える通信装置であって、
前記通信装置は、
送信側の自装置である第１の通信装置から受信側の他装置である第２の通信装置へ対象の第１のデータをパケットとして送信する場合の送信機能として、
前記対象の第１のデータに、前記第２の通信装置を宛先として指定するアドレス情報を含む第１ヘッダを付けて、第１パケットを作成する処理を行う第１パケット作成部と、
前記第１パケットを用いて、前記第１の通信装置の通信ミドルウェア及び使用するプロトコルに関する所定の処理を実行する第１の処理部と、
前記第１パケットに、前記第２の通信装置を宛先として指定するアドレス情報を含む第２ヘッダを付けて、カプセル化した第２パケットを作成する処理を行う第２パケット作成部と、
前記第２パケットを用いて、前記第１の通信装置の通信ミドルウェア及び使用するプロトコルに関する所定の処理を実行し、当該第２パケットをネットワークへ送信する第２の処理部と、を有し、
送信側の他装置である第２の通信装置から受信側の自装置である第１の通信装置へ対象の第２のデータをパケットとして受信する場合の受信機能として、
前記ネットワークから受信した前記第２パケットに対し、前記第１の通信装置の通信ミドルウェア及び使用するプロトコルに関する所定の第３の処理を実行し、前記第２ヘッダを外してカプセル化解除により前記第１パケットを取り出し、前記第１パケットから前記第１ヘッダを外して前記対象の第１のデータを取り出す処理を行う第３の処理部と、を有し、
前記送信機能として、
送信対象のパケットが前記ネットワークのルータを経由して通信するか否かを通信情報の比較により判定するルータ跨ぎ判定部と、
前記受信側の第２の通信装置の宛先アドレス情報を取得するために、ＡＲＰを用いて、前記送信対象のパケットのヘッダの宛先の第２の通信装置のＩＰアドレス情報を前記第２パケットの第２ヘッダの宛先のＩＰアドレス情報としてカプセル化した、ＡＲＰ要求による第２パケットを作成して送信させ、当該ＡＲＰ要求に対するＡＲＰ応答を受信するまで、当該送信対象のパケットを一時的に保持しておくパケット保持部と、
前記保持している送信対象のパケットのヘッダの宛先の第２の通信装置のアドレス情報を、前記第２の通信装置から受信した前記ＡＲＰ応答による第２パケットに含まれているアドレス情報によって書き替えて、当該書き替えたパケットを送信させる宛先変更部と、を有し、
前記受信機能として、前記ネットワークから受信したパケットが前記ＡＲＰ要求による第２パケットである場合に、当該ＡＲＰ要求で要求されている自装置のアドレス情報を含む、前記第１の通信装置のＩＰアドレス情報を前記第２パケットの第２ヘッダの宛先のＩＰアドレス情報としてカプセル化した、ＡＲＰ応答による第２パケットを作成して送信させる第４の処理部を有すること、を特徴とする通信装置。
【請求項３】
請求項１記載の通信装置において、
前記送信機能の第１パケット作成部、第１の処理部、第２パケット作成部、第２の処理部、及び前記受信機能の第３の処理部を構成する要素として、
旧通信ミドルウェアに相当する第１通信ミドルウェアを実行する第１通信ミドルウェア実行部と、
新通信ミドルウェアに相当する第２通信ミドルウェアを実行する第２通信ミドルウェア実行部と、
前記第１通信ミドルウェア上で動作する通信アプリケーションを実行し前記対象のデータを処理する通信アプリケーション実行部と、
前記第１及び第２通信ミドルウェアとの間でソケットインタフェースを介して情報を受け渡すプロトコル処理部と、
前記ネットワークに接続しパケットを送受信する物理的な通信インタフェース部と、
前記ネットワークの代わりに前記プロトコル処理部及び下記カプセル化処理部との間でパケットのデータ・情報を授受する処理を行う仮想的な通信インタフェースである仮想通信インタフェース部と、
前記通信インタフェース部、仮想通信インタフェース部、及び第２通信ミドルウェア実行部との間に介在してパケットのデータ・情報を授受し、パケットのカプセル化に関する制御処理を行うカプセル化処理部と、を有し、
ＩＰアドレス及びプロトコルを含む通信情報と、前記第１通信ミドルウェアの通信情報と第２通信ミドルウェアの通信情報との対応関係を示す情報とを、テーブル情報として管理し、
前記仮想通信インタフェース部のみに対して前記ＩＰアドレスを割り当て、
前記カプセル化処理部は、前記ヘッダ書き替え部を有し、前記ヘッダ書き替え部は、前記対象の第２のデータをパケットとして受信する場合に、前記第２通信ミドルウェア実行部の第２通信ミドルウェアを通じて受け取った前記第２パケットにおける前記第１パケットの部分の第１ヘッダの宛先アドレス情報を、第１の通信装置のアドレス情報によって書き替えることにより、当該第１パケットの対象の第１のデータを自装置で受領させる処理を行うこと、を特徴とする通信装置。
【請求項４】
請求項２記載の通信装置において、
前記送信機能の第１パケット作成部、第１の処理部、第２パケット作成部、第２の処理部、前記受信機能の第３の処理部、及び第４の処理部を構成する要素として、
旧通信ミドルウェアに相当する第１通信ミドルウェアを実行する第１通信ミドルウェア実行部と、
新通信ミドルウェアに相当する第２通信ミドルウェアを実行する第２通信ミドルウェア実行部と、
前記第１通信ミドルウェア上で動作する通信アプリケーションを実行し前記対象のデータを処理する通信アプリケーション実行部と、
前記第１及び第２通信ミドルウェアとの間でソケットインタフェースを介して情報を受け渡すプロトコル処理部と、
前記ネットワークに接続しパケットを送受信する物理的な通信インタフェース部と、
前記ネットワークの代わりに前記プロトコル処理部及び下記カプセル化処理部との間でパケットのデータ・情報を授受する処理を行う仮想的な通信インタフェースである仮想通信インタフェース部と、
前記通信インタフェース部、仮想通信インタフェース部、及び第２通信ミドルウェア実行部との間に介在してパケットのデータ・情報を授受し、パケットのカプセル化に関する制御処理を行うカプセル化処理部と、を有し、
ＩＰアドレス及びプロトコルを含む通信情報と、前記第１通信ミドルウェアの通信情報と第２通信ミドルウェアの通信情報との対応関係を示す情報とを、テーブル情報として管理し、
前記仮想通信インタフェース部のみに対して前記ＩＰアドレスを割り当て、
前記カプセル化処理部は、前記送信機能として、前記ルータ跨ぎ判定部と、前記パケット保持部と、前記宛先変更部と、を有し、前記受信機能として、前記第４の処理部を有すること、を特徴とする通信装置。
【請求項５】
請求項３記載の通信装置において、
前記送信の際、前記通信アプリケーションからの前記対象の第１のデータをもとに、前記第１通信ミドルウェア実行部、及び前記プロトコル処理部の処理を通じて、前記第１パケットとして作成し、前記仮想通信インタフェース部を通じて前記カプセル化処理部へ渡し、前記カプセル化処理部は、受け取ったパケットについて、前記テーブル情報に基づき、使用するプロトコル及び経由する通信ミドルウェアに応じた、カプセル化の要否を判定し、上記判定で要の場合は、前記カプセル化処理部の指示に従い、前記第２通信ミドルウェア実行部、及びプロトコル処理部の処理を通じて、前記第１パケットから第２パケットを作成し、当該第２パケットを前記仮想通信インタフェース部を通じて前記カプセル化処理部へ渡し、上記判定で不要の場合は、当該パケットを、前記通信インタフェース部を通じてＲＡＷ送信させ、
前記受信の際、前記通信インタフェース部を通じて受信した前記第２パケットを、前記カプセル化処理部、前記仮想通信インタフェース部、プロトコル処理部、及び第２通信ミドルウェア実行部の処理を通じて、当該第２パケットから第１パケットを取り出して前記カプセル化処理部へ渡し、前記カプセル化処理部は、受け取った第１パケットをもとに、前記仮想通信インタフェース部、プロトコル処理部、及び第１通信ミドルウェア実行部の処理を通じて、前記対象の第１のデータを前記通信アプリケーションへ渡すこと、を特徴とする通信装置。
【請求項６】
請求項４記載の通信装置において、
前記送信の際、前記通信アプリケーションからの前記対象の第１のデータをもとに、前記第１通信ミドルウェア実行部、及び前記プロトコル処理部の処理を通じて、前記第１パケットとして作成し、前記仮想通信インタフェース部を通じて前記カプセル化処理部へ渡し、前記カプセル化処理部は、受け取ったパケットについて、前記テーブル情報に基づき、使用するプロトコル及び経由する通信ミドルウェアに応じた、カプセル化の要否を判定し、上記判定で要の場合は、前記カプセル化処理部の指示に従い、前記第２通信ミドルウェア実行部、及びプロトコル処理部の処理を通じて、前記第１パケットから第２パケットを作成し、当該第２パケットを前記仮想通信インタフェース部を通じて前記カプセル化処理部へ渡し、上記判定で不要の場合は、当該パケットを、前記通信インタフェース部を通じてＲＡＷ送信させ、
前記受信の際、前記通信インタフェース部を通じて受信した前記第２パケットを、前記カプセル化処理部、前記仮想通信インタフェース部、プロトコル処理部、及び第２通信ミドルウェア実行部の処理を通じて、当該第２パケットから前記第１パケットを取り出して前記カプセル化処理部へ渡し、前記カプセル化処理部は、受け取ったパケットをもとに、前記仮想通信インタフェース部、プロトコル処理部、及び第１通信ミドルウェア実行部の処理を通じて、前記対象の第１のデータを前記通信アプリケーションへ渡すこと、を特徴とする通信装置。
【請求項７】
請求項３記載の通信装置において、
前記受信の際に前記ヘッダ書き替え部により書き替える宛先アドレス情報はＭＡＣアドレス情報であること、を特徴とする通信装置。
【請求項８】
請求項４記載の通信装置において、
前記ＡＲＰでやりとりする宛先アドレス情報はＭＡＣアドレス情報であること、を特徴とする通信装置。
【請求項９】
請求項３または４に記載の通信装置において、
前記テーブル情報として、
パケットの種別、送信先の通信装置のＩＰアドレス、宛先の通信ミドルウェアを示すポート番号、及び、使用するプロトコルまたはＲＡＷ送信を示す情報、を格納する第１のテーブルと、
前記通信装置における旧通信ミドルウェアである第１通信ミドルウェアの通信情報とそれに対応付けられる新通信ミドルウェアである第２通信ミドルウェアの通信情報との対応関係を示す情報として、ＩＰアドレス及びポート番号を含む情報を格納する第２のテーブルと、を有すること、を特徴とする通信装置。
【請求項１０】
請求項３または４に記載の通信装置において、
前記カプセル化処理部は、前記テーブル情報に基づき、前記第１パケット及び第２パケットの作成の際、送信先の通信装置のＩＰアドレスと、宛先の通信ミドルウェアを示すポート番号とを含む情報を指示すること、を特徴とする通信装置。
【請求項１１】
請求項３または４に記載の通信装置において、
前記送信の場合で、送信側の自装置である第１の通信装置は前記第１通信ミドルウェア及び第２通信ミドルウェアを有する新装置であり、受信側の他装置である第２の通信装置は第１通信ミドルウェアを有し第２通信ミドルウェアを有さない旧装置である場合において、
前記第１の通信装置は、前記通信アプリケーションからの前記対象の第１のデータを、前記第１通信ミドルウェア実行部、前記プロトコル処理部、前記仮想通信インタフェース部、前記カプセル化処理部、及び前記通信インタフェース部の処理を通じて、前記第１パケットとしてネットワークへ送信し、
前記第２の通信装置は、前記ネットワークから受信した前記第１パケットを、通信インタフェース部、プロトコル処理部、第１通信ミドルウェア実行部の処理を通じて、通信アプリケーション実行部へ前記対象の第１のデータとして取得させ、
前記受信の場合で、送信側の他装置である第２の通信装置は第１通信ミドルウェアを有し第２通信ミドルウェアを有さない旧装置であり、受信側の自装置である第１の通信装置は前記第１通信ミドルウェア及び第２通信ミドルウェアを有する新装置である場合において、
前記第２の通信装置は、前記通信アプリケーションからの前記対象の第２のデータを、第１通信ミドルウェア実行部、プロトコル処理部、及び通信インタフェース部の処理を通じて、前記第１パケットとしてネットワークへ送信し、
前記第１の通信装置は、前記ネットワークから受信した前記第１パケットを、前記通信インタフェース部、前記カプセル化処理部、前記仮想通信インタフェース部、前記プロトコル処理部、前記第１通信ミドルウェア実行部の処理を通じて、前記通信アプリケーション実行部へ前記対象の第２のデータとして取得させること、を特徴とする通信装置。
【請求項１２】
請求項４記載の通信装置において、
前記ＡＲＰを用いて通信装置間でやりとりした前記ＡＲＰ応答の情報を記録しておく手段と、前記ＡＲＰ要求による第２パケットを送信する前に、上記ＡＲＰ応答の情報を参照して、前記送信対象のパケットの宛先の通信装置からの過去のＡＲＰ応答の情報が存在する場合は、当該送信対象のパケットの宛先のアドレス情報を当該過去のＡＲＰ応答のアドレス情報を用いて書き替える手段とを有し、上記構成によりＡＲＰを用いた通信の繰り返しを省略すること、を特徴とする通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置に関し、特に、通信装置が備える通信ミドルウェアに関する。
【背景技術】
【０００２】
例えば鉄道の運行管理システムや金融システムは、そのシステム（情報処理システム）の立ち上げ当初は小規模であっても、システム拡張や他システムとの統合等により、大規模化かつ複雑化していくことが多い。そして、システムを構成する装置の高性能化や技術の進歩に合わせてシステムを更新する（以下「新システムに移行する」「システム移行」等とも表現する）場合には、それらのシステム規模が大きくなるに従って修正箇所が多岐にわたるため、開発コストが膨大となる。
【０００３】
システム移行（特に通信ミドルウェアの変更）における一般的な問題について、図１７を用いて説明する。図１７は、旧システムの通信装置1701から新システムの通信装置1706へシステム移行するケースを示している。旧システムの通信装置1701に示すような構成は一般的なものである。即ち、様々なサービスを提供する通信アプリケーション1702が、システム固有の通信基盤である旧通信ミドルウェア1703上で動作する。そして、通信アプリケーション1702が動作してデータを通信相手に送信する際には、その下位の階層に位置する旧通信ミドルウェア1703及びプロトコルスタック1704（ＴＣＰ，ＩＰ等のプロトコル群）を用いて、通信Ｉ/Ｆ1705（Ｉ/Ｆ：インタフェース）を介してネットワークにデータのパケット（フレーム等）を送出する。
【０００４】
ここで、旧システムから新システムへシステム移行し、通信装置の通信ミドルウェアを旧通信ミドルウェア1703から新通信ミドルウェア1707に切り替える場合について考えてみる。
【０００５】
システム規模が小さい間は、通信ミドルウェアを変更すると共に通信アプリケーション1702を新しいものに切り替えることが一般的である。しかしシステム規模が大きい場合、上述のように通信アプリケーション1702の開発コストが膨大なものとなってしまう。そのため開発コストを抑えるためには、旧システムの通信アプリケーション1702を新システムの通信装置1706でも流用することが望まれる。
【０００６】
上述のように、旧システムの通信アプリケーション1702は、旧通信ミドルウェア1703上で動作することを前提に開発されている。そこで、システム移行した場合には、図１７の下側（1706）に示すように、通信アプリケーション1702を新システムの新通信ミドルウェア1708上で動作させるために、旧通信ミドルウェア1703と新通信ミドルウェア1708との差異を補う新旧ミドル変換部1707を設ける必要がある。
【０００７】
大規模システムにおいては、通信アプリケーション1702をすべて作り替えるよりは、新旧ミドル変換部1707を新規に開発する方が開発コストは少なくて済む。しかしながら、それでも新旧ミドル変換部1707の開発コストは依然として大きい。例えば、新旧ミドル変換部1707は、少なくとも、（１）通信アプリケーション1702とのインタフェース部分、（２）新通信ミドルウェア1708とのインタフェース部分、及び、（３）旧通信ミドルウェア1703及び新通信ミドルウェア1708のそれぞれの内部の挙動（タイムアウト条件等）を模擬する部分、についての機能を必要とする。特に、上記（３）の部分の開発を行うためには、旧通信ミドルウェア1703及び新通信ミドルウェア1708の内部の動作を詳細まで熟知している必要があるため、多大な時間を費やすことになり、通信アプリケーション1702のプログラムの再利用性の観点から効率が悪い。
【０００８】
上記問題に関して、先行技術例として、特開２００８−０７８９６６号公報（特許文献１）、非特許文献１、等がある。
【０００９】
特許文献１では、旧システムの通信装置とネットワークとの間に、旧システムの通信装置から送信されるパケットをカプセル化するカプセル化装置（トンネリング装置）を設ける。カプセル化装置は、カプセル化した各パケットを、新システムの新通信ミドルウェア経由でネットワークに送信する。また、カプセル化装置は、ネットワークから受信したカプセル化されたパケットを、デカプセル化（カプセル化解除）して、旧システムのパケットを抽出し、旧システムの通信装置に送信する。
【００１０】
非特許文献１では、仮想Ethernet I/F（Ethernetは登録商標）を通信装置自身に備え、通信装置単体で旧システムのパケットをカプセル化する技術が公開されている。具体的には、通信装置は、仮想Ethernet I/Fに新たなＩＰアドレスを割り当てて、すべての通信が仮想Ethernet I/Fを経由するようにルーティングテーブル等の設定を行う。そして、通信装置は、旧システムのパケット（Ethernetフレーム）を仮想Ethernet I/Fを介してカプセル化して新通信ミドルウェアに渡すことで、新システムのパケットを送信することができるようになる。
【００１１】
このように、特許文献１や非特許文献１に記載の技術では、新規に開発する対象が、新通信ミドルウェア経由で受信した旧システムのパケット（Ethernetフレーム）を旧システムに渡す部分（前記（１）の部分）、およびパケット（Ethernetフレーム）を新通信ミドルウェアに渡す部分（前記（２）の部分）のみとなる。そのため、旧通信ミドルウェアと新通信ミドルウェアを相互変換する新旧ミドル変換部1707を開発する場合に比べて、技術難易度も低く、開発コストも大幅に削減することが可能となる。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特開２００８−０７８９６６号公報
【非特許文献】
【００１３】
【非特許文献１】登大遊、“SoftEther の内部構造”、［online］、［平成２２年９月７日検索］、インターネット＜URL：http://www.softether.co.jp/jp/company/media/academic/data/softetherpaper002.pdf>
【発明の概要】
【発明が解決しようとする課題】
【００１４】
背景技術に記載したように、特許文献１に開示されている技術では、旧システムのシステム設定（ＩＰアドレス等）は全く変更せずに、カプセル化装置を設置するだけで新システムへの移行が可能となる。しかしながら、カプセル化装置が通信装置の台数分だけ必要となり、ハードウェアコストが膨大になるという問題が生じる。
【００１５】
また、非特許文献１に開示されている技術では、通信装置単体で新システムへの移行が可能であるため、追加のハードウェアコストは不要となる。しかし、仮想Ethernet I/Fは、ＯＳからは物理Ethernet I/Fと同じように認識されるため、物理Ethernet I/Fと異なるＩＰアドレスを設定する必要がある。したがって、旧システムのシステム設定（ＩＰアドレス等）変更や、新システム設計時にＩＰアドレスの制約を考慮しなければならない（旧システムのＩＰアドレスと重複してはいけない等）といった手間が生じる。
【００１６】
また、システム移行リスクを小さくするために、一気に全通信装置を新装置に切り替えるのではなく、一定期間をかけて数台ずつ段階的に切り替える方法をとることもある。その場合、完全に移行が完了するまでは、同一ネットワーク上に、旧システムのＩＰアドレスのパケットと新システムのＩＰアドレスのパケットとが混在することになり、一般的なルータやスイッチでは対応できない可能性がある。このような単一ネットワーク上に複数のＩＰアドレスが混在する問題についても、非特許文献１や特許文献１では解決することができない。
【００１７】
以上を鑑み、本発明の主な目的は、通信装置のシステム移行など（旧通信ミドルウェアから新通信ミドルウェアへの変更など）に係わり、上述のようなＩＰアドレス等（システム設定）の変更やハードウェアの追加無しに、旧通信ミドルウェアを介して情報を送受信する通信アプリケーションが、新通信ミドルウェアを介してでも情報を送受信できるようにする技術（言い換えるとシステム移行の容易化及びコスト低減などの実現）を提供することである。
【課題を解決するための手段】
【００１８】
本発明のうち代表的な形態は、通信システムを構成する通信装置（通信ミドルウェアを備え他の通信装置との間でネットワークを介してデータを送信及び受信する機能を備える通信装置）、等であって、以下に示す構成を有することを特徴とする。
【００１９】
（１Ａ）本通信装置は、送信側の自装置である第１の通信装置から受信側の他装置である第２の通信装置へ対象の第１のデータをパケット（フレーム等）として送信する場合の送信機能として、対象の第１のデータに、第２の通信装置を宛先として指定するアドレス情報（使用するプロトコルに応じた情報）を含む第１ヘッダを付けて、第１パケット（カプセル化前の通常のパケット）を作成する処理を行う第１パケット作成部と、第１パケットを用いて、第１の通信装置の通信ミドルウェア及び使用するプロトコルに関する所定の第１の処理を実行する第１の処理部と、第１パケットに、第２の通信装置（その通信ミドルウェア）を宛先として指定するアドレス情報を含む第２ヘッダを付けて、カプセル化した第２パケット（カプセル化パケット）を作成する処理を行う第２パケット作成部と、第２パケットを用いて、第１の通信装置の通信ミドルウェア及び使用するプロトコルに関する所定の第２の処理を実行し、当該第２パケットをネットワーク（第２の通信装置）へ送信する第２の処理部と、を有する。
【００２０】
本通信装置は、送信側の他装置である第２の通信装置から受信側の自装置である第１の通信装置へ対象の第２のデータをパケットとして受信する場合の受信機能として、ネットワーク（第２の通信装置）から受信した第２パケットに対し、第１の通信装置の通信ミドルウェア及び使用するプロトコルに関する所定の第３の処理を実行し、第２ヘッダを外してカプセル化解除により第１パケットを取り出し、第１パケットから第１ヘッダを外して対象の第１のデータを取り出す処理を行う第３の処理部と、第１の通信装置の通信ミドルウェアを通じて受け取った第２パケットにおける第１パケットの部分の第１ヘッダの宛先アドレス情報を、当該受信側の自装置である第１の通信装置のアドレス情報によって書き替えることにより、当該第１パケットを自装置で受領させる処理を行うヘッダ書き替え部と、を有する。
【００２１】
（２Ａ）本通信装置は、送信側の自装置である第１の通信装置から受信側の他装置である第２の通信装置へ対象の第１のデータをパケットとして送信する場合の送信機能として、対象の第１のデータに、第２の通信装置を宛先として指定するアドレス情報を含む第１ヘッダを付けて、第１パケットを作成する処理を行う第１パケット作成部と、第１パケットを用いて、第１の通信装置の通信ミドルウェア及び使用するプロトコルに関する所定の処理を実行する第１の処理部と、第１パケットに、第２の通信装置（その通信ミドルウェア）を宛先として指定するアドレス情報を含む第２ヘッダを付けて、カプセル化した第２パケットを作成する処理を行う第２パケット作成部と、第２パケットを用いて、第１の通信装置の通信ミドルウェア及び使用するプロトコルに関する所定の処理を実行し、当該第２パケットをネットワーク（第２の通信装置）へ送信する第２の処理部と、を有する。
【００２２】
本通信装置は、送信側の他装置である第２の通信装置から受信側の自装置である第１の通信装置へ対象の第２のデータをパケットとして受信する場合の受信機能として、ネットワーク（第２の通信装置）から受信した第２パケットに対し、第１の通信装置の通信ミドルウェア及び使用するプロトコルに関する所定の第３の処理を実行し、前記第２ヘッダを外してカプセル化解除により前記第１パケットを取り出し、第１パケットから第１ヘッダを外して対象の第１のデータを取り出す処理を行う第３の処理部と、を有する。
【００２３】
本通信装置は、送信機能として、送信対象のパケットが前記ネットワークのルータを経由して通信するか否かを通信情報の比較により判定するルータ跨ぎ判定部と、受信側の第２の通信装置の宛先アドレス情報を取得するために、ＡＲＰを用いて、送信対象のパケットのヘッダの宛先の第２の通信装置のＩＰアドレス情報を第２パケットの第２ヘッダの宛先のＩＰアドレス情報としてカプセル化した、ＡＲＰ要求による第２パケットを作成して送信させ、当該ＡＲＰ要求に対するＡＲＰ応答を受信するまで、当該送信対象のパケットを一時的に保持しておくパケット保持部と、保持している送信対象のパケットのヘッダの宛先の第２の通信装置のアドレス情報を、第２の通信装置から受信したＡＲＰ応答による第２パケットに含まれているアドレス情報によって書き替えて、当該書き替えたパケットを送信させる宛先変更部と、を有する。
【００２４】
本通信装置は、受信機能として、ネットワークから受信したパケットがＡＲＰ要求による第２パケットである場合に、当該ＡＲＰ要求で要求されている自装置のアドレス情報を含む、第１の通信装置のＩＰアドレス情報を第２パケットの第２ヘッダの宛先のＩＰアドレス情報としてカプセル化した、ＡＲＰ応答による第２パケットを作成して送信させる第４の処理部を有する。
【００２５】
（１Ｂ）本通信装置は、前記（１Ａ）で、前記送信機能の第１パケット作成部、第１の処理部、第２パケット作成部、第２の処理部、及び前記受信機能の第３の処理部を構成する要素として以下を有する。本通信装置は、旧通信ミドルウェアに相当する第１通信ミドルウェアを実行する第１通信ミドルウェア実行部と、新通信ミドルウェアに相当する第２通信ミドルウェアを実行する第２通信ミドルウェア実行部と、第１通信ミドルウェア上で動作する通信アプリケーションを実行し対象のデータを処理する通信アプリケーション実行部と、第１及び第２通信ミドルウェアとの間でソケットインタフェースを介して情報を受け渡すプロトコル処理部と、ネットワークに接続しパケットを送受信する物理的な通信インタフェース部と、ネットワークの代わりにプロトコル処理部及び下記カプセル化処理部との間でパケットのデータ・情報を授受する処理を行う仮想的な通信インタフェースである仮想通信インタフェース部と、前記通信インタフェース部、仮想通信インタフェース部、及び第２通信ミドルウェア実行部との間に介在してパケットのデータ・情報を授受し、パケットのカプセル化に関する制御処理を行うカプセル化処理部と、を有する。そして、本通信装置は、ＩＰアドレス及びプロトコルを含む通信情報と、第１通信ミドルウェアの通信情報と第２通信ミドルウェアの通信情報との対応関係を示す情報とを、テーブル情報として管理し、仮想通信インタフェース部のみに対してＩＰアドレスを割り当てる。そして、前記カプセル化処理部は、前記ヘッダ書き替え部を有し、前記ヘッダ書き替え部は、前記受信時に、前記第２通信ミドルウェア実行部の第２通信ミドルウェアを通じて受け取った第２パケットにおける第１パケットの部分の第１ヘッダの宛先アドレス情報を、第１の通信装置のアドレス情報によって書き替えることにより、当該第１パケットの対象の第１のデータを自装置で受領させる処理を行う。
【００２６】
（２Ｂ）本通信装置は、前記送信機能の第１パケット作成部、第１の処理部、第２パケット作成部、第２の処理部、前記受信機能の第３の処理部、及び第４の処理部を構成する要素として以下を有する。本通信装置は、旧通信ミドルウェアに相当する第１通信ミドルウェアを実行する第１通信ミドルウェア実行部と、新通信ミドルウェアに相当する第２通信ミドルウェアを実行する第２通信ミドルウェア実行部と、第１通信ミドルウェア上で動作する通信アプリケーションを実行し対象のデータを処理する通信アプリケーション実行部と、第１及び第２通信ミドルウェアとの間でソケットインタフェースを介して情報を受け渡すプロトコル処理部と、ネットワークに接続しパケットを送受信する物理的な通信インタフェース部と、ネットワークの代わりにプロトコル処理部及び下記カプセル化処理部との間でパケットのデータ・情報を授受する処理を行う仮想的な通信インタフェースである仮想通信インタフェース部と、前記通信インタフェース部、仮想通信インタフェース部、及び第２通信ミドルウェア実行部との間に介在してパケットのデータ・情報を授受し、パケットのカプセル化に関する制御処理を行うカプセル化処理部と、を有する。そして、本通信装置は、ＩＰアドレス及びプロトコルを含む通信情報と、第１通信ミドルウェアの通信情報と第２通信ミドルウェアの通信情報との対応関係を示す情報とを、テーブル情報として管理し、仮想通信インタフェース部のみに対して前記ＩＰアドレスを割り当てる。そして、前記カプセル化処理部は、前記送信機能として、前記ルータ跨ぎ判定部と、前記パケット保持部と、前記宛先変更部と、を有し、前記受信機能として、前記第４の処理部を有する。
【発明の効果】
【００２７】
本発明のうち代表的な形態によれば、通信装置のシステム移行などに係わり、ＩＰアドレス等の変更やハードウェアの追加無しに、旧通信ミドルウェアを介して情報を送受信する通信アプリケーションが、新通信ミドルウェアを介してでも情報を送受信できるようになる（システム移行の容易化及びコスト低減などの実現）。
【図面の簡単な説明】
【００２８】
【図１】本発明の一実施の形態の通信装置の機能ブロック構成例を示す図である。
【図２】実施の形態１の通信装置の、カプセル化処理部の詳細構成を示す図である。
【図３】通信装置のハードウェア構成例を示す図である。
【図４】プロトコル管理テーブルの例を示す図である。
【図５】通信情報対応テーブルの例を示す図である。
【図６】新装置が新装置にデータを送信する場合の電文を示す図である。
【図７】新装置が新装置にデータを送信する場合の通信フローを示す図である。
【図８】新装置が旧装置にデータ送信する場合の電文を示す図である。
【図９】新装置が旧装置にデータ送信する場合の通信フローを示す図である。
【図１０】旧装置が新装置にデータ送信する場合の電文を示す図である。
【図１１】旧装置が新装置にデータ送信する場合の通信フローを示す図である。
【図１２】実施の形態２の通信装置のカプセル化処理部の詳細構成を示す図である。
【図１３】新装置から新装置へのデータ送信の電文（１）を示す図である。
【図１４】新装置から新装置へのデータ送信の通信フロー（１）を示す図である。
【図１５】新装置から新装置へのデータ送信の電文（２）を示す図である。
【図１６】新装置から新装置へのデータ送信の通信フロー（２）を示す図である。
【図１７】システム移行に関する従来技術例を示す図である。
【発明を実施するための形態】
【００２９】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお説明上、「第１パケット」：カプセル化前の通常のパケット、「第２パケット」：カプセル化後のパケット、とする。また、「第１通信ミドルウェア（Ｍ１）」：システム移行における旧通信ミドルウェア、「第２通信ミドルウェア（Ｍ２）」：システム移行における新通信ミドルウェア、とする。以下の実施の形態では、カプセル化対象のパケット（データ）は、ＯＳＩモデルで言うところのレイヤ２におけるEthernetフレームを想定する。
【００３０】
＜実施の形態１＞
図１〜図１１を用いて、本発明の実施の形態１の通信装置及びシステムについて説明する。システム移行に伴い、システム内の複数の通信装置における少なくとも一部の通信装置に、旧通信ミドルウェアに加え新通信ミドルウェアが実装された場合である。このシステム構成において、実施の形態１では、特に、新通信ミドルウェアが実装された通信装置（「新装置」）は、送信側の通信装置からネットワークを介して受信したパケット（第２パケット）における第１パケット部分のヘッダ情報（宛先情報）を、第２パケット部分のヘッダ情報（宛先情報）によって書き換えて自分宛ての情報として受領するヘッダ書き替え部（図２の２０６、図７の１０５ｂ等）を有する。
【００３１】
［通信装置（機能）］
図１を用いて、実施の形態１の通信装置及びそのシステムの概要について説明する。通信装置１０１は、互いにネットワーク１０２を介して通信できるように接続される。通信装置１０１は、データ（パケット）の送信・受信の両方の機能を備える。システム全体は、少なくとも送信側及び受信側の２つの通信装置１０１を含んで構成される。システム内の複数の通信装置１０１における少なくとも一部の通信装置１０１は新装置（旧通信ミドルウェア（１０４）に加え新通信ミドルウェア（１０６）が実装された構成）であり、他の通信装置１０１は旧装置（旧通信ミドルウェア（１０４）のみ実装された構成）である。新装置の通信アプリケーション（１０３）は旧装置の通信アプリケーション（１０３）が流用される。例えば１０台のうちの１台、５台、１０台といったように段階的に新装置が導入され、新旧の通信装置１０１の混在の状態を経てシステム移行される。本実施の形態では、ネットワーク１０２は、ルータ１１３等で接続された複数のサブネットにより構成されている。ネットワーク１０２は、EthernetやＴＣＰ／ＩＰ等に対応したＬＡＮやＷＡＮ等である。
【００３２】
通信装置１０１は、通信アプリケーション実行部１０３、第１通信ミドルウェア実行部１０４、カプセル化処理部１０５、第２通信ミドルウェア実行部１０６、プロトコルスタック１０７、仮想通信Ｉ/Ｆ１０８、通信Ｉ/Ｆ１０９、プロトコル管理テーブル１１０、及び通信情報対応テーブル１１２、等を備える構成である。通信装置１０１は、図示しないが、その他、ＯＳ等の一般的な要素を実装している。通信装置１０１は、通信機能を備える例えばＰＣ等の各種の情報処理装置として捉えてもよい。
【００３３】
通信アプリケーション実行部１０３は、所定のサービス（種々のサービス）を他の通信装置（１０１）に対して提供したり、他の通信装置（１０１）に対して所定のサービス（種々のサービス）を要求したりする通信アプリケーションプログラムを実行する。なお１０３は、１つだけでなく複数が存在し動作してもよい。１０３において実行される通信アプリケーションプログラム（以下略す場合は「アプリケーション」「ＡＰＰ」等）は、図１７の構成では通信アプリケーション1702に相当し、第１通信ミドルウェア実行部１０４において実行される第１通信ミドルウェア（システム移行前の旧通信ミドルウェア）上で動作する。
【００３４】
第１通信ミドルウェア実行部１０４（以下略す場合は「第１（旧）通信ミドルウェア」（Ｍ１）等）は、１０３のＡＰＰ（複数のＡＰＰ）が実行されるときに共通に使用される機能を提供するプログラムを実行する。例えば、当該プログラムは、ソケットＩ/Ｆを備えており、一般的に、認証や暗号化等のセキュリティ機能や、ソケットの初期化や終了処理等の複雑な通信処理機能等を有している。なお、第１通信ミドルウェア実行部１０４において実行されるプログラムは、旧通信プロトコルを用いるものであって、図１７での旧通信ミドルウェア1703に相当する。
【００３５】
第２通信ミドルウェア実行部１０６（以下略す場合は「第２（新）通信ミドルウェア」（Ｍ２）等）は、第１通信ミドルウェアと同様に、ＡＰＰが実行されるときに共通に使用される機能を提供するプログラムを実行する。第２通信ミドルウェア実行部１０６において実行されるプログラムは、新通信プロトコルを用いるものであって、図１７での新通信ミドルウェア1708に相当し、第１通信ミドルウェア実行部１０４とは異なる通信プロトコル処理を実行する。
【００３６】
カプセル化処理部１０５は、送信の場合に、仮想通信Ｉ/Ｆ１０８から受け取った送信パケット（「Ethernetフレーム」等）をチェック（確認）し、カプセル化が必要かどうかを判定し、カプセル化が必要なパケット（カプセル化対象（要）の第１パケット）である場合は、第２通信ミドルウェア実行部１０６に渡し、カプセル化の必要が無いパケット（カプセル化対象外（不要）のパケット、カプセル化済みの第２パケット等）である場合は、そのまま通信Ｉ/Ｆ１０９経由で送信する処理を行う。また、カプセル化処理部１０５は、受信の場合に、通信Ｉ/Ｆ１０９や第２通信ミドルウェア実行部１０６を通じて受け取った受信パケットを、必要に応じてヘッダ書き換え処理した後、仮想通信Ｉ/Ｆ１０８に渡す処理などを行う。１０５の詳細構成については後述する（図２）。
【００３７】
プロトコルスタック１０７は、例えばＴＣＰ，ＵＤＰ，ＩＰ等の所定のプロトコル処理を行うプログラム群（プロトコル処理部）である。１０７は、第１通信ミドルウェア実行部１０４及び第２通信ミドルウェア実行部１０６との間で、ソケットＩ/Ｆを介して送受信情報を受け渡すことができ、仮想通信Ｉ/Ｆ１０８と通信する。
【００３８】
仮想通信Ｉ/Ｆ１０８は、通信Ｉ/Ｆ機能をソフトウェアで模擬した仮想的な通信インタフェース部であり、ＯＳからは通常の通信インタフェース（通信Ｉ/Ｆ１０９等）と等価に扱われる。ただし、通常の通信インタフェース（１０９）が特定の通信用ハードウェアと関連付け（実装）されて、そのハードウェアと送受信パケットの受け渡しを行うのに対し、仮想通信Ｉ/Ｆ１０８は、特定のソフトウェアプログラムと関連付け（実装）されて、そのプログラムと送受信パケットの受け渡しを行う。本実施の形態では、１０８は、カプセル化処理部１０５等と共にソフトウェアで実装される。１０８は、カプセル化処理部１０５及びプロトコルスタック１０７と連携し、プロトコルスタック１０７から渡された送信パケット（Ethernetフレーム）をカプセル化処理１０５に渡し、またカプセル化処理部１０５から渡されたデータを受信パケット（Ethernetフレーム）とみなしてプロトコルスタック１０７に渡す。
【００３９】
通信Ｉ/Ｆ１０９は、カプセル化処理部１０５から渡された送信パケット（Ethernetフレーム）に対し、チェックサム計算などの送信に必要な処理を行い、関連付け（実装）されているハードウェア経由でネットワーク１０２に送信する。また、１０９は、ネットワーク１０２から受信したパケット（Ethernetフレーム）を、カプセル化処理部１０５に渡す。
【００４０】
上記の仮想通信Ｉ/Ｆ１０８及び通信Ｉ/Ｆ１０９はＯＳから見たら等価に扱われるが、本実施の形態では、ＩＰアドレス等のシステム設定情報（通信情報）を、仮想通信Ｉ/Ｆ１０８のみに対して割り当て、通信Ｉ/Ｆ１０９には割り当てない。これにより、プロトコルスタック１０７からは唯一の通信インタフェースとして仮想通信Ｉ/Ｆ１０８だけが認識されるようになり、通信Ｉ/Ｆ１０９は、ネットワーク１０２とカプセル化処理部１０５との間でパケット（Ethernetフレーム）を転送する機能だけを提供するようになる。
【００４１】
プロトコル管理テーブル１１０、及び通信情報対応テーブル１１２は、通信装置１０１（カプセル化処理部１０５等）で参照される情報（管理情報）である。詳細は後述するが、プロトコル管理テーブル１１０（図４）の情報は、カプセル化処理部１０５（特に仮想通信Ｉ/Ｆ１０８から送信パケットを受け取ったときのカプセル化判定部２０３）が、当該パケットをカプセル化すべきか否か判定する際などに用いられる。通信情報対応テーブル１１２（図５）の情報は、カプセル化処理部１０５（特にカプセル化判定部２０３から送信パケットを受け取ったときのミドル送信部２０５）が、送信パケット（第１パケット）に含まれる送信先通信装置の第１通信ミドルウェア（Ｍ１）の通信情報から、それに対応付けられる送信先通信装置の第２通信ミドルウェア（Ｍ２）の通信情報を取得する際（即ち第２パケットの作成の際）などに用いられる。
【００４２】
［カプセル化処理部］
次に図２を用いてカプセル化処理部１０５の詳細構成について説明する。カプセル化処理部１０５は、ＲＡＷ受信部２０１、ミドル受信部２０２、カプセル化判定部２０３、ＲＡＷ送信部２０４、ミドル送信部２０５、及びヘッダ書き替え部２０６、を有する構成である。なお実線は送信時のデータフロー、破線は受信時のデータフローを示す。Ａ１等は説明上のデータ・情報や処理ステップを示す。
【００４３】
ＲＡＷ受信部２０１は、ネットワーク１０２経由で通信Ｉ/Ｆ１０９に到着した受信パケット（Ethernetフレーム）を通信Ｉ/Ｆ１０９からＲＡＷ受信で受け取り（Ａ１）、当該フレームをそのまま仮想Ｉ/Ｆ１０８に渡す（Ａ２）といった処理を行う。
【００４４】
ミドル受信部２０２は、ヘッダ書き替え部２０６から渡されたアプリケーションデータ（デカプセル化されたEthernetフレーム（第１パケット））（Ａ３）を、そのまま仮想通信Ｉ/Ｆ１０８に渡す（Ａ４）といった処理を行う。
【００４５】
カプセル化判定部２０３は、送信時、仮想通信Ｉ/Ｆ１０８から受け取ったパケット（送信パケット）（Ａ５）をチェック・判定し、カプセル化が必要な場合などには、ミドル送信部２０５に渡し（Ａ６）、カプセル化が不要な場合などには、ＲＡＷ送信部２０４に渡す（Ａ７）といった処理を行う。
【００４６】
ミドル送信部２０５は、カプセル化判定部２０３から受け取ったパケット（Ａ６）に、後述のヘッダ情報（図６等）を付与して、第２通信ミドルウェア実行部１０６に渡す（Ａ８）といった処理を行う（言い換えるとカプセル化のための指示情報を提供する）。
【００４７】
ＲＡＷ送信部２０４は、カプセル化判定部２０３から受け取ったパケット（Ａ７）を、通信Ｉ/Ｆ１０９に渡す（Ａ９）といった処理を行う。
【００４８】
ヘッダ書き替え部２０６は、受信時、第２通信ミドルウェア実行部１０６からパケット（受信パケット）を受け取り（Ａ１０）、後述するヘッダ書き換え処理を実施してから、ミドル受信部２０２に当該パケットを渡す（Ａ３）といった処理を行う。
【００４９】
［通信装置（ハードウェア）］
次に図３を用いて通信装置１０１（図１）のハードウェア構成について説明する。通信装置１０１は、各種処理を行うホストＣＰＵ３０１、ホストメモリ３０２、周辺Ｉ/Ｆ３０３、記憶装置３０４、通信Ｉ/Ｆ１０９、及びバス３０７等から構成される。３０１〜３０４、１０９等の要素はバス３０７を介して通信可能に接続されている。
【００５０】
ホストＣＰＵ３０１は、プログラムを実行するプロセッサである。ホストメモリ３０２は、ホストＣＰＵ３０１がプログラムを実行する際にワーキングメモリ及び入出力データの一時バッファとして用いられる。周辺Ｉ/Ｆ３０３は、マウス、キーボード、モニタ等の入出力装置や、ＵＳＢメモリ等の外部ストレージ、等の各種周辺機器などと接続するためのインタフェースである。記憶装置３０４は、磁気ディスク装置、フラッシュＲＯＭ等から構成され、ＯＳ、各種ドライバ、各種アプリケーションプログラムや、プログラムで使用される各種情報（例えば管理者または保守者によって設定される情報等）を格納している。
【００５１】
通信Ｉ/Ｆ１０９は、通信装置１０１がネットワーク１０２を介して他の通信装置１０１と通信を行う際のインタフェースを提供する。特に通信Ｉ/Ｆ１０９は、例えばネットワークインタフェースカードないしボード等の特定の独立した通信用ハードウェア（例えばEthernetコントローラチップ等）により実装できる。なお図３では通信Ｉ/Ｆ１０９は１つしか記載していないが２つ以上であっても構わない。
【００５２】
図１に示した機能要素（１０３〜１０８、１０９）の各々は、図３のハードウェア構成でのソフトウェアプログラム処理など（記憶装置３０４に格納されたプログラムがホストメモリ３０２に読み込まれてホストＣＰＵ３０１によって実行されること等）により構成できる。上記のように１０９は独立したハードウェアで実装されてもよい。また、図１のプロトコル管理テーブル１１０、及び通信情報対象テーブル１１２等のテーブル（管理情報）は、例えば記憶装置３０４に格納される。
【００５３】
［テーブル（１）］
図４を用いてプロトコル管理テーブル１１０に格納される情報について説明する。図４のプロトコル管理テーブル１１０では、パケットを送信する際に参照する、パケット種別４１０、ＩＰアドレス４０１、ポート番号４０２、プロトコル４０３、等の情報を格納している。本テーブル情報は、通信装置１０１の管理者または保守者等によって予め設定されてもよいし、各通信装置１０１と個別にプロトコル情報をやりとりするプログラム等によって設定されてもよいし、全通信装置１０１のプロトコル情報をまとめて管理しているサーバに問い合わせて設定してもよい。
【００５４】
パケット種別４１０の列は、パケットの種別を示す情報が格納され、例として、ＩＰパケットであることを示す“ＩＰ”、ＡＲＰ（Address Resolution Prtocol）パケットであることを示す“ＡＲＰ”等がある。ＩＰアドレス４０１の列は、パケットの送信先（宛先）の通信装置１０１を識別するＩＰアドレス情報が格納される。
【００５５】
ポート番号４０２の列は、パケットの送信先（宛先）のポート番号が格納される。ポート番号は、一般に、通信サービス（例えばＦＴＰ、ＨＴＴＰ等）の識別に用いられる。本実施の形態では、このポート番号は、パケットの宛先となる通信ミドルウェア（１０４，１０６）及び通信アプリケーション（１０３）等を特定するための１つの情報として用いられる（後述のサービスＩＤも関係する）。送信先が同じ通信装置１０１であっても、異なるポート番号（及びサービスＩＤ）を用いることによって、通信サービス（通信ミドルウェア及び通信アプリケーション）の種別を特定・変更することができる。
【００５６】
プロトコル４０３の列は、当該パケットに施す処理の種類（使用するプロトコル等）を示す情報が格納される。プロトコル名が指定されている場合（例：“プロトコルＡ”，“プロトコルＢ”等）は、当該プロトコルを用いたパケットのカプセル化が必要であることを意味（設定）し、そうではない場合、例えば“ＲＡＷ送信”が指定されている場合には、当該パケットをそのまま送信すること（カプセル化は不要）を意味（設定）している。なお図４では４０３には３種類（ＲＡＷ送信，プロトコルＡ，プロトコルＢ）を記載しているがこれに限らなくてよい。
【００５７】
図４の例において、４２１の行では、ＩＰパケットを用いて、ＩＰアドレスが“191.168.0.1”である送信先の通信装置（１０１）と、ポート番号“８０”で指定される通信ミドルウェア（例えばある新通信ミドルウェア）で通信を行う場合、（カプセル化済みにより）カプセル化を行わずにそのまま送信（ＲＡＷ送信）することを表している。他方、４２２の行では、ＩＰパケットを用いて、ＩＰアドレスが４２１と同じ“191.168.0.1”である通信装置と、ポート番号“２３”で指定される通信ミドルウェア（例えばある旧通信ミドルウェア）で通信を行う場合、“プロトコルＡ”を用いたパケットのカプセル化が必要であることを表している。４２３の行では、ＩＰパケットを用いて、ＩＰアドレスが４２１と異なる“191.168.0.2”である通信装置と、４２２と同じポート番号“２３”で指定される通信ミドルウェアで通信を行う場合、カプセル化を行わずにそのまま送信すること、を表している。また４２４の行では、ポート番号４０２の＊印は、任意のポート番号で構わないことを表している。また４２５の行では、ＡＲＰのパケット（フレーム）についてはそのアドレスに関わらずカプセル化を行わずそのまま送信することを表している。
【００５８】
上記図４のテーブル形式は一例であり、他の情報項目を管理して同様の機能を実現してもよい。例えば、通信ミドルウェアＩＤ，通信アプリケーションＩＤ，カプセル化要否フラグ情報などを関連付けて管理してもよい。
【００５９】
［テーブル（２）］
次に図５を用いて通信情報対応テーブル１１２に格納される情報について説明する。図５の通信情報対応テーブル１１２は、第１通信ミドルウェア（Ｍ１）の通信情報５０１と、それに対応付けられる第２通信ミドルウェア（Ｍ２）の通信情報５０２とを格納している。それぞれの列（５０１，５０２）は、詳しくは、ＩＰアドレス、ポート番号、サービスＩＤ、等の情報を含む。
【００６０】
図５において、例えば５２１の行では、送信パケットに含まれる第１通信ミドルウェアの通信情報としてＩＰアドレスが“Ｘ”、ポート番号が“Ｙ”、サービスＩＤが“Ｚ”である場合に、第２通信ミドルウェアを用いて送信するために必要な第２通信ミドルウェアの通信情報としてＩＰアドレスが“Ｘ”（同じ）、ポート番号が“ｙ”（異なる）、サービスＩＤが“ｚ”（異なる）であることを表している。
【００６１】
ここで、上記ＩＰアドレスについては、送信先の通信装置１０１の仮想通信Ｉ/Ｆ１０８に割り当てられているアドレスであるから、第１（旧）通信ミドルウェア（５０１）でも第２（新）通信ミドルウェア（５０２）でも同じ値となる。一方、上記ポート番号については、本実施の形態では、新／旧の区別を含め通信ミドルウェアを一意に特定するのに用いられる。そのため、上記５０１，５０２のポート番号は異なる値となる。
【００６２】
また上記サービスＩＤについては、本実施の形態では、送信先の通信ミドルウェアが送信パケットをどこに引き渡すかを示すＩＤとして用いる。特に、どのサービスを提供するどの通信アプリケーション（１０３）に引き渡すかを特定するために用いる。本実施の形態では、サービスＩＤは、例えば、ポート番号が第１通信ミドルウェア（Ｍ１）を示している場合には通信アプリケーション実行部１０３（特定のＡＰＰ）を指し示し、ポート番号が第２通信ミドルウェア（Ｍ２）を示している場合にはカプセル化処理部１０５を指し示す。なおサービスＩＤは、上記に限らず、例えば、Ｍ２が１０５を介さずにＡＰＰと通信する場合には、ポート番号がＭ２を示している場合にサービスＩＤが当該ＡＰＰを指し示すようにしてもよい。
【００６３】
上記テーブル（１１２）で管理する通信情報の例（ＩＰアドレス，ポート番号，サービスＩＤ）に限らず、第１通信ミドルウェア（Ｍ１）と第２通信ミドルウェア（Ｍ２）の対応関係が分かる情報であればよい。
【００６４】
図４，図５の例のようなテーブル情報を用いることにより、本システムでは、通信装置（１０１）、新／旧の区別を含む通信ミドルウェア（１０４，１０６）、及び通信アプリケーション（１０３）等を識別し、対応関係を把握し、これに基づいて必要に応じてパケットのカプセル化などを行う。
【００６５】
［処理シーケンス１（新→新）］
次に、図６，図７を用いて、新システムへの移行後における新装置から新装置へのデータ送信時のカプセル化通信の処理シーケンスについて説明する。図７の新装置である送信側の第１の通信装置Ａ（１０１ａ）から、同じく新装置である受信側の第２の通信装置Ｂ（１０１ｂ）へデータを送信する際のカプセル化通信を示す。通信装置Ａ，Ｂは共に新装置、即ち第１通信ミドルウェア実行部１０４及び第２通信ミドルウェア実行部１０６を有する構成（図１と同じ）である。なお通信装置ＡのＩＰアドレスを“Ａ”，ＭＡＣアドレスを“ａ”、通信装置ＢのＩＰアドレスを“Ｂ”，ＭＡＣアドレスを“ｂ”、ルータ１１３のＩＰアドレスを“Ｒ”，ＭＡＣアドレスを“ｒ”、で表すとする。Ｓ１等は通信（処理）のステップを示す。
【００６６】
図６は、図７の通信フローに対応した、新装置（Ａ）から新装置（Ｂ）へデータを送信する場合のパケット等の電文（その変化）を示す。６０１等の符号で示す行は、図７中の矢印に付けた符号と対応関係である。概略的な区分であるが、Ｐ１：第１パケット、Ｐ２：第２パケット、を示す。Ｈ１は、第１パケットＰ１のヘッダ、Ｄ１は第１パケットＰ１のデータ、Ｈ２は第２パケットＰ２のヘッダ、Ｄ２は第２パケットＰ２のデータ、を示す。第１パケットＰ１は、第２パケットＰ２でカプセル化されるデータ（Ｄ２）となる。Ｄ１の「データ」列は、第１パケットＰ１に格納する対象のデータ（アプリケーションデータ等）を示す。ｈ１〜ｈ８はレイヤ等に応じた各ヘッダを示す。「第１ＩＰ」（ｈ３）等ではＩＰアドレスを指定する。「第１ＴＣＰ」（ｈ２）等ではポート番号を指定する。「第１ＭＡＣ」（ｈ４）等ではＭＡＣアドレスを指定する。「任意」は、所定の形式に応じた任意指定の情報を示す。「一意」は、テーブル（１１０，１１２）等に基づいて一意に決定される情報を示す。例えば「第１ＴＣＰ」ヘッダ（ｈ２）の「一意」は、特定の通信ミドルウェアを示すポート番号などが格納される。“Ｂ”，“ｒ”等は、アドレス等の具体的な値の例を記号で簡略化して示す。
【００６７】
（Ｓ１）図７において、まず、通信装置Ａの通信アプリケーション実行部１０３ａ（ＡＰＰ）が、第１通信ミドルウェア実行部１０４ａ（Ｍ１）に対して、アプリケーションデータ（第１パケットに格納する対象となるデータ）（６０１）を渡す。この際、１０３ａは、当該データ（６０１）の送信先の（通信装置Ｂの）第１通信ミドルウェア実行部１０４ｂ（Ｍ１）を指定するための情報を、当該データ（６０１）と一緒に１０４ａに渡す。上記送信先（Ｍ１）を指定するための情報は、ここでは、通信装置ＢのＩＰアドレス“Ｂ”と、１０４ｂ（Ｍ１）を特定するポート番号（“Ｐｍ１”とする）とを含む、図５の通信情報対応テーブル１１２の第１通信ミドルウェアの通信情報５０１（その格納値）に相当する情報である。
【００６８】
（Ｓ２）次に、第１通信ミドルウェア実行部１０４ａ（Ｍ１）は、任意の第１ミドルヘッダ（ｈ１）の情報を上記アプリケーションデータ（６０１）に付与し、これをアプリケーションデータ（６０２）として、プロトコルスタック１０７ａに渡す。この際、１０４ａは、上記の通信装置ＢのＩＰアドレス“Ｂ”と１０４ｂ（Ｍ１）を示すポート番号“Ｐｍ１”とを含む情報を、プロトコルスタック１０７ａに対し指定する。
【００６９】
（Ｓ３）次に、プロトコルスタック１０７ａは、上記１０４ａから指定された通信装置ＢのＩＰアドレス“Ｂ”をＩＰヘッダ（第１ＩＰヘッダ：ｈ３）の情報とし、同ポート番号“Ｐｍ１”をＴＣＰヘッダ（第１ＴＣＰヘッダ：ｈ２）の情報として、上記アプリケーションデータ（６０２）に付与し、更に当該パケットの送信先ＭＡＣアドレス（第１ＭＡＣ：ｈ４）の情報も付与して、送信用のパケット（Ethernetフレーム）（第１パケット）（６０３）を生成する。ここでは（図７）、通信装置Ａと通信装置Ｂがルータ１１３を介して接続されている場合なので、１０７ａは、通信装置Ｂとの通信をルータ１１３経由で行うために、当該パケット（Ethernetフレーム）（６０３）の送信先ＭＡＣアドレス（第１ＭＡＣ：ｈ４）に、ルータ１１３のＭＡＣアドレス“ｒ”を設定する。そして最後に、１０７ａは、この送信用パケット（第１パケット）（６０３）を、仮想通信Ｉ/Ｆ１０８ａに渡す。
【００７０】
（Ｓ４）次に、仮想通信Ｉ/Ｆ１０８ａは、上記１０７ａから受け取った送信用パケット（６０３）を、そのままカプセル化処理部１０５ａに渡す。
【００７１】
（Ｓ５）次に、カプセル化処理部１０５ａは、上記１０８ａから受け取った送信パケット（６０３）のＩＰヘッダ（第１ＩＰヘッダ：ｈ３）及びＴＣＰヘッダ（第１ＴＣＰヘッダ：ｈ２）に含まれる宛先情報（通信装置ＢのＩＰアドレス“Ｂ”及び１０４ｂを示すポート番号“Ｐｍ１”）を用いて、プロトコル管理テーブル１１０（図４）を参照し、当該送信パケット（６０３）に対してカプセル化を行うか否か（要／不要）を判定する（カプセル化判定部２０３による処理）。前述のように特にテーブル（１１０）のプロトコル４０３等の値をもとに判定できる。本例（図７）のように、通信相手の通信装置１０１（Ｂ）が第２通信ミドルウェア実行部１０６（即ち新通信ミドルウェア（Ｍ２））を有する新装置であって、当該送信パケットの宛先のポート番号が旧通信ミドルウェア（Ｍ１）を指し示している場合、プロトコル管理テーブル１１０のプロトコル４０３欄には、当該送信パケットを（新通信ミドルウェア経由で通信させるように）カプセル化するためのプロトコル（例えば“プロトコルＡ”）が指定されている。従ってこの場合、カプセル化処理部１０５ａは、当該パケットにつきカプセル化を行う（要）と判定し、第２通信ミドルウェア実行部１０６ａに対し、当該送信パケット（６０３）（Ｐ１）をアプリケーションデータ（６０３）（Ｄ２）として渡す。この際、１０５ａは、送信先の通信装置Ｂの第２通信ミドルウェア実行部１０６ｂ（Ｍ２）を指定するための情報（ＩＰアドレス“Ｂ”，１０６ｂ（Ｍ２）を示すポート番号（“Ｐｍ２”とする）を含む、図５（１１２）の５０２相当情報）を、当該データ（６０３）と一緒に１０６ａに渡す。
【００７２】
（Ｓ６）次に、第２通信ミドルウェア実行部１０６ａは、任意の第２ミドルヘッダ（ｈ５）の情報を上記アプリケーションデータ（６０３）に付与し、これをアプリケーションデータ（６０４）として、プロトコルスタック１０７ａに渡す。この際、１０６ａは、上記のＩＰアドレス“Ｂ”と１０６ｂ（Ｍ２）を示すポート番号“Ｐｍ２”とを含む情報を１０７ａに対して指定する。
【００７３】
（Ｓ７）次に、プロトコルスタック１０７ａは、上記の１０６ｂから指定されたＩＰアドレス“Ｂ”をＩＰヘッダ（第２ＩＰヘッダ：ｈ７）の情報とし、同ポート番号“Ｐｍ２”をＴＣＰヘッダ（第２ＴＣＰヘッダ：ｈ６）の情報として、上記アプリケーションデータ（６０４）に付与し、更に当該パケットの送信先ＭＡＣアドレス（第２ＭＡＣ：ｈ８）の情報も付与して、送信用パケット（６０５）を生成し、当該生成したパケット（第２パケット）（６０５）を仮想通信Ｉ/Ｆ１０８ａに渡す。尚ここで１０７ａがアプリケーションデータ（６０４）に第２ＩＰヘッダ（ｈ７）として付与したＩＰアドレスは、送信先の通信装置Ｂの仮想通信Ｉ/Ｆ１０８ｂに割り当てられているＩＰアドレス“Ｂ”であり、先（Ｓ３）に１０７ａがアプリケーションデータ（６０２）に第１ＩＰヘッダ（ｈ３）として付与したＩＰアドレスと同じである。また、１０７ａがここでアプリケーションデータ（６０４）に第２ＭＡＣ（ｈ８）として付与したアドレスは、ルータ１１３のＭＡＣアドレス“ｒ”であり、先（Ｓ３）に１０７ａがアプリケーションデータ（６０２）に第１ＭＡＣ（ｈ４）として付与したアドレス“ｒ”と同じである。
【００７４】
（Ｓ８）次に、仮想通信Ｉ/Ｆ１０８ａは、上記の送信用パケット（６０５）をそのままカプセル化処理部１０５ａに渡す。
【００７５】
（Ｓ９）次に、カプセル化処理部１０５ａは、上記１０５ａから受け取った送信用パケット（６０５）のＩＰヘッダ（第２ＩＰヘッダ：ｈ７）及びＴＣＰヘッダ（第２ＴＣＰヘッダ：ｈ６）に含まれる宛先情報（ＩＰアドレス“Ｂ”及び１０６ｂ（Ｍ２）を示すポート番号“Ｐｍ２”）を用いて、プロトコル管理テーブル１１０（図４）を参照し、当該送信パケット（６０５）に対してカプセル化を行うか否か（要／不要）を判定する（カプセル化判定部２０３による処理）。
【００７６】
ここでは、通信相手の通信装置１０１（Ｂ）が第２通信ミドルウェア実行部１０６（Ｍ２）を有する新装置であって、ＴＣＰヘッダに格納された宛先ポート番号“Ｐｍ２”が第２通信ミドルウェア（Ｍ２）を指し示しており、プロトコル管理テーブル１１０のプロトコル４０３欄には当該送信パケットを（カプセル化済みにより）カプセル化せずにそのまま送信（ＲＡＷ送信）するように指定されている。従って、カプセル化処理部１０５ａ（２０３）は、カプセル化不要と判定し、当該送信用パケット（６０５）をそのまま通信Ｉ/Ｆ１０９ａに渡す。
【００７７】
（Ｓ１０）次に、通信Ｉ/Ｆ１０９ａは、上記の送信用パケット（６０５）をネットワーク１０２に送出する。
【００７８】
（Ｓ１１）ルータ１１３は、上記ネットワーク１０２から送出されたパケット（６０５）の第２ＭＡＣヘッダ（ｈ８）の情報を参照する。ここで当該第２ＭＡＣ（ｈ８）では当該ルータ１１３のＭＡＣアドレス“ｒ”が格納されているため、ルータ１１３は、自分宛ての当該パケット（６０５）を受信する。更に、ルータ１１３は、当該パケット（６０５）の第２ＩＰ（ｈ７）のアドレス情報を参照する。ここで当該第２ＩＰ（ｈ７）では通信装置ＢのＩＰアドレス“Ｂ”が格納されているため、ルータ１１３は、当該パケット（６０５）の第２ＭＡＣ（ｈ８）の情報を、“ｒ”から通信装置ＢのＭＡＣアドレス“ｂ”に書き換えたパケット（６０６）を作成し、当該パケット（６０６）を通信装置Ｂへ転送する（ネットワーク１０２に送出する）。
【００７９】
（Ｓ１２）通信装置Ｂ（１０１ｂ）の通信Ｉ/Ｆ１０９ｂは、上記ネットワーク１０２のルータ１１３からパケット（６０６）を受信すると、受信パケット（６０６）をそのままカプセル化処理部１０５ｂに渡す。
【００８０】
（Ｓ１３）次に、カプセル化処理部１０５ｂは、上記の受信パケット（６０６）をそのまま仮想通信Ｉ/Ｆ１０８ｂに渡す。
【００８１】
（Ｓ１４）次に、仮想通信Ｉ/Ｆ１０８ｂは、上記の受信パケット（６０６）をプロトコルスタック１０７ｂに渡す。
【００８２】
（Ｓ１５）次に、プロトコルスタック１０７ｂは、上記の受信パケット（６０６）に対してプロトコル処理を行い、受信パケット（６０６）のアプリケーションデータ部分（６０７）を取り出す。そして、受信パケット（６０６）のＴＣＰヘッダ（第２ＴＣＰヘッダ：ｈ６）による指定（ポート番号）に従って、当該アプリケーションデータ部分（６０７）を第２通信ミドルウェア実行部１０６ｂ（Ｍ２）に渡す。
【００８３】
（Ｓ１６）次に、第２通信ミドルウェア実行部１０６ｂ（Ｍ２）は、上記１０７ｂから受け取ったアプリケーションデータ（６０７）から第２ヘッダ（第２ミドルヘッダ：ｈ５）を外して（カプセル化解除）、残りの部分（第１パケット）（６０８）をカプセル化処理部１０５ｂに渡す。
【００８４】
（Ｓ１７）次に、カプセル化処理部１０５ｂは、上記１０６ｂ（Ｍ２）から受け取ったパケット（６０８）を仮想通信Ｉ/Ｆ１０８ｂに渡す際に、ヘッダ書き換え部２０６による処理として、第１ＭＡＣ（ｈ４）の宛先を、（ルータ１１３のＭＡＣアドレス“ｒ”から）自身（通信装置Ｂ）のＭＡＣアドレス“ｂ”に無条件で書き替えたパケット（６０８’）を作成し、仮想通信Ｉ/Ｆ１０８ｂへ転送する。これは、ルータ１１３を介して接続された通信装置Ａと通信装置Ｂとがカプセル化通信を行う場合において、第１ＭＡＣ（ｈ４）の書き替えを行わずにパケットをそのまま仮想通信Ｉ/Ｆ１０８へ転送した場合、パケットの第１ＭＡＣ（ｈ４）の宛先がルータ１１３のＭＡＣアドレス“ｒ”が格納されたままとなり、仮想通信Ｉ/Ｆ１０８が当該パケットはルータ１１３宛てであって自装置（Ｂ）宛てでは無いと判断して当該パケットを破棄してしまうこと、を防止するためである。
【００８５】
（Ｓ１８）次に、仮想通信Ｉ/Ｆ１０８ｂは、上記１０５ｂから受け取ったパケット（６０８’）を、プロトコルスタック１０７ｂに渡す。
【００８６】
（Ｓ１９）次に、プロトコルスタック１０７ｂは、上記１０８ｂから受け取ったパケット（６０８’）に対しプロトコル処理を行い、当該パケット（６０８’）のアプリケーションデータ部分（６０９）を取り出して、これを当該パケット（６０８’）のＴＣＰヘッダ（第１ＴＣＰヘッダ：ｈ２）の情報（ポート番号）に従って第１通信ミドルウェア実行部１０４ｂ（Ｍ１）に渡す。
【００８７】
（Ｓ２０）次に、第１通信ミドルウェア実行部１０４ｂ（Ｍ１）は、上記１０７ｂから受け取ったアプリケーションデータ（６０９）から第１ミドルヘッダ（ｈ１）を外して、そのアプリケーションデータ（６１０）を通信アプリケーション実行部１０３ｂ（ＡＰＰ）に渡す（なお前述のように必要に応じてサービスＩＤも参照してＡＰＰを識別する）。以上のようにして、新装置から新装置へ、Ｍ２経由のカプセル化通信（第２パケット）を用いて、送信元のＡＰＰ（１０３ａ）から送信先のＡＰＰ（１０３ｂ）へデータが送信される。
【００８８】
［処理シーケンス２（新→旧）］
次に、図８，図９を用いて、新システム移行後の新装置から旧装置へのデータ送信時の非カプセル化通信の処理シーケンスについて説明する。図９の新装置である送信側の第１の通信装置Ｃ（１０１ｃ）から、旧装置である受信側の第２の通信装置Ｄ（１０１ｄ）へデータを送信する際の非カプセル化通信（カプセル化を行わない通信）を示す。通信装置Ｃは、第１通信ミドルウェア実行部１０４（１０４ｃ）及び第２通信ミドルウェア実行部１０６（１０６ｃ）を有する。通信装置Ｄは、第１通信ミドルウェア実行部１０４（１０４ｄ）を有するが第２通信ミドルウェア実行部１０６を有さない。なお通信装置ＣのＩＰアドレスを“Ｃ”，ＭＡＣアドレスを“ｃ”、通信装置ＤのＩＰアドレスを“Ｄ”，ＭＡＣアドレスを“ｄ”とする。図８は、図９に対応した、新装置（Ｃ）から旧装置（Ｄ）へデータを送信する場合の電文を示し、見方は図６と同様である。
【００８９】
（Ｓ１）図９で、まず、通信装置Ｃ（１０１ｃ）の通信アプリケーション実行部１０３ｃ（ＡＰＰ）が、第１通信ミドルウェア実行部１０４ｃ（Ｍ１）にアプリケーションデータ（８０１）を渡す。この際、１０３ｃは、送信先の（通信装置Ｄの）第１通信ミドルウェア実行部１０４ｄ（Ｍ１）を指定するための情報（ＩＰアドレス“Ｄ”、１０４ｄ（Ｍ１）を示すポート番号“Ｐｍ１”を含む５０１相当情報）を当該データ（８０１）と一緒に１０４ｃに渡す。
【００９０】
（Ｓ２）次に、第１通信ミドルウェア実行部１０４ｃ（Ｍ１）は、任意の第１ミドルヘッダ（ｈ１）の情報をアプリケーションデータ（８０１）に付与し、これをアプリケーションデータ（８０２）として、プロトコルスタック１０７ｃに渡す。この際、１０４ｃ（Ｍ１）は、上記のＩＰアドレス“Ｄ”及びポート番号“Ｐｍ１”を含む情報を１０７ｃに対し指定する。
【００９１】
（Ｓ３）次に、プロトコルスタック１０７ｃは、上記１０４ｃ（Ｍ１）から指定されたＩＰアドレス“Ｄ”をＩＰヘッダ（第１ＩＰヘッダ：ｈ３）の情報とし、同ポート番号“Ｐｍ１”をＴＣＰヘッダ（第１ＴＣＰヘッダ：ｈ２）の情報として、アプリケーションデータ（８０２）に付与し、更に当該パケットの送信先ＭＡＣアドレス（第１ＭＡＣ：ｈ４）の情報も付与して、送信用のパケット（Ethernetフレーム）（第１パケット）（８０３）を生成する。ここでは、通信装置Ｃと通信装置Ｄがルータ１１３を介して接続しているので、１０７ｃは、通信装置Ｄとの通信をルータ１１３経由で行うために、当該パケット（Ethernetフレーム）（８０３）の送信先ＭＡＣアドレス（第１ＭＡＣ：ｈ４）に、ルータ１１３のＭＡＣアドレス“ｒ”を設定する。そして最後に、１０７ｃは、当該パケット（８０３）を仮想通信Ｉ/Ｆ１０８ｃに渡す。
【００９２】
（Ｓ４）次に、仮想通信Ｉ/Ｆ１０８ｃは、上記送信用パケット（８０３）をそのままカプセル化処理部１０５ｃに渡す。
【００９３】
（Ｓ５）次に、カプセル化処理部１０５ｃは、上記送信用パケット（８０３）のＩＰヘッダ（第１ＩＰヘッダ：ｈ３）及びＴＣＰヘッダ（第１ＴＣＰヘッダ：ｈ２）に含まれる宛先情報（ＩＰアドレス“Ｄ”及びポート番号“Ｐｍ１”）を用いて、プロトコル管理テーブル１１０（図４）を参照し、当該パケット（８０３）に対してカプセル化を行うかどうか判定する。通信相手の通信装置１０１（Ｄ）が第２通信ミドルウェア実行部１０６（Ｍ２）を有していない旧装置である場合、プロトコル管理テーブル１１０のプロトコル４０３欄には、当該パケットをカプセル化せずそのまま送信（ＲＡＷ送信）するよう指定されている。従ってここでは、１０５ｃは、カプセル化を行わないと判定し、当該パケット（８０３）をそのまま通信Ｉ/Ｆ１０９ｃに渡す。
【００９４】
（Ｓ６）次に、通信Ｉ/Ｆ１０９ｃは、上記送信用パケット（８０３）をネットワーク１０２へ送出する。
【００９５】
（Ｓ７）ルータ１１３は、上記ネットワーク１０２に送出されたパケット（８０３）の第１ＭＡＣ（ｈ４）の情報を参照する。当該第１ＭＡＣ（ｈ４）には、当該ルータ１１３のＭＡＣアドレス“ｒ”が格納されているので、ルータ１１３は自分宛てである当該パケット（８０３）を受信する。更に、ルータ１１３は、当該パケット８０３の第１ＩＰ（ｈ３）のアドレスを参照する。ここで、当該第１ＩＰ（ｈ３）のアドレスは、通信装置ＤのＩＰアドレス“Ｄ”が格納されているので、ルータ１１３は、当該パケット（８０３）の第１ＭＡＣ（ｈ４）の情報を通信装置ＤのＭＡＣアドレス“ｄ”に書き換えたパケット（８０４）を作成し、通信装置Ｄへ転送する。
【００９６】
（Ｓ８）通信装置Ｄ（１０１ｄ）の通信Ｉ/Ｆ１０９ｄは、上記ネットワーク１０２のルータ１１３からパケット（８０４）を受信すると、受信パケット（８０４）をプロトコルスタック１０７ｄに渡す。
【００９７】
（Ｓ９）次に、プロトコルスタック１０７ｄは、上記１０９ｄから受け取ったパケット（８０４）に対しプロトコル処理を行い、当該パケット（８０４）のアプリケーションデータ部分（８０５）を取り出して、当該アプリケーションデータ（８０５）を、当該パケット（８０４）のＴＣＰヘッダ（第１ＴＣＰヘッダ：ｈ２）の指定（ポート番号）に従って、第１通信ミドルウェア実行部１０４ｄ（Ｍ１）に渡す。
【００９８】
（Ｓ１０）次に、第１通信ミドルウェア実行部１０４ｄ（Ｍ１）は、上記１０７ｄから受け取ったアプリケーションデータ（８０５）から第１ヘッダ（第１ミドルヘッダ：ｈ１）を外して、残りの部分（アプリケーションデータ）（８０６）を通信アプリケーション実行部１０３ｄ（ＡＰＰ）に渡す（前述のように必要に応じてサービスＩＤも参照）。以上のようにして、新装置から旧装置へ、第１パケットを用いて、送信元のＡＰＰ（１０３ｃ）から送信先のＡＰＰ（１０３ｄ）へデータが送信される。
【００９９】
［処理シーケンス３（旧→新）］
次に、図１０，図１１を用いて、旧装置から新装置へのデータ送信時の非カプセル化通信の処理シーケンスについて説明する。図１１の旧装置である送信側の第１の通信装置Ｅ（１０１ｅ）から、新装置である受信側の第２の通信装置Ｆ（１０１ｆ）へデータを送信する際の非カプセル化通信を示す。通信装置Ｅは、第１通信ミドルウェア実行部１０４（１０４ｅ）を有するが第２通信ミドルウェア実行部１０６を有さない。通信装置Ｆは、第１通信ミドルウェア実行部１０４（１０４ｆ）及び第２通信ミドルウェア実行部１０６（１０６ｆ）を有する。なお通信装置ＥのＩＰアドレスを“Ｅ”，ＭＡＣアドレスを“ｅ”、通信装置ＦのＩＰアドレスを“Ｆ”，ＭＡＣアドレスを“ｆ”とする。図１０は、図１１に対応した、旧装置（Ｅ）から新装置（Ｆ）へデータを送信する場合の電文を示す。
【０１００】
（Ｓ１）図１１で、まず、通信装置Ｅ（１０１ｅ）の通信アプリケーション実行部１０３ｅ（ＡＰＰ）が、第１通信ミドルウェア実行部１０４ｅ（Ｍ１）にアプリケーションデータ（１００１）を渡す。この際、１０３ｅは、送信先の（通信装置Ｆの）第１通信ミドルウェア実行部１０４ｆ（Ｍ１）を指定するための情報（ＩＰアドレス“Ｆ”、１０４ｆ（Ｍ１）を示すポート番号（“Ｐｍ１”）を含む５０１相当情報）を、当該データ（１００１）と一緒に１０４ｅに渡す。
【０１０１】
（Ｓ２）次に、第１通信ミドルウェア実行部１０４ｅ（Ｍ１）は、任意の第１ミドルヘッダ（ｈ１）の情報をアプリケーションデータ（1001）に付与し、これをアプリケーションデータ（1002）として、プロトコルスタック１０７ｅに渡す。この際、１０４ｅ（Ｍ１）は、上記のＩＰアドレス“Ｆ”及びポート番号“Ｐｍ１”を含む情報を１０７ｅに対し指定する。
【０１０２】
（Ｓ３）次に、プロトコルスタック１０７ｅは、上記１０４ｅ（Ｍ１）から指定されたＩＰアドレス“Ｆ”をＩＰヘッダ（第１ＩＰヘッダ：ｈ３）の情報とし、同ポート番号“Ｐｍ１”をＴＣＰヘッダ（第１ＴＣＰヘッダ：ｈ２）の情報として、アプリケーションデータ（1002）に付与し、更に当該パケットの送信先ＭＡＣアドレス（第１ＭＡＣ：ｈ４）の情報も付与して、送信用のパケット（Ethernetフレーム）（第１パケット）（1003）を生成する。ここでは、通信装置Ｅと通信装置Ｆがルータ１１３を介して接続しているので、１０７ｅは、通信装置Ｆとの通信をルータ１１３経由で行うために、当該パケット（Ethernetフレーム）（1003）の送信先ＭＡＣアドレス（第１ＭＡＣ：ｈ４）に、ルータ１１３のＭＡＣアドレス“ｒ”を設定する。そして最後に、１０７ｅは、当該パケット（1003）を仮想通信Ｉ/Ｆ１０８ｅに渡す。
【０１０３】
（Ｓ４）次に、仮想通信Ｉ/Ｆ１０９ｅは、上記送信用パケット（1003）をネットワーク１０２へ送出する。
【０１０４】
（Ｓ５）ルータ１１３は、上記ネットワーク１０２に送出されたパケット（1003）の第１ＭＡＣ（ｈ４）の情報を参照する。ここで当該第１ＭＡＣ（ｈ４）は、当該ルータ１１３のＭＡＣアドレス“ｒ”が格納されているため、ルータ１１３は、当該パケット（1003）を受信する。更に、ルータ１１３は、当該パケット（1003）の第１ＩＰ（ｈ３）のアドレスを参照する。ここで当該第１ＩＰ（ｈ３）のアドレスは通信装置ＦのＩＰアドレス“Ｆ”が格納されているため、ルータ１１３は、当該パケット（1003）の第１ＭＡＣ（ｈ４）を通信装置ＦのＭＡＣアドレス“ｆ”に書き換えたパケット（1004）を作成し、当該パケット（1004）を通信装置Ｆへ転送する。
【０１０５】
（Ｓ６）通信装置Ｆ（１０１ｆ）の通信Ｉ/Ｆ１０９ｆは、上記ネットワーク１０２のルータ１１３からパケット（1004）を受信すると、そのままカプセル化処理部１０５ｆに渡す。
【０１０６】
（Ｓ７）次に、カプセル化処理部１０５ｆは、上記１０９ｆから受け取ったパケット（1004）をそのまま仮想通信Ｉ／Ｆ１０８ｆに渡す。
【０１０７】
（Ｓ８）次に、仮想通信Ｉ/Ｆ１０８ｆは、上記１０５ｆから受け取ったパケット（1004）をプロトコルスタック１０７ｆに渡す。
【０１０８】
（Ｓ９）次に、プロトコルスタック１０７ｆは、上記１０８ｆから受け取ったパケット（1004）に対してプロトコル処理を行い、アプリケーションデータ部分（1005）を取り出し、当該アプリケーションデータ（1005）を、当該パケット（1004）の第１ＴＣＰヘッダ（ｈ２）の指定（ポート番号）に従って、第１通信ミドルウェア実行部１０４ｆ（Ｍ１）に渡す。
【０１０９】
（Ｓ１０）次に、第１通信ミドルウェア実行部１０４ｆ（Ｍ１）は、アプリケーションデータ（1005）から第１ヘッダ（第１ミドルヘッダ：ｈ１）を外して、残りの部分（アプリケーションデータ）（1006）を通信アプリケーション実行部１０３ｆ（ＡＰＰ）に渡す（前述のように必要に応じてサービスＩＤも参照）。以上のようにして、旧装置から新装置へ、第１パケットを用いて、送信元のＡＰＰ（１０３ｅ）から送信先のＡＰＰ（１０３ｆ）へデータが送信される。
【０１１０】
［効果等］
上述のように、本実施の形態の通信装置１０１では、仮想通信Ｉ/Ｆ１０８のみにＩＰアドレス等が割り当てられ、すべての通信が仮想通信Ｉ/Ｆ１０８及びカプセル化処理部１０５を経由するように設定・構成される。本通信装置１０１は、データ送信時、カプセル化処理部１０５（カプセル化判定部２０３等）の処理に基づき、旧通信ミドルウェア（Ｍ１）の第１パケット（Ｐ１）を新通信ミドルウェア（Ｍ２）経由の第２パケット（Ｐ２）にカプセル化して送信する。また本通信装置１０１は、データ受信時、カプセル化処理部１０５（ヘッダ書き換え部２０６等）の処理に基づき、受信した新通信ミドルウェア（Ｍ２）経由の第２パケット（Ｐ２）を（カプセル化解除して）旧通信ミドルウェア（Ｍ１）の第１パケット（Ｐ１）に戻す。その際、ヘッダ書き換え部２０６により自動的にヘッダ情報（宛先情報）を書き換えて自分宛ての情報として受領する（第１パケット部分のヘッダ情報（特にＭＡＣアドレス情報）を、第２パケット部分の宛先情報で書き換える（図７の１０５ｂ，Ｓ１６（６０８），Ｓ１７（６０８’）等）。
【０１１１】
実施の形態１では、前記図９，図１１に示す各パケット送受信処理（旧装置を含む場合の通信処理）においては、受信側及び送信側の通信装置１０１が新装置であるか否かに関わらず、パケットのＩＰヘッダ（第１ＩＰヘッダ：ｈ３）には、仮想通信Ｉ/Ｆ１０８に割り当てられたＩＰアドレスが用いられている。即ち、新システムへの移行に伴ってＩＰアドレスを変更する必要無く従前のＩＰアドレスを使い続けてパケットの送受信が可能であることが分かる。
【０１１２】
実施の形態１によれば、通信装置１０１を含むシステムで、ＩＰアドレス等（システム設定情報）の変更や専用のハードウェア（カプセル化装置等）の追加無しに、旧システムの旧通信ミドルウェア（Ｍ１）を介してデータを送受信する通信アプリケーション（ＡＰＰ）がそのまま（流用して）新システムの新通信ミドルウェア（Ｍ２）を介してでもデータの送受信が可能になる。即ちシステム移行の容易化及びコスト低減などの効果がある。
【０１１３】
＜実施の形態２＞
図１２〜図１６等を用いて、本発明の実施の形態２について説明する。実施の形態２では、実施の形態１と同様に、システム移行に伴い、システム内の複数の通信装置１０１に、旧通信ミドルウェア（Ｍ１）に加え新通信ミドルウェア（Ｍ２）が実装された場合において、実施の形態１と同様の目的・効果等を達成するための異なる手段を有する構成である。実施の形態２の通信装置１０１の基本的な構成などは前述の実施の形態１（図１）と同様であり、カプセル化処理部１０５の処理が異なる。実施の形態１では受信側で第１パケット部分の宛先情報を変更（書き換え）する手段を有する構成であるに対し、実施の形態２では、新通信ミドルウェア（Ｍ２）が実装された新装置は、送信側で、パケットを送信する前にルータ（１１３）を経由する通信かどうかに応じて第１パケット部分の宛先情報を変更する手段（図１２、２０７〜２０９等）を有する構成である。特に、ＡＲＰを用いて、送信元の通信装置では、宛先（受信側）の通信装置のＭＡＣアドレス情報を取得するために、宛先の通信装置のＩＰアドレスを第２パケットとしてカプセル化したＡＲＰリクエスト（ＡＲＰ要求）を作成して送信する（図１３の１３２３等）。それに対して、宛先（受信側）の通信装置では、送信元の通信装置のＩＰアドレスを第２パケットとしてカプセル化したＡＲＰリプライ（ＡＲＰ応答）を返信する（図１５の１３３３等）。これにより送信元の通信装置は、宛先の通信装置のＭＡＣアドレス情報を取得でき、一時的に保持していた送信パケットを当該ＭＡＣアドレス情報を用いて宛先の通信装置へ送信し、宛先の通信装置が当該パケットを受領できる。
【０１１４】
［カプセル化処理部］
図１２を用いて実施の形態２の通信装置１０１のカプセル化処理部１０５の詳細構成について説明する。実施の形態２でのカプセル化処理部１０５は、ＲＡＷ受信部２０１、ミドル受信部２０２、カプセル化判定部２０３、ＲＡＷ送信部２０４、ミドル送信部２０５、ルータ跨ぎ判定部２０７、パケット保持部２０８、及び宛先変更部２０９を有する構成である（図２のヘッダ書き換え部２０６は有さない）。
【０１１５】
ＲＡＷ受信部２０１は、受信時、ネットワーク１０２経由で通信Ｉ/Ｆ１０９に到着した受信パケット（Ethernetフレーム）を通信Ｉ/Ｆ１０９からＲＡＷ受信で受け取り（Ａ１）、当該フレームをそのまま仮想Ｉ/Ｆ１０８に渡す（Ａ２）といった処理を行う。
【０１１６】
カプセル化判定部２０３は、送信時、プロトコル管理テーブル１１０（図４）を参照し、仮想通信Ｉ/Ｆ１０８から受信したパケット（Ａ５）をチェック（確認）しカプセル化の要否などを判定する。２０３は、当該受信パケット（Ａ５）が第２通信ミドルウェア（Ｍ２）により既にカプセル化されている場合（カプセル化済み）を含め、カプセル化不要と判定した場合（ａ３）には、当該パケットをＲＡＷ送信部２０４に渡し、当該受信パケットが、未だ第２通信ミドルウェア（Ｍ２）によりカプセル化されていない場合（カプセル化未済み）を含め、カプセル化要と判定した場合（ａ４）には、ルータ跨ぎ判定部２０７に渡す。
【０１１７】
ただし、カプセル化判定部２０３は、上記１０８から受信したパケット（Ａ５）がＡＲＰ要求やＡＲＰ応答（以降、ＡＲＰ要求、ＡＲＰ応答、またはその両方について、特に指定しない場合、ＡＲＰフレームと呼ぶ）の場合は、プロトコル管理テーブル１１０（図４）を参照せずに、当該ＡＲＰフレームの内部の宛先ＩＰアドレスと、仮想通信Ｉ/Ｆ１０８に設定されたＩＰアドレスとの比較により、カプセル化の要否を判定する。２０３は、上記ＡＲＰフレーム内部の宛先ＩＰアドレスと１０８の設定ＩＰアドレスとで、それぞれのネットワークアドレス（なお全体のうちの部分情報である）が同一である場合、当該ＡＲＰフレームは、自通信装置が接続しているネットワーク（１０２）に接続している他通信装置宛てのＡＲＰフレームであるため、カプセル化不要と判定する。また２０３は、上記ＡＲＰフレーム内部の宛先ＩＰと１０８の設定ＩＰアドレスとで、それぞれのネットワークアドレスが異なる場合、ルータ１１３を跨いだ他通信装置（ルータ１１３を経由した異なるサブネットに接続される他通信装置）宛てのＡＲＰフレームであるため、カプセル化要と判定する。２０３は、上記カプセル化不要と判定した場合（ａ３）、当該ＡＲＰフレームをＲＡＷ送信部２０４に渡し、上記カプセル化要と判定した場合（ａ４）、当該ＡＲＰフレームをルータ跨ぎ判定部２０７に渡す。
【０１１８】
ＲＡＷ送信部２０４は、カプセル化判定部２０３やパケット保持部２０８から受け取ったパケット（ａ３，ａ５）をそのまま通信Ｉ/Ｆ１０９に渡す（Ａ９）。
【０１１９】
ルータ跨ぎ判定部２０７は、カプセル化判定部２０３から受け取ったパケット（ａ４）について、上述のルータ１１３を跨ぐ通信をするか否かをチェック・判定する。２０７は、２０３から受け取ったパケット（ａ４）の第１ＩＰ（前記ｈ３）に格納された宛先ＩＰアドレスのネットワークアドレス部分と、仮想通信Ｉ/Ｆ１０８に設定されたＩＰアドレスのネットワークアドレス部分とを比較し、同じ値でない場合、当該パケット（ａ４）はルータ１１３を跨ぐ通信をする（ルータ跨ぎ有り）（ａ６）と判定する。同様に、２０７は、上記部分が同じ値である場合、当該パケット（ａ４）はルータ１１３を跨ぐ通信ではない（ルータ跨ぎ無し）（ａ７）と判定する。２０７は、ルータ跨ぎ有り（ａ６）の場合、当該パケットをパケット保持部２０８に渡し、ルータ跨ぎ無し（ａ７）の場合、当該パケットをミドル送信部２０５に渡す。ただし、２０７は、２０３から受け取ったパケット（ａ４）がＡＲＰフレームである場合、当該ＡＲＰフレームは２０３にて既にルータ１１３を跨いで通信をすると判定されているため、無条件でミドル送信部２０５に渡す。
【０１２０】
パケット保持部２０８は、上記ルータ跨ぎ判定部２０７からパケットを受け取った場合（ａ６）、通信相手の通信装置１０１のＭＡＣアドレス情報を取得するために、それに対応するＡＲＰ要求（ａ８）をミドル送信部２０５に渡す。その後、２０８は、（通信相手からの）ＡＲＰ応答（ａ２）を受信するまで、もしくはＡＲＰ応答タイムアウトになるまで、上記２０７から受け取ったパケット（ａ６）を保持する。また、２０８は、ミドル受信部２０２から（通信相手からの）ＡＲＰ応答（ａ２）を受け取った場合、当該ＡＲＰ応答の送信元（つまり通信相手の）ＭＡＣアドレスの情報と、上記保持していたパケットとを、宛先変更部２０９に渡す（ａ９）。また、２０８は、上記ＡＲＰ要求に対するＡＲＰ応答がタイムアウトとなった場合は、上記保持していたパケットだけをＲＡＷ送信部２０４へ渡す（ａ５）。
【０１２１】
宛先変更部２０９は、上記２０８から受け取ったパケット（ａ９）の第１ＭＡＣ（前記ｈ４）の情報を、上記２０８から同様に受け取ったＡＲＰ応答の送信元ＭＡＣアドレス情報によって書き換える（即ち宛先を変更する）。次に、２０９は、上記第１ＭＡＣ（ｈ４）を書き換えたパケット（ａ１０）を、ミドル送信部２０５に渡す。
【０１２２】
ミドル受信部２０２は、受信時、第２通信ミドルウェア実行部１０６から渡された電文（Ａ１０）がＡＲＰ応答である場合、当該ＡＲＰ応答をパケット保持部２０２に渡し（ａ２）、１０６から渡された電文（Ａ１０）がＡＲＰ応答以外である場合、つまりＡＲＰ要求やアプリケーションデータ等である場合、その電文をそのまま仮想通信Ｉ/Ｆ１０８に渡す（ａ１）といった処理を行う。
【０１２３】
ミドル送信部２０５は、送信時、ルータ跨ぎ判定部２０７から受け取ったＡＲＰ応答を含むパケット（ａ７）と、宛先変更部２０９から受け取ったパケット（ａ１０）と、パケット保持部２０８から受け取ったＡＲＰ要求（ａ８）とのそれぞれについて、第２通信ミドルウェア実行部１０６に渡す。その際、２０５は、実施の形態１と同様に、送信先の第２通信ミドルウェア実行部１０６（Ｍ２）を指定するための情報（ＩＰアドレス及び１０６（Ｍ２）を示すポート番号を含む図５（１１２）の５０２相当情報）を付け加えて、１０６に渡す。
【０１２４】
ただし、上記でＡＲＰフレームを１０６に渡す場合（ａ７）、２０５は、送信先の第２通信ミドルウェア実行部１０６（Ｍ２）を指定するための情報として、当該ＡＲＰフレーム内部に格納されている宛先ＩＰアドレス情報を１０６に渡す。これにより、宛先の通信装置のＩＰアドレスを第２パケットとしてカプセル化したＡＲＰフレームを作成することができる。
【０１２５】
［処理シーケンス（新→新）］
次に、図１３〜図１６を用いて、実施の形態２において、新システム移行後の新装置（通信装置Ａ）から新装置（通信装置Ｂ）へデータを送信する際のカプセル化通信の処理シーケンスを説明する。図１４，図１６の通信装置Ａ（１０１ａ）及び通信装置Ｂ（１０１ｂ）は共に第１通信ミドルウェア実行部１０４（Ｍ１）及び第２通信ミドルウェア実行部１０６（Ｍ２）を有する（図７と同様）。
【０１２６】
（Ｓ１）図１４で、まず、通信装置Ａの通信アプリケーション実行部１０３ａ（ＡＰＰ）が、第１通信ミドルウェア実行部１０４ａ（Ｍ１）にアプリケーションデータ（1301）を渡す。この際、１０３ａは、送信先の（通信装置Ｂの）第１通信ミドルウェア実行部１０４ｂ（Ｍ１）を指定するための情報（ＩＰアドレス“Ｂ”及び１０４ｂ（Ｍ１）を示すポート番号（“Ｐｍ１”）を含む情報）を当該データ（1301）と一緒に１０４ａに渡す。
【０１２７】
（Ｓ２）次に、第１通信ミドルウェア実行部１０４ａ（Ｍ１）は、任意の第１ミドルヘッダ（ｈ１）の情報をアプリケーションデータ（1301）に付与し、これをアプリケーションデータ（1302）として、プロトコルスタック１０７ａに渡す。この際、１０４ａは、上記ＩＰアドレス“Ｂ”及び示すポート番号“Ｐｍ１”を含む情報を１０７ａに対し指定する。
【０１２８】
（Ｓ３）次に、プロトコルスタック１０７ａは、上記１０４ａから指定されたＩＰアドレス“Ｂ”をＩＰヘッダ（第１ＩＰヘッダ：ｈ３）の情報とし、同ポート番号“Ｐｍ１”をＴＣＰヘッダ（第１ＴＣＰヘッダ：ｈ２）の情報として、アプリケーションデータ（1302）に付与し、更に当該パケットの送信先ＭＡＣアドレス（第１ＭＡＣ：ｈ４）の情報も付与して、送信用パケット（Ethernetフレーム）（第１パケット）（1303）を生成する。ここでは、通信装置Ａと通信装置Ｂがルータ１１３を介して接続しているので、１０７ａは、通信装置Ｂとの通信をルータ１１３経由で行うために、当該パケット（Ethernetフレーム）（1303）の送信先ＭＡＣアドレス（第１ＭＡＣ：ｈ４）に、ルータ１１３のＭＡＣアドレス“ｒ”を設定する。そして最後に、１０７ａは、当該パケット（1303）を仮想通信Ｉ/Ｆ１０８ａに渡す。
【０１２９】
（Ｓ４）次に、仮想通信Ｉ/Ｆ１０８ａは、上記１０７ａから受け取った送信用パケット（1303）をそのままカプセル化処理部１０５ａに渡す。
【０１３０】
（Ｓ５）次に、カプセル化処理部１０５ａは、上記送信用パケット（1303）のＩＰヘッダ（第１ＩＰヘッダ：ｈ３）及びＴＣＰヘッダ（第１ＴＣＰヘッダ：ｈ２）に含まれる宛先情報（ＩＰアドレス“Ｂ”及びポート番号“Ｐｍ１”）を用いて、プロトコル管理テーブル１１０（図４）を参照し、当該パケット（1303）の要否を判定する。ここではカプセル化要と判定される。
【０１３１】
本例では、当該送信用パケット（1303）は、第１ＩＰ（ｈ３）の宛先が通信装置Ｂ宛てであり、ルータ跨ぎ有りなので、カプセル化処理部１０５ａは、当該送信用パケット（1303）をパケット保持部２０８にて一時的に保持し、図１３に示すＡＲＰ要求（1321）を第２通信ミドルウェア実行部１０６ａ（Ｍ２）に渡す（なお1321の第１ＭＡＣ（ｈ４）の値はブロードキャストアドレス）。その際、１０５ａは、送信先の（通信装置Ｂの）第２通信ミドルウェア実行部１０６ｂ（Ｍ２）を指定するための情報として、ＡＲＰフレーム内部に格納されている宛先ＩＰアドレス“Ｂ”及びポート番号“Ｐｍ１”を、１０６ａに渡す。
【０１３２】
（Ｓ６）次に、第２通信ミドルウェア実行部１０６ａ（Ｍ２）は、任意の第２ミドルヘッダ（ｈ５）を上記ＡＲＰ要求（1321）に付与し、これをアプリケーションデータ（1322）として、プロトコルスタック１０７ａに渡す。この際、１０６ａ（Ｍ２）は、上記ＩＰアドレス“Ｂ”及びポート番号“Ｐｍ１”を含む情報を１０７ａに対し指定する。
【０１３３】
（Ｓ７）次に、プロトコルスタック１０７ａは、上記１０６ａから指定されたＩＰアドレス“Ｂ”をＩＰヘッダ（第２ＩＰヘッダ：ｈ７）の情報として、同ポート番号“Ｐｍ１”をＴＣＰヘッダ（第２ＴＣＰヘッダ：ｈ６）の情報として、上記アプリケーションデータ（1322）に付与し、更に当該パケットの送信先ＭＡＣアドレス（第２ＭＡＣ：ｈ８）の情報も付与して、送信用パケット（カプセル化済み、第２パケット）（1323）を生成し、当該パケット（1323）を仮想通信Ｉ/Ｆ１０８ａに渡す。なお通信装置Ａと通信装置Ｂがルータ１１３を介して接続しており、通信装置Ａと通信装置Ｂは相互の通信をルータ１１３経由させるため、１０７ａは、実施の形態１と同様に、当該パケット（1323）の送信先ＭＡＣアドレス（第２ＭＡＣ：ｈ８）に、ルータ１１３のＭＡＣアドレス“ｒ”を設定する。
【０１３４】
（Ｓ８〜Ｓ１０）以降、前述の実施の形態１の例と同様に、送信用パケット（1323）は、仮想通信Ｉ/Ｆ１０８ａから、カプセル化処理部１０５ａ、通信Ｉ/Ｆ１０９ａを経由して、ルータ１１３に到達する。
【０１３５】
（Ｓ１１）ルータ１１３は、上記受信したパケット（1323）の第２ＩＰ（ｈ７）のアドレスを参照する。ここで、当該第２ＩＰ（ｈ７）のアドレスは、通信装置ＢのＩＰアドレス“Ｂ”が格納されているため、ルータ１１３は、当該パケット（1323）の第２ＭＡＣ（ｈ８）の情報（“ｒ”）を通信装置ＢのＭＡＣアドレス“ｂ”に書き換えたパケット（1324）を作成し、通信装置Ｂへ転送する。
【０１３６】
（Ｓ１２〜Ｓ１４）以降も前述同様に、当該パケット（1324）は、通信装置Ｂの通信Ｉ/Ｆ１０９ｂ、カプセル化処理部１０５ｂ、仮想通信Ｉ/Ｆ１０８ｂを経由し、プロトコルスタック１０７ｂに渡される。
【０１３７】
（Ｓ１５）プロトコルスタック１０７ｂは、上記受信パケット（1324）に対してプロトコル処理を行い、当該パケット（1324）のアプリケーションデータ部分（1325）を取り出す。そして、当該パケット（1324）のＴＣＰヘッダ（第２ＴＣＰヘッダ：ｈ６）の指定（ポート番号）に従って、当該アプリケーションデータ部分（1325）を第２通信ミドルウェア実行部１０６ｂ（Ｍ２）に渡す。
【０１３８】
（Ｓ１６）次に、第２通信ミドルウェア実行部１０６ｂ（Ｍ２）は、上記１０７ｂから受け取ったアプリケーションデータ（1325）から第２ヘッダ（第２ミドルヘッダ：ｈ５）を外して、残りの部分、つまりＡＲＰ要求（1326）を、カプセル化処理部１０５ｂに渡す。
【０１３９】
（Ｓ１７）次に、カプセル化処理部１０５ｂは、上記１０６ｂから受け取ったＡＲＰ要求（1326）を、そのまま仮想通信Ｉ／Ｆ１０８ｂへ転送する。
【０１４０】
（Ｓ１８）次に、仮想通信Ｉ/Ｆ１０８ｂは、上記１０５ｂから受け取ったＡＲＰ要求（1326）をプロトコルスタック１０７ｂに渡す。
【０１４１】
（Ｓ１９）続いて、図１６で、プロトコルスタック１０７ｂは、上記ＡＲＰ要求（1326）を受け取り、通信装置Ａにその応答を返信するために、図１５に示すＡＲＰ応答（1331）を、仮想通信Ｉ/Ｆ１０８ｂに渡す。当該ＡＲＰ応答（1331）は、自装置（Ｂ）のＭＡＣアドレス情報“ｂ”を含む。
【０１４２】
（Ｓ２０，Ｓ２１）次に、仮想通信Ｉ/Ｆ１０８ｂは、上記ＡＲＰ応答（1331）を、カプセル化処理部１０５ｂに渡し、カプセル化処理部１０５ｂから第２通信ミドルウェア実行部１０６ｂ（Ｍ２）に渡す。
【０１４３】
（Ｓ２２）第２通信ミドルウェア実行部１０６ｂ（Ｍ２）は、任意の第２ヘッダ（第２ミドルヘッダ：ｈ５）の情報を上記ＡＲＰ応答（1331）に付与し、これをアプリケーションデータ（1332）として、プロトコルスタック１０７ｂに渡す。この際、１０６ｂは、通信装置ＡのＩＰアドレス“Ａ”及び１０６ａ（Ｍ２）を示すポート番号“Ｐｍ２”を含む情報を１０７ｂに対し指定する。
【０１４４】
（Ｓ２３）次に、プロトコルスタック１０７ｂは、上記１０６ｂから指定されたＩＰアドレス“Ａ”をＩＰヘッダ（第２ＩＰヘッダ：ｈ７）の情報として、同ポート番号“Ｐｍ２”をＴＣＰヘッダ（第２ＴＣＰヘッダ：ｈ６）の情報として、アプリケーションデータ（1332）に付与し、更に当該パケットの送信先ＭＡＣアドレス（第２ＭＡＣ：ｈ８）の情報も付与して、送信用パケット（1333）を生成し、当該パケット（1333）を仮想通信Ｉ/Ｆ１０８ｂに渡す。なお通信装置Ａと通信装置Ｂがルータ１１３を介して接続しており、通信装置Ａと通信装置Ｂは相互の通信をルータ１１３経由させるため、１０７ｂは、実施の形態１と同様に、当該パケット（1333）の送信先ＭＡＣアドレス（第１ＭＡＣ：ｈ８）に、ルータ１１３のＭＡＣアドレス“ｒ”を設定する。
【０１４５】
（Ｓ２４〜Ｓ２６）以降、前述同様に、送信用パケット（1333）は、仮想通信Ｉ/Ｆ１０８ｂから、カプセル化処理部１０５ｂ、通信Ｉ/Ｆ１０９ｂを経由して、ルータ１１３に到達する。
【０１４６】
（Ｓ２７）ルータ１１３においても、前述同様に、パケット（1333）の第２ＭＡＣ（ｈ８）の情報を通信装置ＡのＭＡＣアドレス“ａ”に書き換えたパケット（1334）を作成し、通信装置Ａへ転送する。
【０１４７】
（Ｓ２８〜Ｓ３０）通信装置Ａの通信Ｉ/Ｆ１０９ａは、ルータ１１３からパケット（1334）を受信すると、当該受信パケット（1334）を、カプセル化処理部１０５ａ、仮想通信Ｉ/Ｆ１０８ａを経由して、プロトコルスタック１０７ａに渡す。
【０１４８】
（Ｓ３１）次に、プロトコルスタック１０７ａは、受信パケット（1334）に対してプロトコル処理を行い、当該パケット（1334）のアプリケーションデータ部分（1335）を取り出す。そして、当該パケット（1334）のＴＣＰヘッダ（第２ＴＣＰヘッダ：ｈ６）の指定（ポート番号）に従って、当該アプリケーションデータ部分（1335）を第２通信ミドルウェア実行部１０６ａ（Ｍ２）に渡す。
【０１４９】
（Ｓ３２）次に、第２通信ミドルウェア実行部１０６ａ（Ｍ２）は、上記１０７ａから受け取ったアプリケーションデータ（1335）から第２ヘッダ（第２ミドルヘッダ：ｈ５）を外して、残りの部分、つまりＡＲＰ応答（1336）を、カプセル化処理部１０５ａに渡す。
【０１５０】
（Ｓ３３）カプセル化処理部１０５ａは、上記１０６ａからＡＲＰ応答（1336）を受け取ると、前述のパケット保持部２０８にて保持していたパケット（図１３、1303）の宛先ＭＡＣ（ｈ４）の情報を、宛先変更部２０９により、当該ＡＲＰ応答（1336）の送信元ＭＡＣアドレス（つまり通信相手の通信装置ＢのＭＡＣアドレス“ｂ”）で書き換えたパケット（図１５、1304）を作成する。そして、カプセル化処理部１０５ａ（２０９，２０５等）は、当該パケット（1304）を、第２通信ミドルウェア実行部１０６ａ（Ｍ２）に渡す。この際、１０５ａは、送信先の（通信装置Ｂの）第２通信ミドルウェア実行部１０６ｂ（Ｍ２）を指定するための情報（ＩＰアドレス“Ｂ”及び１０６ｂ（Ｍ２）を示すポート番号“Ｐｍ２”を含む情報）を当該データ（1304）と一緒に１０６ａに渡す。
【０１５１】
（Ｓ３４）第２通信ミドルウェア実行部１０６ａ（Ｍ２）は、任意の第２ミドルヘッダ（ｈ５）の情報を上記データ（1304）に付与し、これをアプリケーションデータ（1305）として、プロトコルスタック１０７ａに渡す。この際、１０６ａは、上記ＩＰアドレス“Ｂ”及びポート番号“Ｐｍ２”を含む情報を１０７ａに対し指定する。
【０１５２】
（Ｓ３５）次に、プロトコルスタック１０７ａは、上記１０６ｂから指定されたＩＰアドレス“Ｂ”をＩＰヘッダ（第２ＩＰヘッダ：ｈ７）の情報とし、同ポート番号“Ｐｍ２”をＴＣＰヘッダ（第２ＴＣＰヘッダ：ｈ６）の情報として、上記アプリケーションデータ（1305）に付与し、更に当該パケットの送信先ＭＡＣアドレス（第２ＭＡＣ：ｈ８）の情報も付与して、送信用パケット（1306）を生成し、仮想通信Ｉ/Ｆ１０８ａに渡す。尚、ここで１０７ａがアプリケーションデータ（1305）に第２ＩＰヘッダ（ｈ７）として付与したＩＰアドレスは、送信先の通信装置Ｂの仮想通信Ｉ/Ｆ１０８ｂに割り当てられたＩＰアドレス“Ｂ”であり、先（Ｓ４）に１０７ａがアプリケーションデータ（1303）に第１ＩＰヘッダ（ｈ３）として付与したＩＰアドレスと同じである。また、１０７ａがアプリケーションデータ（1305）に第２ＭＡＣ（ｈ８）として付与したアドレスは、ルータ１１３のＭＡＣアドレス“ｒ”であり、先（Ｓ４）に１０７ａがアプリケーションデータ（1303）に第１ＭＡＣ（ｈ４）として付与したアドレス“ｒ”と同じである。
【０１５３】
（Ｓ３６〜Ｓ３８）仮想通信Ｉ/Ｆ１０８ａは、上記１０７ａから渡されたパケット（1306）をカプセル化処理部１０５ａに渡し、同様に１０５ａから通信Ｉ/Ｆ１０９ａを経由してルータ１１３に渡される。
【０１５４】
（Ｓ３９）ルータ１１３においても、前述同様に、パケット（1306）の第２ＭＡＣ（ｈ８）を通信装置ＢのＭＡＣアドレス“ｂ”に書き換えたパケット（1307）を作成し、通信装置Ｂへ転送する。
【０１５５】
（Ｓ４０〜Ｓ４２）通信装置Ｂの通信Ｉ/Ｆ１０９ｂは、ルータ１１３からパケット（1307）を受信すると、カプセル化処理部１０５ｂに渡し、同様に１０５ｂから、仮想通信Ｉ/Ｆ１０８ｂを経由してプロトコルスタック１０７ｂに渡される。
【０１５６】
（Ｓ４３）次に、プロトコルスタック１０７ｂは、上記受信パケット（1307）に対してプロトコル処理を行い、当該パケット（1307）のアプリケーションデータ部分（1308）を取り出す。そして、当該パケット（1307）のＴＣＰヘッダ（第２ＴＣＰヘッダ：ｈ６）の指定（ポート番号）に従って、当該アプリケーションデータ部分（1308）を第２通信ミドルウェア実行部１０６ｂ（Ｍ２）に渡す。
【０１５７】
（Ｓ４４）次に、第２通信ミドルウェア実行部１０６ｂ（Ｍ２）は、上記１０７ｂから受け取ったアプリケーションデータ（1308）から第２ヘッダ（第２ミドルヘッダ：ｈ５）を外して、残りの部分（第１パケット）（1309）をカプセル化処理部１０５ｂに渡す。
【０１５８】
（Ｓ４５）次に、カプセル化処理部１０５ｂは、上記１０６ｂから受け取ったパケット（1309）を仮想通信Ｉ/Ｆ１０８ｂに渡す。
【０１５９】
（Ｓ４６）次に、仮想通信Ｉ/Ｆ１０８ｂは、上記１０５ｂから受け取ったパケット（1309）の第１ＭＡＣ（ｈ４）のアドレスが、（通信装置Ｂの）仮想通信Ｉ/Ｆ１０８ｂで割り当てられているＭＡＣアドレス“ｂ”と一致するため、当該パケット（1309）を受領する。そして、１０８ｂは、当該パケット（1309）をプロトコルスタック１０７ｂへ渡す。
【０１６０】
（Ｓ４７）次に、プロトコルスタック１０７ｂは、上記１０８ｂから受け取ったパケット（1309）に対しプロトコル処理を行い、当該パケット（1309）のアプリケーションデータ部分（1310）を取り出して、当該アプリケーションデータ（1310）を、当該パケット（1309）のＴＣＰヘッダ（第１ＴＣＰヘッダ：ｈ２）の指定（ポート番号）に従って、第１通信ミドルウェア実行部１０４ｂ（Ｍ１）に渡す。
【０１６１】
（Ｓ４８）次に、第１通信ミドルウェア実行部１０４ｂ（Ｍ１）は、上記１０７ｂから受け取ったアプリケーションデータ（1310）から第１ミドルヘッダ（ｈ１）を外して、当該データ（1311）を通信アプリケーション実行部１０３ｂ（ＡＰＰ）に渡す（前述のように必要に応じてサービスＩＤも参照）。以上のようにして、新装置から新装置へのデータ送信において、Ｍ２経由のカプセル化通信（第２パケット）を用いて、ＡＲＰの処理を介在しつつ、送信元のＡＰＰ（１０３ａ）から送信先のＡＰＰ（１０３ｂ）へデータが送信される。
【０１６２】
［効果等］
上述のように、実施の形態２の通信装置１０１では、送信時、新装置は、パケットを送信する前に、カプセル化処理部１０５（２０７〜２０９等）により、ルータ１１３を経由する通信かどうかに応じて第１パケット部分の宛先情報（ＭＡＣアドレス）を変更する処理を行う。特に、ルータ１１３を経由する送信パケット（保持パケット）について、送信元の通信装置（Ａ）は、宛先の通信装置（Ｂ）のＩＰアドレスを第２パケット（Ｐ２）の宛先ＩＰとしてカプセル化したＡＲＰ要求を送信し（1323等）、それに対して、宛先の通信装置（Ｂ）は、送信元の通信装置（Ａ）のＩＰアドレスを第２パケット（Ｐ２）の宛先ＩＰとしてカプセル化したＡＲＰ応答を返信する（1333等）。これにより送信元の通信装置（Ａ）は、送信パケット（保持パケット）の宛先（ＭＡＣアドレス）を上記ＡＲＰ応答で取得した宛先の通信装置（Ｂ）のＭＡＣアドレスによって変更して送信し、宛先の通信装置（Ｂ）は当該パケットを受領することができる。
【０１６３】
なお、実施の形態２における、新装置から旧装置への送信の場合、及び旧装置から新装置への送信の場合については、カプセル化処理部１０５で、カプセル化不要のパケットと判定されることになるので、それぞれ実施の形態１（図９，図１１）と同様の動作になる。
【０１６４】
以上説明したように実施の形態２においても実施の形態１と同様の効果（システム移行の容易化及びコスト低減など）が得られる。
【０１６５】
実施の形態２の変形例として以下のような処理（ＡＲＰ情報の記録によるＡＲＰ通信の繰り返し省略）を行う構成としてもよい。送信側の通信装置１０１で、図１５のＡＲＰ応答（1336）をメモリ（図３のホストメモリ３０２等）上にテーブル（例えばＡＲＰ情報テーブル）等の形で記録しておき、パケット保持部２０８で、図１３のＡＲＰ要求（1321）を送信する前に、上記テーブル情報を参照し、当該（宛先の）通信装置からのＡＲＰ応答（1336）を既に（過去に）受信している場合は、前述のＡＲＰ要求（1321）の送信や送信パケット保持を行わずに、当該送信パケットの宛先ＭＡＣアドレス情報を上記テーブルに記録されているＡＲＰ応答（1336）の送信元（宛先）の通信装置のＭＡＣアドレス情報によって書き替えるようにする。これにより、前述のＡＲＰ要求及びＡＲＰ応答のやりとりについては通信の初回時のみ行えばよくなるため、無駄な通信を抑えて通信の応答性を確保することができる。
【０１６６】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることは言うまでもない。
【産業上の利用可能性】
【０１６７】
本発明は、通信ミドルウェアを用いる通信装置を含んで構成される各種の情報処理システム（通信システム）やＶＰＮ（仮想プライベートネットワーク）などに利用可能である。
【符号の説明】
【０１６８】
１０１…通信装置、１０２…ネットワーク、１０３…通信アプリケーション実行部、１０４…第１通信ミドルウェア実行部、１０５…カプセル化処理部、１０６…第２通信ミドルウェア実行部、１０７…プロトコルスタック、１０８…仮想通信Ｉ/Ｆ、１０９…通信Ｉ/Ｆ、１１０…プロトコル管理テーブル、１１２…通信情報対応テーブル、１１３…ルータ、２０１…ＲＡＷ受信部、２０２…ミドル受信部、２０３…カプセル化判定部、２０４…ＲＡＷ送信部、２０５…ミドル送信部、２０６…ヘッダ書き替え部、２０７…ルータ跨ぎ判定部、２０８…パケット保持部、２０９…宛先変更部。
【図１】
0005632806.tif 000002
【図２】
0005632806.tif 000003
【図３】
0005632806.tif 000004
【図４】
0005632806.tif 000005
【図５】
0005632806.tif 000006
【図６】
0005632806.tif 000007
【図７】
0005632806.tif 000008
【図８】
0005632806.tif 000009
【図９】
0005632806.tif 000010
【図１０】
0005632806.tif 000011
【図１１】
0005632806.tif 000012
【図１２】
0005632806.tif 000013
【図１３】
0005632806.tif 000014
【図１４】
0005632806.tif 000015
【図１５】
0005632806.tif 000016
【図１６】
0005632806.tif 000017
【図１７】
0005632806.tif 000018