(57)【要約】  転送装置は、送受信部、制御部、置換処理部、送信部を備える。送受信部は、通信装置から宛先装置に送信されたパケットを受信する。制御部は、パケットにより受信したデータを、通信装置が宛先装置に送信する送信データと、送信データの送信処理を通信装置で行うアプリケーションが生成した制御情報に分離する。置換処理部は、宛先装置に向け、識別子に対応付けて送信したことがあるデータが送信データに含まれる場合、送信データ中で識別子に対応付けられたデータを識別子に置き換えた置換データを生成する。送信部は、送信データの代わりに置換データを宛先装置に向けて転送する。
2016181461.tif 000002
【特許請求の範囲】
【請求項１】
通信装置から宛先装置に送信されたパケットを受信する送受信部と、
前記パケットにより受信したデータを、前記通信装置が前記宛先装置に送信する送信データと、前記送信データの送信処理を前記通信装置で行うアプリケーションが生成した制御情報に分離する制御部と、
前記宛先装置に向け、識別子に対応付けて送信したことがあるデータが前記送信データに含まれる場合、前記送信データ中で前記識別子に対応付けられたデータを前記識別子に置き換えた置換データを生成する置換処理部と、
前記送信データの代わりに前記置換データを前記宛先装置に向けて転送する送信部
を備えることを特徴とする転送装置。
【請求項２】
前記制御部は、
前記パケットにより受信したデータ中の第１の制御情報の末尾から、前記第１の制御情報の次に挿入されている第２の制御情報の開始位置までの間のデータである対象データを特定し、
前記第１の制御情報、前記対象データ、前記第２の制御情報の各々を、互いに分離して前記置換処理部に出力し、
前記置換処理部は、前記対象データを、前記第１および第２の制御情報と分けて処理する
ことを特徴とする請求項１に記載の転送装置。
【請求項３】
前記制御部は、前記パケットにより受信したデータから前記制御情報を除いて得られるデータの各々を、前記パケットの先頭に近い順に結合した結合データを生成すると共に、前記制御情報を廃棄し、
前記置換処理部は、前記結合データ中で前記識別子に対応付けられたデータを前記識別子に置き換えることにより、前記置換データを生成する
ことを特徴とする請求項１に記載の転送装置。
【請求項４】
前記制御部は、前記パケットのペイロードに含まれている情報から前記制御情報を除いて得られるデータの各々を、前記通信装置中のアプリケーションでの処理が行われる前の順序に結合させた結合データを生成すると共に、前記制御情報を廃棄し、
前記置換処理部は、前記結合データ中で前記識別子に対応付けられたデータを前記識別子に置き換えることにより、前記置換データを生成する
ことを特徴とする請求項１に記載の転送装置。
【請求項５】
他の転送装置から受信した受信データと、前記受信データを識別するために前記他の転送装置から通知された識別子である通知識別子を対応付けて記憶する記憶部と、
前記通信装置宛のデータを前記他の転送装置から受信すると、前記通信装置宛のデータに含まれている前記通知識別子を、前記通知識別子で識別される受信データに復元する復元処理部
をさらに備え、
前記送受信部は、前記復元処理部により得られたデータを前記通信装置に送信する
ことを特徴とする請求項１〜４のいずれか１項に記載の転送装置。
【請求項６】
前記制御部は、
前記通信装置宛のデータを前記他の転送装置から受信すると、前記通信装置宛のデータに、前記通信装置中のアプリケーションが制御に使用する制御データが含まれているかを判定し、
前記通信装置宛のデータに前記制御データが含まれていない場合、前記制御データの代替となる代替情報を前記通信装置宛のデータに挿入し、
前記送信部は、前記代替情報が挿入されたデータを前記通信装置に送信する
ことを特徴とする請求項５に記載の転送装置。
【請求項７】
通信装置と、
前記通信装置の通信先である宛先装置と、
前記通信装置と前記宛先装置の間の通信を中継する第１および第２の転送装置
を備え、
前記第１の転送装置は、
前記通信装置から前記宛先装置宛てのパケットを受信すると、前記パケットにより受信したデータを、前記通信装置が前記宛先装置に送信する送信データと、前記送信データの送信処理を前記通信装置で行うアプリケーションが生成した制御情報に分離し、
識別子に対応付けて前記第２の転送装置に送信したことがあるデータが前記送信データに含まれる場合、前記送信データ中で前記識別子に対応付けられたデータを前記識別子に置き換えた置換データを前記第２の転送装置に送信し、
前記第２の転送装置は、前記置換データを前記送信データに復元してから、前記宛先装置に送信する
ことを特徴とする通信システム。
【請求項８】
前記第１の転送装置は、
前記パケットにより受信したデータ中の第１の制御情報の末尾から、前記第１の制御情報の次に挿入されている第２の制御情報の開始位置までの間のデータである対象データを特定し、
前記第１の制御情報、前記対象データ、前記第２の制御情報の各々について、前記識別子を用いた置換処理を行う
ことを特徴とする請求項７に記載の通信システム。
【請求項９】
前記第１の転送装置は、前記パケットにより受信したデータから前記制御情報を除いて得られる複数のデータを結合した結合データを生成すると共に、前記制御情報を廃棄し、
前記置換データは、前記結合データ中で前記識別子に対応付けられたデータを前記識別子に置換したデータであり、
前記第２の転送装置は、
前記第１の転送装置から受信したデータを用いて、前記結合データを復元し、
前記宛先装置での処理に使用されるアプリケーションが前記制御情報の代替として制御に使用する代替情報を生成し、
前記代替情報と前記結合データとを、前記宛先装置に送信する
ことを特徴とする請求項７に記載の通信システム。
【請求項１０】
通信装置と、前記通信装置の通信先である宛先装置の間の通信が第１および第２の転送装置によって中継されるネットワークにおいて、
前記第１の転送装置は、
前記通信装置から前記宛先装置宛てのパケットを受信すると、前記パケットにより受信したデータを、前記通信装置が前記宛先装置に送信する送信データと、前記送信データの送信処理を前記通信装置で行うアプリケーションが生成した制御情報に分離し、
識別子に対応付けて前記第２の転送装置に送信したことがあるデータが前記送信データに含まれる場合、前記送信データ中で前記識別子に対応付けられたデータを前記識別子に置き換えた置換データを前記第２の転送装置に送信し、
前記第２の転送装置は、前記置換データを前記送信データに復元してから、前記宛先装置に送信する
ことを特徴とする通信方法。
【請求項１１】
前記第１の転送装置は、
前記パケットにより受信したデータ中の第１の制御情報の末尾から、前記第１の制御情報の次に挿入されている第２の制御情報の開始位置までの間のデータである対象データを特定し、
前記第１の制御情報、前記対象データ、前記第２の制御情報の各々について、前記識別子を用いた置き換え処理を行う
ことを特徴とする請求項１０に記載の通信方法。
【請求項１２】
前記第１の転送装置は、前記パケットにより受信したデータから前記制御情報を除いて得られる複数のデータを結合した結合データを生成すると共に、前記制御情報を廃棄し、
前記置換データは、前記結合データ中で前記識別子に対応付けられたデータを前記識別子に置換したデータであり、
前記第２の転送装置は、
前記第１の転送装置から受信したデータを用いて、前記結合データを復元し、
前記宛先装置での処理に使用されるアプリケーションが前記制御情報の代替として制御に使用する代替情報を生成し、
前記代替情報と前記結合データとを、前記宛先装置に送信する
ことを特徴とする請求項１０に記載の通信方法。
【請求項１３】
通信装置と宛先装置との間の通信を中継する転送装置に、
前記通信装置から前記宛先装置に送信されたパケットを受信し、
前記パケットにより受信したデータを、前記通信装置が前記宛先装置に送信する送信データと、前記送信データの送信処理を前記通信装置で行うアプリケーションが生成した制御情報に分離し、
前記宛先装置に向け、識別子に対応付けて送信したことがあるデータが前記送信データに含まれる場合、前記送信データ中で前記識別子に対応付けられたデータを前記識別子に置き換えた置換データを生成し、
前記送信データの代わりに前記置換データを前記宛先装置に向けて転送する
処理を行わせることを特徴とする通信プログラム。
【請求項１４】
前記転送装置に、
前記パケットにより受信したデータから前記制御情報を除いて得られるデータを結合させた結合データを生成し、
前記制御情報を廃棄し、
前記結合データ中で前記識別子に対応付けられたデータを前記識別子に置き換えることにより、前記置換データを生成する
処理を行わせることを特徴とする請求項１３に記載の通信プログラム。
【請求項１５】
他の転送装置から受信した受信データと、前記受信データを識別するために前記他の転送装置から通知された識別子である通知識別子を対応付けて記憶し、
前記通信装置宛のデータを前記他の転送装置から受信すると、前記通信装置宛のデータに含まれている前記通知識別子を、前記通知識別子で識別される受信データに置換することにより復元データを生成し、
前記復元データに前記制御情報が含まれていない場合、前記制御情報の代替となる代替情報を前記復元データに挿入し、
前記代替情報が挿入された復元データを前記通信装置に送信する
処理を前記転送装置に行わせることを特徴とする請求項１３または１４に記載の通信プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の装置の間で行われる通信に関する。
【背景技術】
【０００２】
近年、通信の高速化が求められてきており、通信速度を高速化するために様々な試みが行われてきている。例えば、データの送信量を減らすために、送信対象のデータに対して重複除去が行われることがある。重複除去では、受信側の通信装置が、過去に送信側の通信装置から受信したデータを、識別子に対応付けて記憶しており、送信側の通信装置も過去に送信したデータと識別子を対応付けて記憶している。送信側の通信装置は、送信対象のデータの一部または全部が既に送信したことがあるデータであるかを判定し、既に送信したことがあるデータについては、実際のデータの代わりに、そのデータに対応付けられた識別子を受信側の通信装置に送信する。受信側の通信装置は、受信した識別子に対応付けて記憶しているデータを読み出し、読み出したデータを送信側の通信装置から送信されたデータとして扱う。【０００３】
図１は、重複除去が行われる場合の転送処理の例を説明する図である。例えば、データｄ１を送信する場合、送信側の通信装置は、送信データを複数のデータに区切り、過去に送信したことがあるデータや送信データ中で複数回含まれるデータを特定する。図１の例では、送信データであるデータｄ１には、データｄ２とデータｄ３が、データｄ２、データｄ３、データｄ３、データｄ２の順に含まれている。また、データｄ２とデータｄ３のいずれも、送信側の通信装置が受信側の通信装置に送信したことがないとする。この場合、送信側の通信装置は、送信データの先頭のデータｄ２とともに、データｄ２を示す識別情報ｉｄａを受信側の通信装置に送信する。受信側の通信装置は、データｄ２と識別情報ｉｄａを対応付けて記憶する。図１では、見やすくするために、識別情報ｉｄａをＡと示す。同様に、送信側の通信装置は、送信データのデータｄ３とともに、データｄ３を示す識別情報ｉｄｂを受信側の通信装置に送信する。図１中では識別情報ｉｄｂをＢと示す。受信側の通信装置は、データｄ３と識別情報ｉｄｂを対応付けて記憶する。【０００４】
次に、送信側の通信装置は、送信データの続きのデータｄ３の代わりに、データｄ３を表す識別子ｉｄｂ（Ｂ）を受信側の通信装置に送信する。受信側の通信装置では、識別情報ｉｄｂを受信すると、識別情報ｉｄｂに対応付けて記憶しているデータｄ３を特定するとともに、受信データをデータｄ３に読み替える。同様に、送信側の通信装置は、送信データの続きのデータｄ２の代わりに、データｄ２を表す識別子ｉｄａ（Ａ）を受信側の通信装置に送信する。受信側の通信装置では、識別情報ｉｄａを受信すると、識別情報ｉｄａに対応付けて記憶しているデータｄ２を特定するとともに、受信データをデータｄ２に読み替える。このため、送信側の通信装置は、データｄ２とデータｄ３を１回送信した後は、それらの識別情報を送信するだけで、受信側の通信装置に、データｄ２、データｄ３、データｄ３、データｄ２を送信した場合と同様の効果が得られる。受信側の通信装置は、データｄ２、データｄ３、データｄ３、データｄ２をつなげてデータｄ１を復元する。【０００５】
関連する技術として、出現率の高いパターンにパターン番号を付して記憶し、データに含まれたパターンと記憶しているパターンが一致する場合にデータ中のパターンをパターン番号で置き換えて転送データを生成する装置が提案されている（例えば特許文献１）。送信装置は、転送データとパターン辞書に登録したパターンの情報を、受信側の装置に転送する。他にも、送信対象のデータの１バイトの値が制御信号で使用される値の場合に、データの送信側の装置が、変換識別を行っていることを示す値を付したデータを転送する転送方法が知られている。この転送方法では、制御情報とは異なる所定の範囲の値についてはデータを変更しない（例えば特許文献２）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００２−３６８６２３号公報
【特許文献２】特開平９−３３１３６６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
送信データ中の重複を除去する場合、送信側の装置は、送信データを所定のデータ長に区切って、これまでに送信を行ったことがあるデータであるかを判定する。ここで、データの転送処理を行うアプリケーションによっては、アプリケーションヘッダの挿入などの、転送対象のデータへの改変が行われることがある。この場合、転送処理を行うアプリケーションによる改変に起因して、重複したデータとして除去できるデータ量が減少してしまい、転送効率が悪くなる。【０００８】
本発明では、データの転送を効率化することを目的とする。
【課題を解決するための手段】
【０００９】
転送装置は、送受信部、制御部、置換処理部、送信部を備える。送受信部は、通信装置から宛先装置に送信されたパケットを受信する。制御部は、前記パケットにより受信したデータを、前記通信装置が前記宛先装置に送信する送信データと、前記送信データの送信処理を前記通信装置で行うアプリケーションが生成した制御情報に分離する。置換処理部は、前記宛先装置に向け、識別子に対応付けて送信したことがあるデータが前記送信データに含まれる場合、前記送信データ中で前記識別子に対応付けられたデータを前記識別子に置き換えた置換データを生成する。送信部は、前記送信データの代わりに前記置換データを前記宛先装置に向けて転送する。
【発明の効果】
【００１０】
データの転送を効率化できる。
【図面の簡単な説明】
【００１１】
【図１】重複除去が行われる場合の転送処理の例を説明する図である。
【図２】実施形態にかかる方法の例を説明する図である。
【図３】転送装置の構成の例を説明する図である。
【図４】転送装置のハードウェア構成の例を説明する図である。
【図５】転送処理が行われるネットワークの例を説明する図である。
【図６】フロー情報テーブルの例を説明する図である。
【図７】ヘッダ情報テーブルとアプリケーションヘッダの例を説明する図である。
【図８】第１の実施形態にかかる転送処理の例を説明する図である。
【図９】第１の実施形態にかかる転送装置で行われる処理の例を説明するフローチャートである。
【図１０】第２の実施形態にかかる転送装置の構成の例を説明する図である。
【図１１】第２の実施形態にかかるフロー情報テーブルの例を説明する図である。
【図１２】第２の実施形態にかかる転送処理の例を説明する図である。
【図１３】データの送信側の転送装置で行われる処理の例を説明するフローチャートである。
【図１４】データの受信側の転送装置で行われる処理の例を説明するフローチャートである。
【図１５】第３の実施形態にかかる転送装置の構成の例を説明する図である。
【図１６】第３の実施形態にかかるフロー情報テーブルの例を説明する図である。
【図１７】第３の実施形態にかかる転送処理の例を説明する図である。
【図１８】第３の実施形態にかかる転送装置で行われる処理の例を説明するフローチャートである。
【図１９】転送処理で実際に転送されるデータ量のシミュレーション結果を説明する図である。
【発明を実施するための形態】
【００１２】
図２は、実施形態にかかる方法の例を説明する図である。図２では、通信装置１０ａと通信装置１０ｂが転送装置２０ａと転送装置２０ｂを介して通信するネットワークの例と、ネットワーク中の各装置で行われる処理の例を示す。転送装置２０ａと転送装置２０ｂは、いずれも、重複除去と重複除去を用いて送信されたデータの復元を行うことができる装置であるものとする。また、転送装置２０ａと転送装置２０ｂは、Wide Area Network（ＷＡＮ）を介して通信している。
【００１３】
ステップＳ１において、通信装置１０ａは、通信装置１０ｂに送信する対象のデータ（送信データ）を含むデータパケットを生成する。このとき、通信装置１０ａ中で動作しているアプリケーションは、通信装置１０ｂに送信する送信データに、アプリケーションヘッダを付した上で、データパケットに含めるものとする。なお、送信データに含められるアプリケーションヘッダの数や、アプリケーションヘッダが挿入される間隔等は実装に応じて決定される。また、送信データに複数のアプリケーションヘッダが挿入される場合、複数のアプリケーションヘッダはそれぞれ異なる情報を含んでいる。
【００１４】
ステップＳ２において、通信装置１０ａは送信データを含むデータパケットを通信装置１０ｂに向けて送信する。なお、図２では、図を見やすくするためデータパケットや転送パケットの送信を１つの矢印で示しているが、各装置間で送受信されるデータパケットや転送パケットの数は任意である。
【００１５】
ステップＳ３において、転送装置２０ａは、データパケットを受信し、データパケットのペイロードを抽出する。転送装置２０ａは、ペイロード中のデータに対し、アプリケーションヘッダと送信データを分離する処理を行う。なお、転送装置２０ａは、予め、データパケットに含まれている可能性のあるアプリケーションヘッダの候補を記憶しているものとする。転送装置２０ａは、ステップＳ３で特定した送信データについて、重複除去を行い、転送パケットを生成する（ステップＳ４）。転送装置２０ａは、転送パケットを転送装置２０ｂに転送する（ステップＳ５）。なお、転送装置２０ａは、予め、通信装置１０ｂ宛てのデータの転送先は転送装置２０ｂであることを記憶しているものとする。ステップＳ４、Ｓ５の処理により、転送パケットによって、転送されるデータの一部や、データに置き換えられる識別情報が転送装置２０ｂに送信される。
【００１６】
転送装置２０ｂは、転送パケットを受信すると、転送パケット中のデータや識別情報を、適宜、記憶する。このとき、転送装置２０ｂは、識別情報をその識別情報に対応付けられたデータと対応付けて記憶する。転送装置２０ｂは、転送パケットを用いて受信したデータや識別情報を用いて、送信されたデータを復元する（ステップＳ６）。転送装置２０ｂは、復元後のデータを通信装置１０ｂに転送するためのデータパケットを生成する（ステップＳ７）。転送装置２０ｂは、ステップＳ７において、適宜、アプリケーションヘッダに関する処理も行う。転送装置２０ｂは、生成したデータパケットを通信装置１０ｂに転送する（ステップＳ８）。通信装置１０ｂは、データパケットを受信することにより、通信装置１０ａから送信された送信対象のデータを取得する。
【００１７】
実施形態にかかる方法では、ステップＳ３、Ｓ４を参照しながら説明したように、データパケットのペイロード中のデータからアプリケーションヘッダを除いたデータについての重複除去が行われる。従って、転送装置２０は、送信データ中に挿入されたアプリケーションヘッダ中の情報が異なることによって、重複除去の効率が低下することを防ぐことができる。
【００１８】
＜第１の実施形態＞
図３は、第１の実施形態にかかる転送装置２０の構成の例を説明する図である。転送装置２０は、送信部２１、受信部２２、送受信部２３、パケット処理部３０、記憶部５０を備える。パケット処理部３０は、置換処理部３１、復元処理部３２、制御部４０を有する。さらに、制御部４０は、ヘッダ分離部４１とプロトコル判定部４２を有する。記憶部５０は、キャッシュ５１として動作し、さらに、送信データテーブル５２、フロー情報テーブル５３、ヘッダ情報５４、受信データテーブル５５を記憶する。
【００１９】
送信部２１は、ＷＡＮ５に含まれている他の転送装置２０にパケットを送信する。送信部２１は、ＷＡＮ５に含まれている他の転送装置２０から受信したデータを復元処理部３２に出力する。送受信部２３は、ＷＡＮ５に含まれていない通信装置１０との間でパケットを送受信する。送受信部２３は、通信装置１０から受信したデータパケットをプロトコル判定部４２に出力する。
【００２０】
プロトコル判定部４２は、通信装置１０がデータパケットの生成に使用したアプリケーションプロトコルを特定する。ヘッダ分離部４１は、通信装置１０から受信したデータから、アプリケーションヘッダを識別し、アプリケーションヘッダと通信装置１０が通信先に送信しようとしている送信データが区別できるように、置換処理部３１に出力する。ヘッダ分離部４１は、アプリケーションヘッダの特定の際に、適宜、ヘッダ情報テーブル５４を使用する。ヘッダ情報テーブル５４は、転送処理に使用されうる転送アプリケーションと、アプリケーションヘッダのフォーマット情報などを対応付けている。ヘッダ情報テーブル５４の例については後述する。
【００２１】
置換処理部３１は、入力されたデータの重複除去処理を、送信データテーブル５２を用いて行う。ここで、置換処理部３１には、アプリケーションヘッダが送信データとは分けて入力される。また、送信データテーブル５２は、他の転送装置２０に送信したデータと、そのデータに対応付けて通知した識別子を関係付けている。そこで、置換処理部３１は、送信データのうちで、送信データテーブル５２に含まれているデータを、識別子に置換することにより、重複除去処理を行う。復元処理部３２は、重複除去処理が施されたデータを、受信部２２を介して取得すると、適宜、受信データテーブル５５を用いて、復元データを生成する。なお、受信データテーブル５５は、他の転送装置２０から受信したデータを、そのデータとの対応関係を通知された識別子と共に記憶している。フロー情報テーブル５３は、フローを識別可能な情報に対応付けて、そのフローの処理に使用されているアプリケーションプロトコルを記憶する。フローを識別可能な情報として、例えば、データの送信元アドレスと宛先アドレスの組合せが使用されうる。キャッシュ５１は、適宜、データの格納に使用される。
【００２２】
図４は、転送装置２０のハードウェア構成の例を説明する図である。転送装置２０は、プロセッサ１０１、メモリ１０２、バス１０３、外部記憶装置１０４、ネットワーク接続装置１０５を備える。転送装置２０は、例えば、コンピュータなどで実現されることがある。
【００２３】
プロセッサ１０１は、Central Processing Unit（ＣＰＵ）を含む任意の処理回路とすることができる。プロセッサ１０１は、パケット処理部３０として動作する。なお、プロセッサ１０１は、例えば、外部記憶装置１０４に記憶されたプログラムを実行することができる。メモリ１０２、外部記憶装置１０４は、記憶部５０として動作する。さらに、メモリ１０２は、プロセッサ１０１の動作により得られたデータや、プロセッサ１０１の処理に用いられるデータも、適宜、記憶する。ネットワーク接続装置１０５は、他の装置との通信に使用され、送信部２１、受信部２２、送受信部２３として動作する。
【００２４】
図５は、転送処理が行われるネットワークの例を説明する図である。図５は、ＷＡＮ５をはさんで、転送装置２０ａと転送装置２０ｂが通信する場合のネットワークの例を示す。転送装置２０ａは、通信装置１０ａや通信装置１０ｃから受信したパケットを、宛先に応じて転送する。転送装置２０ｂは、通信装置１０ｂや通信装置１０ｄから受信したパケットを、宛先に応じて転送する。通信装置１０ａと通信装置１０ｃは、転送装置２０ａを介してＷＡＮ５にアクセスし、通信装置１０ｂと通信装置１０ｄは、転送装置２０ｂを介してＷＡＮ５にアクセスする。ここで、転送装置２０ａおよび転送装置２０ｂは、ＷＡＮ高速化装置として動作するものとする。なお、図５はネットワークの例であって、例えば、各転送装置２０に接続された通信装置１０の数は任意である。図５の例では、通信装置１０ａはＩＰＡというアドレスを用いて通信している。同様に、通信装置１０ｂはＩＰＢ、通信装置１０ｃはＩＰＣ、通信装置１０ｄはＩＰＤというアドレスを用いて通信を行っている。
【００２５】
以下、通信装置１０ａが転送装置２０ａと転送装置２０ｂを介して、通信装置１０ｂにデータを送信する場合に行われる転送処理を例として、各装置で行われる処理の例を説明する。以下の例では、通信装置１０ａからの通信装置１０ｂへのデータ送信は、ＣＩＦＳ（Common Internet File System）を用いて行われるものとする。また、通信装置１０ａは、予め、通信装置１０ｂ宛てのパケットを転送装置２０ａに転送することを記憶しているものとする。また、以下の説明では、いずれの装置による動作であるかを分り易くするために、符号の後に、その転送装置２０の符号の末尾のアルファベットを付すことがある。例えば、送受信部２３ａは、転送装置２０ａに備えられている送受信部２３である。
【００２６】
通信装置１０ａが通信装置１０ｂにファイルなどの送信データを送信する場合、通信装置１０ａでの処理により、送信データに、ＣＩＦＳのアプリケーションヘッダが挿入される。通信装置１０ａは、アプリケーションヘッダ挿入後の送信データを、データパケットを用いて転送装置２０ａに送信する。なお、アプリケーションヘッダ挿入後の送信データの送信に使用されるデータパケットの数は任意である。各データパケットのペイロードには、アプリケーションヘッダの一部が含まれていても良く、また、アプリケーションヘッダが一部も含まれていなくても良い。さらに、データパケットのペイロードには、１つ以上のアプリケーションヘッダが含まれていても良い。なお、通信装置１０ａから通信装置１０ｂに送信されるデータを含むデータパケットの送信元アドレスはＩＰＡ、宛先アドレスはＩＰＢに設定されている。
【００２７】
転送装置２０ａは、通信装置１０ａから送信された通信装置１０ｂ宛のデータパケットを、送受信部２３ａを介して受信する。送受信部２３ａは、データパケットを、プロトコル判定部４２ａに出力する。プロトコル判定部４２ａは、入力されたデータパケットの送信元と宛先の組み合わせをキーとしてフロー情報テーブル５３ａを検索する。
【００２８】
図６は、フロー情報テーブル５３の例を説明する図である。フロー情報テーブル５３の情報は、予め、転送装置２０の外部記憶装置１０４やメモリ１０２に格納されているものとする。図６の例では、送信元アドレスがＩＰＡ（通信装置１０ａ）で、宛先アドレスがＩＰＢ（通信装置１０ｂ）であるフローは、ＣＩＦＳを用いた通信を行っている。一方、送信元アドレスがＩＰＣ（通信装置１０ｃ）で、宛先アドレスがＩＰＤ（通信装置１０ｄ）であるフローは、ＨＴＴＰ（Hypertext Transfer Protocol）を用いた通信を行っている。
【００２９】
プロトコル判定部４２ａは、図６に示すフロー情報テーブル５３を用いて、送信元アドレスがＩＰＡであり、かつ、宛先アドレスがＩＰＢであるデータパケットは、ＣＩＦＳで処理されたと判定する。プロトコル判定部４２ａは、判定結果とともに、データパケット中のペイロードをヘッダ分離部４１ａに出力する。ヘッダ分離部４１ａは、ヘッダ情報テーブル５４を参照して、パケットを処理する。
【００３０】
図７は、ヘッダ情報テーブル５４とアプリケーションヘッダの例を説明する図である。ヘッダ情報テーブル５４は、ファイルの送受信に使用される可能性のあるアプリケーションと、各アプリケーションで使用されるアプリケーションヘッダの種別を対応付けている。転送処理にＣＩＦＳが使用される場合、アプリケーションヘッダとして、ヘッダＨ１が使用されることがヘッダ情報テーブル５４に記録されている。さらに、ヘッダ情報テーブル５４には、アプリケーションヘッダの種別ごとに、アプリケーションヘッダのフォーマットが対応付けられている。例えば、ＣＩＦＳに対応付けられたヘッダＨ１のフォーマットの例を、図７のＰ１に示すパケットフォーマット中に示す。転送処理にＣＩＦＳが使用される場合、パケットにはＩＰヘッダ、アプリケーションヘッダＨ１、データが含まれる。ヘッダＨ１には、アプリケーションヘッダの特定に使用される文字列（ＳＭＢ）、シーケンス番号、データ長が含まれる。ここで、シーケンス番号は、アプリケーションヘッダの後に続くデータが送信対象のデータ中に占める位置を特定するために使用される情報である。データ長は、アプリケーションヘッダの後に続くデータの長さである。ヘッダ分離部４１ａは、プロトコル判定部４２ａでの判定結果とヘッダ情報テーブル５４を用いて、パケットのペイロード中のアプリケーションヘッダとデータを分離する。
【００３１】
図８は、第１の実施形態にかかる転送処理の例を説明する図である。図８を参照しながら、通信装置１０ａが通信装置１０ｂに対して、図８のデータｄ１０を送信する場合を例として、処理の具体例を説明する。
【００３２】
ステップＳ１１は、通信装置１０ａでのデータｄ１０の送信処理の例を示す。図８の例では、通信装置１０ａは、データｄ１０をデータｄ１〜ｄ８の８つに分けて通信装置１０ｂに送信する。以下、データｄ１〜ｄ８とデータｄ１０を区別するために、データｄ１〜ｄ８を分割データと記載することがある。通信装置１０ａは、個々の分割データに、アプリケーションヘッダ（ｈ１〜ｈ８）を付す。このため、通信装置１０ａから送信されるデータには、ステップＳ１１に示すように、アプリケーションヘッダと分割データが交互に含まれる。
【００３３】
ステップＳ１２は、転送装置２０中のヘッダ分離部４１ａの処理の例を示す。ヘッダ分離部４１ａには、ステップＳ１２の左側に示すように、アプリケーションヘッダとデータが交互に連続したデータとして入力されている。また、ヘッダ分離部４１ａは、図６などを参照しながら説明した手順により、通信装置１０ｂ宛てのパケットのペイロード中の情報を取得している。
【００３４】
まず、ヘッダ分離部４１ａは、各アプリケーションヘッダの先頭位置を特定する。通信装置１０ａはＣＩＦＳを用いており、図７に示すとおり、ＣＩＦＳで使用されるアプリケーションヘッダの先頭には、特定の文字列（ＳＢＭ）が含まれる。そこで、ヘッダ分離部４１ａは、特定の文字列を用いてアプリケーションヘッダの先頭を特定する。ヘッダ分離部４１ａは、アプリケーションヘッダｈ１の先頭から末尾までを読み込み、アプリケーションヘッダｈ１を置換処理部３１ａに出力する。その後、アプリケーションヘッダｈ１の後に含まれる分割データｄ１を、アプリケーションヘッダｈ１、および、アプリケーションヘッダｈ２とは分けて、置換処理部３１ａに出力する。このとき、ヘッダ分離部４１ａは、図７で説明したデータ長を用いて、分割データｄ１の末尾を特定しても良い。同様の分離処理をアプリケーションヘッダｈ２〜ｈ８と、分割データｄ２〜ｄ８にも行う。この結果、ヘッダ分離部４１ａは、ステップＳ１２の右側に示すように、アプリケーションヘッダと分割データを分離されたデータとして置換処理部３１ａに出力している。なお、アプリケーションヘッダと分割データの間の分離は、置換処理部３１ａにおいて、アプリケーションヘッダと分割データとが、別個のデータであると認識できる任意の形式で、置換処理部３１ａに入力されることにより行われる。
【００３５】
ステップＳ１３は、置換処理部３１ａでの重複除去処理の例を示す。ステップＳ１３の右側は、置換処理部３１ａにアプリケーションヘッダｈ１〜ｈ８と分割データｄ１〜ｄ８が分離されたデータとして入力される様子を示している。図８の例では、転送装置２０ａが過去に、分割データｄ１〜ｄ８の各々と同じデータを転送装置２０ｂに送信しているものとする。一方、アプリケーションヘッダは、個々に異なる情報が含まれているので、転送装置２０ａは、アプリケーションヘッダｈ１〜ｈ８については、これまでに転送装置２０ｂに送信していない。換言すると、送信データテーブル５２ａには、以下の情報が含まれているとする。
分割データｄ１に対応付けられた識別子：ｉｄ１
分割データｄ２に対応付けられた識別子：ｉｄ２
分割データｄ３に対応付けられた識別子：ｉｄ３
分割データｄ４に対応付けられた識別子：ｉｄ４
分割データｄ５に対応付けられた識別子：ｉｄ５
分割データｄ６に対応付けられた識別子：ｉｄ６
分割データｄ７に対応付けられた識別子：ｉｄ７
分割データｄ８に対応付けられた識別子：ｉｄ８
なお、以下の説明では、転送装置２０ｂ中の受信データテーブル５５ｂにも、分割データｄ１〜ｄ８に対応付けて、分割データｄ１〜ｄ８の識別子が記憶されているとする。
【００３６】
置換処理部３１ａは、送信データテーブル５２ａに記録されていないアプリケーションヘッダｈ１〜ｈ８については重複除去を行わず、アプリケーションヘッダｈ１〜ｈ８を転送装置２０ｂに送信する。一方、分割データｄ１〜ｄ８については、置換処理部３１ａは、分割データｄ１〜ｄ８の代わりに各分割データの識別子を、転送装置２０ｂへの送信対象に設定する。このため、ステップＳ１３の左側に示すように、置換処理部３１ａが転送装置２０ｂへの送信対象に設定するデータは、アプリケーションヘッダｈ１〜ｈ８自体と、分割データｄ１〜ｄ８の識別子（ｉｄ１〜ｉｄ８）である。置換処理部３１ａは、送信対象に設定したデータを、送信部２１ａを介して、転送装置２０ｂに送信する。
【００３７】
転送装置２０ｂの受信部２２ｂは、転送装置２０ａから受信したデータを、復元処理部３２ｂに出力する。復元処理部３２ｂは、受信データテーブル５５ｂを用いて、復元処理を行う。前述のとおり、受信データテーブル５５ｂには、分割データｄ１〜ｄ８の識別子に分割データｄ１〜ｄ８が対応付けられているので、転送装置２０ｂは、転送装置２０ａから受信した識別子から、分割データｄ１〜ｄ８を復元できる。このため、転送装置２０ｂは、アプリケーションヘッダｈ１〜ｈ８と分割データｄ１〜ｄ８が、アプリケーションヘッダと分割データが交互になるように配置されたデータを復元できる。すなわち、転送装置２０ｂの復元処理部３２ｂの復元処理により、図８のステップＳ１２の右側に示すデータを復元できる。復元処理部３２ｂは、復元したデータを、送受信部２３を介して、通信装置１０ｂに送信する。このため、通信装置１０ｂは、データｄ１０を受信することができる。
【００３８】
図９は、第１の実施形態にかかる転送装置２０で行われる処理の例を説明するフローチャートである。なお、図９は、１つのアプリケーションヘッダとそのアプリケーションヘッダに対応付けられたデータが複数のパケットで送信される場合に行われる処理を示しているが、１つのパケットに複数のアプリケーションヘッダが含まれてもよい。
【００３９】
転送装置２０のヘッダ分離部４１は、受信パケット中のペイロードを取得する（ステップＳ２１）。ヘッダ分離部４１は、ペイロードに含まれているアプリケーションヘッダを、そのアプリケーションヘッダの最後まで読み込んでいるかを判定する（ステップＳ２２）。ペイロードの末尾がアプリケーションヘッダの途中である場合、ヘッダ分離部４１は、次の受信パケットのペイロードも読み込む（ステップＳ２２でＮｏ）。ヘッダ分離部４１は、アプリケーションヘッダを読み込むと、フロー情報テーブル５３を用いて、アプリケーションヘッダのサイズと、アプリケーションヘッダ間のデータ長（Ｘ）を取得する（ステップＳ２２でＹｅｓ、ステップＳ２３）。ヘッダ分離部４１は、読み込んだデータの先頭からアプリケーションヘッダの長さ分の位置から、データを読み込んでいると判定する。ヘッダ分離部４１は、読み込んでいるデータの長さが、アプリケーションヘッダ間のデータ長（Ｘ）以上であるかを判定する（ステップＳ２４）。読み込んでいるデータの長さが、アプリケーションヘッダ間のデータ長（Ｘ）に満たない場合、ヘッダ分離部４１は、所定の長さの後続データを取得する（ステップＳ２４でＮｏ、ステップＳ２５）。ここで、所定の長さは、アプリケーションヘッダ間のデータ長（Ｘ）から読み込んでいるデータの長さを差し引いて得られるデータ長である。一方、読み込んでいるデータの長さが、アプリケーションヘッダ間のデータ長（Ｘ）以上である場合、ヘッダ分離部４１は、アプリケーションヘッダを置換処理部３１に出力する（ステップＳ２４でＹｅｓ）。置換処理部３１は、アプリケーションヘッダに対する重複処理を行って、転送先に転送する（ステップＳ２６）。次に、ヘッダ分離部４１は、読み込んだデータを置換処理部３１に出力する。置換処理部３１は、入力されたデータに対する重複除去を行って、転送先に転送する（ステップＳ２７）。なお、図９のフローチャートは、１組のアプリケーションヘッダとそのアプリケーションヘッダに続くデータの処理の例を説明しており、データの末尾に至るまで、図９で示す処理が繰り返される。
【００４０】
以上説明したように、第１の実施形態にかかる転送装置２０は、データパケットのペイロード中のデータからアプリケーションヘッダを除いたデータと、アプリケーションヘッダを分けて重複除去を行う。従って、転送装置２０では、送信データ中にアプリケーションヘッダが挿入されても、アプリケーションヘッダ中の情報の差による重複除去の効率の低下を防ぐことができる。
【００４１】
＜第２の実施形態＞
第２の実施形態では、重複除去をさらに効率化するために、転送装置間でアプリケーションヘッダが送受信されない場合の例を説明する。
【００４２】
図１０は、第２の実施形態にかかる転送装置６０の構成の例を説明する図である。転送装置６０は、送信部２１、受信部２２、送受信部２３、パケット処理部６１、記憶部５０を備える。パケット処理部６１は、置換処理部３１、復元処理部３２、制御部６２を有する。制御部６２は、プロトコル判定部４２、ヘッダ分離部６３、ヘッダ生成部６４を有する。また、記憶部５０は、キャッシュ５１、送信データテーブル５２、ヘッダ情報テーブル５４、受信データテーブル５５、フロー情報テーブル６５を記憶する。
【００４３】
ヘッダ分離部６３は、データの送信側の転送装置６０で動作する。ヘッダ分離部６３は、送受信部２３を介して受信パケットを取得し、受信パケット中のペイロードに含まれているアプリケーションヘッダとデータを分離する。アプリケーションヘッダとデータを分離する手順は第１の実施形態と同様である。その後、ヘッダ分離部６３は、アプリケーションヘッダを廃棄し、データ部分を連続的に置換処理部３１に出力する。この処理により、置換処理部３１には、分割されたデータを結合した結合データが入力されることになる。ここで、結合データは、アプリケーションヘッダが挿入される前のデータと等価のデータである。すなわち、ヘッダ分離部６３は、受信パケットのペイロードから、アプリケーションヘッダを削除することにより、送信元の通信装置１０で送信対象とされているデータを一時的に復元する。結合データの生成例は図１２を参照しながら説明する。
【００４４】
ヘッダ生成部６４は、データの受信側の転送装置６０で動作する。ヘッダ生成部６４は、復元処理部３２によって復元されたデータにアプリケーションヘッダが含まれていない場合、アプリケーションヘッダの代替となる情報（代替情報）を生成する。ヘッダ生成部６４は、復元されたデータに代替情報を挿入し、代替情報の挿入後のデータを、宛先の通信装置１０に転送する。なお、代替情報は、データの宛先の通信装置１０において、アプリケーションヘッダの代替として使用される。
【００４５】
送信部２１、受信部２２、送受信部２３、置換処理部３１、復元処理部３２、プロトコル判定部４２で行われる処理は、第２の実施形態でも第１の実施形態と同様である。第２の実施形態において、キャッシュ５１、送信データテーブル５２、ヘッダ情報テーブル５４、受信データテーブル５５として記憶部５０に記憶される情報も、第１の実施形態と同様である。
【００４６】
第２の実施形態にかかる転送装置６０のハードウェア構成も図４に示すとおりである。パケット処理部６１はプロセッサ１０１によって実現され、記憶部５０は、メモリ１０２と外部記憶装置１０４によって実現される。また、送信部２１、受信部２２、送受信部２３はネットワーク接続装置１０５によって実現される。
【００４７】
図１１は、第２の実施形態が適用されるネットワークの例とフロー情報テーブル６５の例を説明する図である。フロー情報テーブル６５には、フローの送信元と宛先の組み合わせに対応付けて、そのフローでの通信に使用されるアプリケーション種別と、アプリケーションヘッダ間のデータの長さが格納される。ここで、アプリケーションヘッダ間のデータの長さは、転送装置６０と、その転送装置６０からデータを受信する通信装置１０との間で決定される値である。転送装置６０のヘッダ生成部６４は、アプリケーションヘッダ間のデータの長さごとに代替情報を挿入してから、通信装置１０にデータを転送する。例えば、図１１の例では、送信元アドレスがＩＰＡ（通信装置１０ａ）で、宛先アドレスがＩＰＢ（通信装置１０ｂ）であるフローは、ＣＩＦＳを用いた通信を行っており、転送装置６０が通信装置１０ｂ宛てのデータに挿入する代替情報間の間隔はＹ１である。また、通信装置１０ｂ宛てのデータに挿入される代替情報は、ＣＩＦＳのアプリケーションヘッダの代替えとなる情報である。一方、送信元アドレスがＩＰＣ（通信装置１０ｃ）で、宛先アドレスがＩＰＤ（通信装置１０ｄ）であるフローは、ＨＴＴＰを用いた通信を行っており、転送装置６０が通信装置１０ｄ宛てのデータに挿入する代替情報間の間隔はＹ２である。なお、通信装置１０ｄ宛てのデータに挿入される代替情報は、ＨＴＴＰヘッダの代替えとなる情報である。
【００４８】
以下、図１１のＮ１に示すように、通信装置１０ａが通信装置１０ｂにデータを転送する際に、転送装置６０ａと転送装置６０ｂがデータ転送を中継する場合を例として説明する。
【００４９】
図１２は、第２の実施形態にかかる転送処理の例を説明する図である。ステップＳ３１は、通信装置１０ａでのデータｄ１０の送信処理の例であり、図８のステップＳ１１を参照しながら説明した処理と同様である。図１２では、アプリケーションヘッダを、斜線の入った長方形で示す。
【００５０】
ステップＳ３２は、転送装置６０ａ中のヘッダ分離部６３ａの処理の例を示す。ヘッダ分離部６３ａは、送受信部２３ａを介して、通信装置１０ｂ宛てのパケットのペイロードを取得する。このため、ヘッダ分離部６３ａには、ステップＳ３２の左側に示すように、アプリケーションヘッダとデータが交互に連続したデータが入力される。
【００５１】
ヘッダ分離部６３ａは、適宜、ヘッダ情報テーブル５４ａの情報を用いて、各アプリケーションヘッダを特定する。アプリケーションヘッダの特定方法は第１の実施形態でのヘッダ分離部４１での処理と同様である。ヘッダ分離部６３ａは、アプリケーションヘッダｈ１の先頭から末尾までを特定し、アプリケーションヘッダｈ１を廃棄する。その後、アプリケーションヘッダｈ１の後に含まれる分割データｄ１を読み込む。さらに、ヘッダ分離部６３ａは、分割データｄ１の後に含まれているアプリケーションヘッダｈ２を特定し、アプリケーションヘッダｈ２を削除する。このように、ヘッダ分離部６３ａは、ペイロード中のアプリケーションヘッダを削除し、分割データを順に読み込む。アプリケーションヘッダｈ１〜ｈ８の全てを削除し、分割データｄ１〜ｄ８を連続的に読み込むことにより、ヘッダ分離部６３ａは、ステップＳ３２の右側に示すように、データｄ１０を一時的に復元する。ヘッダ分離部６３ａは、復元したデータｄ１０を、置換処理部３１ａに出力する。
【００５２】
ステップＳ３３は、置換処理部３１ａでの重複除去処理の例を示す。ステップＳ３３の右側は、置換処理部３１ａにデータｄ１０が入力されたときの様子を示している。図１２の例では、データｄ１０は、データｄ１１とデータｄ１２の組み合わせである場合を示している。なお、データｄ１１とデータｄ１２のいずれも、分割データｄ１〜ｄ８とは一致しておらず、転送装置６０ａは、データｄ１１とデータｄ１２のいずれも、今までに転送装置６０ｂに宛てて送信していないとする。置換処理部３１ａは、受信部２２ａを介して、データｄ１０の先頭のデータｄ１１を、識別子ｉｄ１１に対応付けて、転送装置６０ｂに転送する。データｄ１１の後に続くデータｄ１２も、識別子ｉｄ１２に対応付けて転送装置６０ｂに転送される。さらに、置換処理部３１ａは、送信データテーブル５２ａに以下の情報を追加する。
データｄ１１に対応付けられた識別子：ｉｄ１１
データｄ１２に対応付けられた識別子：ｉｄ１２
なお、転送装置６０ｂが備える受信データテーブル５５ｂも、データの受信に伴い、データｄ１１、ｄ１２に対応付けて、各データの識別子が記憶される。
【００５３】
次に、置換処理部３１ａは、転送対象のデータ中に２回目に含まれているデータｄ１２を、送信データテーブル５２ａに基づいて、識別子ｉｄ１２に置き換えて転送装置６０ｂに転送する。同様に、置換処理部３１ａは、データｄ１１を識別子ｉｄ１１に置き換えたデータを転送装置６０ｂに転送する。なお、図１２では、データの対応関係を見やすくするために、データｄ１１に対応する情報にＡ、データｄ１２に対応する情報にＢと表示している。
【００５４】
ステップＳ３４は、転送装置６０ｂの復元処理部３２ｂにおける復元処理の例を示している。復元処理部３２ｂは、受信部２２ｂを介して、転送装置６０ａから転送されてきたパケットを取得するので、ステップＳ３４の左側に示すように、データｄ１１、データｄ１２、識別子ｉｄ１１、識別子ｉｄ１２を取得する。復元処理部３２ｂは、受信データテーブル５５ｂを用いて、識別子ｉｄ１１からデータｄ１１を復元し、識別子ｉｄ１２からデータｄ１２を復元する。ステップＳ３４中の右側に、復元によって得られたデータの例を図示する。このため、復元処理部３２ｂは、データｄ１１、データｄ１２、データｄ１２、データｄ１１の順に連続したデータ（データｄ１０）が通信装置１０ｂ宛てのデータであると認識する。復元処理部３２ｂは、復元後のデータをヘッダ生成部６４ｂに出力する。なお、復元処理部３２ｂは、データの送信元と宛先の情報も、データと合わせてヘッダ生成部６４ｂに通知する。
【００５５】
ステップＳ３５は、ヘッダ生成部６４ｂにおける処理の例を示している。ヘッダ生成部６４ｂは、復元処理部３２ｂから入力されたデータにアプリケーションヘッダが含まれているかを判定する。図１２の例では、データｄ１０にはアプリケーションヘッダが含まれていない。そこで、ヘッダ生成部６４ｂは、データの宛先の通信装置１０ｂでのデータｄ１０の受信処理に使用可能な代替情報を生成するための処理を行う。まず、ヘッダ生成部６４ｂは、復元処理部３２ｂから入力されたデータの送信元アドレス（ＩＰＡ）と宛先アドレス（ＩＰＢ）の組み合わせをキーとしてフロー情報テーブル６５を参照して、フローで使用されるアプリケーションの種類を特定する。
【００５６】
さらに、送信元アドレス（ＩＰＡ）と宛先アドレス（ＩＰＢ）の組み合わせに対応づけられた代替情報間の間隔もフロー情報テーブル６５ｂから特定できるかを判定する。ヘッダ生成部６４ｂは、フロー情報テーブル６５ｂから代替情報間の間隔が特定できれば特定した間隔を使用する。一方、フロー情報テーブル６５ｂに、処理対象のフローでの代替情報間の間隔が含まれていない場合、ヘッダ生成部６４ｂは、フローの宛先となる通信装置１０ｂとの間でネゴシエーション処理を行い、アプリケーションヘッダ間に含めるデータの長さを決定する。なお、通信装置１０ｂと転送装置６０ｂの間でのネゴシエーションで決定されるアプリケーションヘッダの間隔は、転送装置６０ｂがアプリケーションヘッダの代用として生成する代替情報の間隔である。ヘッダ生成部６４ｂは、代替情報の間に含めるデータの長さをフロー情報テーブル６５ｂに記録する。以下の説明では、転送装置６０ｂが通信装置１０ｂに転送するデータに対して、代替情報をＹ１ごとに挿入することが決定されたとする。
【００５７】
通信装置１０ｂが使用するアプリケーションヘッダの種類と、アプリケーションヘッダ間に含めるデータの長さが特定できると、ヘッダ生成部６４は、アプリケーションヘッダの代替えとなる代替情報を生成する。代替情報は、アプリケーションヘッダと同じフォーマットで生成される。なお、ヘッダ生成部６４ｂは、アプリケーションヘッダを生成する際に、適宜、ヘッダ情報テーブル５４ｂを使用する。ヘッダ生成部６４ｂは、データｄ１０の前に最初の代替情報を含め、データｄ１０の先頭からＹ１の位置に２つ目の代替情報を含める。同様に、ヘッダ生成部６４ｂは、データｄ１０をＹ１毎に区切って、代替情報を含める。このため、ステップＳ３５の左側に示すように、代替情報の間隔ごとに区切られたデータが生成される。ステップＳ３５に示す例では、データｄ１０は分割データｄ２１〜ｄ２８に区切られ、各分割データの前に代替情報が含められている。代替情報を、縦線の入った長方形で示す。なお、分割データｄ２１〜ｄ２８の長さは転送装置６０ｂと通信装置１０ｂとの間の通信の整合が取れるデータ長であるが、通信装置１０ａも含めて決められたデータ長ではない。このため、分割データｄ２１〜ｄ２８は分割データｄ１〜ｄ８と一致しなくてもよく、また、分割データｄ２１〜ｄ２８は分割データｄ１〜ｄ８と一致してもよい。ヘッダ生成部６４ｂは、処理後のデータを送受信部２３ｂに出力する。
【００５８】
送受信部２３ｂは、ヘッダ生成部６４ｂから入力されたデータを通信装置１０ｂに送信する。このため、通信装置１０ｂには、ステップＳ３６に示す情報が到達する。通信装置１０ｂは、データ転送に使用しているアプリケーションと代替情報を用いて、分割データｄ２１〜ｄ２８と各分割データに付されている代替情報を処理することにより、データｄ１０を取得する。
【００５９】
以上説明したように、第２の実施形態では、転送装置６０は、一時的に送信元の通信装置１０ａが宛先の通信装置１０ｂへの送信対象としているデータｄ１０を再現している。このため、送信側の通信装置１０ａでの分割データの生成方法によって重複除去の効率が低下することも防ぐことができる。例えば、転送装置６０ａはデータｄ１１とデータｄ１２を転送装置６０ｂに送信したことがあるが、分割データｄ１〜ｄ８を転送装置６０ｂに転送したことがないとする。この場合、第１の実施形態のように、分割データｄ１〜ｄ８のままで重複除去を行うと、転送装置６０ａは転送装置６０ｂに分割データｄ１〜ｄ８を送信することになる。しかし、第２の実施形態では、送信対象のデータｄ１０を分割データｄ１〜ｄ８に基づいて復元してから重複除去を行うことにより、送信対象のデータｄ１０には、送信済みのデータｄ１１とデータｄ１２が含まれていることを特定できる。従って、転送装置６０は、通信装置１０で生成される分割データの大きさの変更などによる重複除去の非効率化を防ぐことができる。
【００６０】
なお、図１２に示した処理は一例であり、例えば、転送装置６０ｂと通信装置１０ｂとの間の転送処理の際に使用される代替情報の数などは実装に応じて任意に変更されうる。例えば、転送装置６０ｂと通信装置１０ｂの間でのネゴシエーションにより、１つのアプリケーションヘッダ（代替情報）の後に続けることができるデータ長がデータｄ１０と同じ長さに設定されてもよい。この場合、転送装置６０ｂは、データｄ１０に１つの代替情報を付し、データｄ１０を分割せずに通信装置１０ｂに送信することができる。
【００６１】
図１３は、データの送信側の転送装置６０で行われる処理の例を説明するフローチャートである。ステップＳ４１〜Ｓ４５で行われる処理は、図９のステップＳ２１〜Ｓ２５での処理と同様である。ただし、ステップＳ４２〜Ｓ４５の処理はヘッダ分離部６３によって行われる。ヘッダ分離部６３は、アプリケーションヘッダを除去して、読み込んだデータをキャッシュ５１に保存する（ステップＳ４６）。ヘッダ分離部６３は、キャッシュ５１に保存しているデータ量が予め設定された所定値を超えているかを判定する（ステップＳ４７）。保存しているデータ量が所定値を超えていない場合、ヘッダ分離部６３は、ステップＳ４１以降の処理を繰り返す（ステップＳ４７でＮｏ）。保存しているデータ量が所定値を超えると、ヘッダ分離部６３は、読み込んだデータに対する重複除去を行って転送する（ステップＳ４８）。なお、ステップＳ４７で使用される所定値は、規定値であってもよく、また、フローごとに転送されるファイルの大きさなどに基づいて決定される値であってもよい。所定値がフローごとに転送されるファイルの大きさなどに基づいて決定される場合、転送装置６０は、予め、送信されるファイルサイズの大きさを特定し、特定した値に基づいて、所定値を設定する。なお、ファイルサイズの大きさの特定方法の例については、図１６を参照しながら説明する。
【００６２】
図１４は、データの受信側の転送装置６０で行われる処理の例を説明するフローチャートである。なお、図１４は処理の一例であり、例えば、ステップＳ５１とＳ５２の順序が互いに変更されるなどの変形が行われても良い。
【００６３】
ヘッダ生成部６４は、受信側の通信装置１０との間で、アプリケーションヘッダ間に含めるデータ長（Ｙ）を決定する（ステップＳ５１）。復元処理部３２は、送信側の転送装置６０から受信した転送パケットのペイロードと、受信データテーブル５５中のデータを用いて、復元データを生成する（ステップＳ５２）。ヘッダ分離部６３は、復元データの転送に使用するアプリケーションの種類と、アプリケーションヘッダ間のデータ長を特定する（ステップＳ５３）。ヘッダ分離部６３は、復元データのうち、転送用のデータパケットの生成に使用されていない部分の先頭からデータ長（Ｙ）分のデータを切り取る（ステップＳ５４）。ヘッダ分離部６３は、切り取ったデータに、特定したアプリケーションのアプリケーションヘッダの代替えとなる代替情報を付加して、データパケットを生成する（ステップＳ５５）。送受信部２３は、データパケットを受信側の通信装置１０に転送する（ステップＳ５６）。ヘッダ分離部６３は、復元データの転送が終了したかを判定する（ステップＳ５７）。復元データの転送が終了していない場合、ヘッダ分離部６３は、ステップＳ５４以降の処理を繰り返す。
【００６４】
第２の実施形態にかかる転送装置６０は、データパケットのペイロード中のデータから、アプリケーションヘッダを除去することにより、送信元の通信装置１０が宛先の通信装置１０に送信しようとしているデータを一時的に復元している。このため、第２の実施形態では、送信元の通信装置１０でのアプリケーションヘッダの挿入のために生成された分割データよりも大きなデータサイズで重複除去処理を行うことができる。換言すると、第２の実施形態では、アプリケーションヘッダや送信元での分割データの切り分け方による重複除去の効率の低下を防ぐことができる。さらに、第２の実施形態では、転送装置６０間ではアプリケーションヘッダが送受信されないので、第１の実施形態に比べて、転送装置６０間で送受信されるデータの量を削減できるという利点もある。
【００６５】
＜第３の実施形態＞
通信装置１０が使用するアプリケーションによっては、通信装置１０から送信されるパケット中では、転送される分割データの順序が元のデータとは変更される場合もありうる。この場合、アプリケーションヘッダには、そのアプリケーションヘッダが付加された分割データについての元のデータ中での位置を示す情報が含まれている。図７で述べたシーケンス番号は、分割データの位置を示す情報の例である。受信側の通信装置１０では、アプリケーションヘッダ中の情報に応じてデータの位置を特定することができるので、データの順序が変更されても元のデータを受信することができるが、データの順序が変更されると、転送装置での重複除去の効率が低下することもある。そこで、第３の実施形態では、転送装置において、アプリケーションによる順序の変更が行われた場合に、アプリケーションヘッダの除去とともにデータの順序の変更を行うことにより、送信対象のデータを復元する場合について説明する。
【００６６】
図１５は、第３の実施形態にかかる転送装置７０の構成の例を説明する図である。転送装置７０は、送信部２１、受信部２２、送受信部２３、パケット処理部７１、記憶部５０を備える。パケット処理部７１は、置換処理部３１、復元処理部３２、制御部７２を有する。制御部７２は、プロトコル判定部４２、順序変更部７３、ヘッダ生成部６４を有する。また、記憶部５０は、キャッシュ５１、送信データテーブル５２、ヘッダ情報テーブル５４、受信データテーブル５５、フロー情報テーブル７４を記憶する。
【００６７】
順序変更部７３は、データの送信側の転送装置７０で動作する。順序変更部７３は、送受信部２３を介して受信パケットを取得し、受信パケット中のペイロードに含まれているアプリケーションヘッダとデータを分離する。アプリケーションヘッダとデータを分離する手順は第１の実施形態と同様である。その後、順序変更部７３は、データ部分をアプリケーションヘッダで指定された順序に結合し、アプリケーションヘッダを廃棄する。順序変更部７３は、得られた結合データを置換処理部３１に出力する。ここで、結合データは、アプリケーションヘッダの挿入と、分割データの順序の変更が行われる前の送信対象のデータと等価のデータである。すなわち、順序変更部７３は、受信パケットのペイロードから抽出した分割データを、アプリケーションヘッダで指定された順序に並べ替えることにより、送信元の通信装置１０で送信対象とされているデータを一時的に復元する。結合データの生成例は図１７を参照しながら説明する。
【００６８】
送信部２１、受信部２２、送受信部２３、置換処理部３１、復元処理部３２、プロトコル判定部４２で行われる処理は、第３の実施形態でも第１の実施形態と同様である。また、ヘッダ生成部６４で行われる処理は、第３の実施形態でも第２の実施形態と同様である。第３の実施形態において、キャッシュ５１、送信データテーブル５２、ヘッダ情報テーブル５４、受信データテーブル５５として記憶部５０に記憶される情報も、第１の実施形態と同様である。
【００６９】
第３の実施形態にかかる転送装置７０のハードウェア構成も図４に示すとおりである。パケット処理部７１はプロセッサ１０１によって実現され、記憶部５０は、メモリ１０２と外部記憶装置１０４によって実現される。また、送信部２１、受信部２２、送受信部２３はネットワーク接続装置１０５によって実現される。
【００７０】
図１６は、第３の実施形態が適用されるネットワークの例と、フロー情報テーブル７４の例を説明する図である。以下、図１６のネットワークＮ２に示すように、通信装置１０ａが通信装置１０ｂにデータを転送する際に、転送装置７０ａと転送装置７０ｂがデータ転送を中継するものとする。データの送信側の通信装置１０ａとデータの宛先となる通信装置１０ｂの間でファイル転送を開始する際に、データを送受信の条件を決定するためのネゴシエーションが行われる。ここで、転送装置７０ａと転送装置７０ｂは、通信装置１０ａと通信装置１０ｂの間でのネゴシエーションに使用される制御パケットも中継するので、ネゴシエーションに使用される制御パケットを受信する。このとき、各転送装置７０の送受信部２３や受信部２２は、ネゴシエーションに使用される制御情報を受信すると、受信した制御パケットをプロトコル判定部４２に出力する。プロトコル判定部４２は、入力された制御パケットから、適宜、送受信されるファイルのサイズ、アプリケーションヘッダ間に含めるデータ長などの情報を取得する。例えば、送受信されるファイルのサイズなどの情報の取得の際に、ＳＢＭ２  ＱＵＥＲＹ＿ＩＮＦＯ  Ｒｅｑｕｅｓｔ等のパケットが使用され得る。ＳＢＭ２  ＱＵＥＲＹ＿ＩＮＦＯ  Ｒｅｑｕｅｓｔが使用される場合、パケットの送受信に関するコマンドの情報からこれらの情報が取得される。なお、ファイルサイズなどの情報の取得方法や、ファイルサイズなどの情報の取得に使用される制御パケットの種類は実装に応じて任意に変更され得る。
【００７１】
プロトコル判定部４２は、送受信されるファイルのサイズと、アプリケーションヘッダ間に含めるデータ長を用いて、送受信されるデータのシーケンス数の最大値を求め、得られたシーケンス数の最大値をフロー情報テーブル７４に記録する。例えば、プロトコル判定部４２は、以下の式から、最大シーケンス番号を求める。
ＳＮｍａｘ＝ｃｅｉｌ（ＦＳ／Ｌ）＋ＳＮｍｉｎ
ここで、ＳＮｍａｘはシーケンス数の最大値、ＦＳは送信対象のファイルサイズ、Ｌはアプリケーションヘッダ間に含められるデータ長、ｃｅｉｌ（）は天井関数、ＳＮｍｉｎはシーケンス数の最小値である。
【００７２】
図１７は、第３の実施形態にかかる転送処理の例を説明する図である。ステップＳ６１は、通信装置１０ａでのデータｄ１０の送信処理の例である。図１７の例では、通信装置１０ａは、データｄ１０を分割データｄ１〜ｄ８の８つに分けて通信装置１０ｂに送信する。ここで、データｄ１０の先頭に近いほど、分割データの記号中の数字が小さいものとする。すなわち、分割データｄ１は、データｄ１０の先頭を含み、分割データｄ８はデータｄ１０の末尾を含むものとする。各アプリケーションヘッダには、そのアプリケーションヘッダの符号の数字部分と同じ値がシーケンス番号として含まれているとする。例えば、シーケンス番号＝８を表すアプリケーションヘッダｈ８に、分割データｄ８が対応付けられている。また、分割データｄ７はシーケンス番号＝７、分割データｄ６はシーケンス番号＝６、分割データｄ５はシーケンス番号＝５、分割データｄ４はシーケンス番号＝４、分割データｄ３はシーケンス番号＝３、分割データｄ２はシーケンス番号＝２に対応付けられる。同様に、シーケンス番号＝１を表すアプリケーションヘッダｈ１に、分割データｄ１が対応付けられている。通信装置１０ａは、分割データを、対応するアプリケーションヘッダとともに、分割データｄ８、ｄ７、ｄ６、ｄ５、ｄ４、ｄ３、ｄ２、ｄ１の順に通信装置１０ｂに向けて送信したとする。
【００７３】
ステップＳ６２は、転送装置７０ａ中の順序変更部７３ａの処理の例を示す。順序変更部７３ａは、送受信部２３ａを介して、通信装置１０ｂ宛てのパケットのペイロードを取得する。このため、順序変更部７３ａには、ステップＳ６２の左側に示すように、アプリケーションヘッダと分割データが交互に連続したデータが入力される。また、分割データｄ８、ｄ７、ｄ６、ｄ５、ｄ４、ｄ３、ｄ２、ｄ１の順に、転送装置７０ａに送信されてきている。
【００７４】
順序変更部７３ａは、適宜、ヘッダ情報テーブル５４ａの情報を用いて、各アプリケーションヘッダを特定する。アプリケーションヘッダの特定方法は第１の実施形態でのヘッダ分離部４１ａでの処理と同様である。順序変更部７３ａは、各アプリケーションヘッダｈ８を読み込んで、シーケンス番号を抽出する。例えば、順序変更部７３ａは、アプリケーションヘッダｈ８を読み込んで、アプリケーションヘッダｈ８に含まれているシーケンス番号を抽出する。ここでは、アプリケーションヘッダｈ８中のシーケンス番号は８である。順序変更部７３ａは、フロー情報テーブル７４ａを参照することにより、最終シーケンス番号（ＳＮｍａｘ）のデータを受信したと判定する。そこで、最少シーケンス番号（ＳＮｍｉｎ）に対応付けられた分割データから、最終シーケンス番号に対応付けられた分割データまでの各分割データを受信するまで待ち合わせる。ステップＳ６２の例では、最少シーケンス番号に対応付けられた分割データから最終シーケンス番号に対応付けられた分割データまでの全てを受信している。そこで、順序変更部７３ａは、各分割データを、その分割データに対応付けられたシーケンス番号の順序に入れ替えるとともに、アプリケーションヘッダを削除する。このため、ステップＳ６２の中央に示すように、分割データが分割データｄ１、ｄ２、ｄ３、ｄ４、ｄ５、ｄ６、ｄ７、ｄ８の順に並べ替えられる。順序変更部７３ａは、並べ替えた分割データを、元のデータの順番に結合する。このため、順序変更部７３ａは、ステップＳ６２の右側に示すように、送信元の通信装置１０ａが通信装置１０ｂに送信する対象のデータ（データｄ１０）を復元する。順序変更部７３ａは、復元したデータｄ１０を、置換処理部３１ａに出力する。
【００７５】
ステップＳ６３は、復元処理部３２ａで行われる重複除去の例と、転送装置７０ｂへの転送処理の例を示す。ステップＳ６３の処理は、図１２のステップＳ３３を参照しながら説明した処理と同様である。受信側の転送装置７０ｂで行われる処理は第２の実施形態と同様である。このため、図１２のステップＳ３４〜Ｓ３６を参照しながら説明した処理により、通信装置１０ｂはデータｄ１０を取得する。
【００７６】
なお、図１７を参照しながら説明した処理は一例であり、実装に応じて送信側の転送装置７０で行われる処理は変更され得る。例えば、順序変更部７３は、分割データｄ１〜ｄ８をシーケンス番号どおりに結合したデータｄ１０を復元せず、個々の分割データをシーケンス番号順に置換処理部３１に出力しても良い。この場合、置換処理部３１に個々の分割データがシーケンス番号順に入力されることにより、置換処理部３１において、送信対象とされているデータｄ１０が再現される。個々の分割データがシーケンス番号順に置換処理部３１に出力される場合の処理の例を、図１８を参照しながら説明する。
【００７７】
図１８は、第３の実施形態にかかる転送装置７０で行われる処理の例を説明するフローチャートである。図１８は、送信側の転送装置７０の処理の例を表わすフローチャートである。図１８において、変数ｍは処理を行ったアプリケーションヘッダの数の計数に使用される。一方、定数Ｍは、処理対象のフローにおいて、送信元の通信装置１０から送信されるデータに付されるシーケンス番号の最大値である。なお、図１８は処理の一例を示しており、例えば、ステップＳ７１とＳ７２の順序は互いに変更され得る。
【００７８】
順序変更部７３は、変数ｍを１に設定する（ステップＳ７１）。プロトコル判定部４２は、処理対象のフローの送信元の通信装置１０と宛先の通信装置１０との間で行われるネゴシエーションに使用される制御コマンドを読み込み、送信対象のシーケンス番号の最大値（Ｍ）と最小値を取得する（ステップＳ７２、Ｓ７３）。順序変更部７３は、ｍ番目のアプリケーションヘッダと、ｍ番目のアプリケーションヘッダを用いて送信されるデータを読み込む（ステップＳ７４）。順序変更部７３は、ｍ番目のアプリケーションヘッダ中のシーケンス番号を取得する（ステップＳ７５）。順序変更部７３は、ｍ番目のアプリケーションヘッダを用いて送信されるデータを、取得したシーケンス番号に対応付けて、キャッシュ５１に保存する（ステップＳ７６）。順序変更部７３は、変数ｍを１つインクリメントする（ステップＳ７７）。順序変更部７３は、変数ｍが送信対象のシーケンス番号の最大値Ｍを超えたかを判定する（ステップＳ７８）。変数ｍが送信対象のシーケンス番号の最大値Ｍ以下の値である場合、順序変更部７３は、ステップＳ７４以降の処理を繰り返す（ステップＳ７８でＮｏ）。一方、変数ｍが送信対象のシーケンス番号の最大値Ｍを超えると、順序変更部７３は、キャッシュ５１に保存しているデータをシーケンス番号順に置換処理部３１に出力する（ステップＳ７８でＹｅｓ、ステップＳ７９）。置換処理部３１は重複除去を行い、重複除去後のデータを転送するための転送パケットを生成する（ステップＳ８０）。置換処理部３１は、送信部２１を介して、受信側の転送装置７０に、転送パケットを転送する（ステップＳ８１）。
【００７９】
図１９は、転送処理で実際に転送されるデータ量のシミュレーション結果を説明する図である。図１９は、通信装置１０ａが通信装置１０ｂに、２台の重複除去装置を介してファイルを再送する場合に、重複除去装置の間で転送されるデータ量を示している。通信装置１０ａが通信装置１０ｂに再送しようとするファイル（再送ファイル）の大きさが１０メガバイトであるとする。なお、再送ファイルは、通信装置１０ａが既に、重複除去装置を介して、通信装置１０ｂに送信したことのあるファイルであり、かつ、通信装置１０ａから通信装置１０ｂに再送信されるファイルである。
【００８０】
通信装置１０ａが再送ファイルを通信装置１０ｂに再送する際に、重複除去が完全に行われたとすると、図１９の理論値に示すように、重複除去装置の間では、４００キロバイトのデータが送受信される。一方、ＣＩＦＳを用いて再送ファイルが通信装置１０ａから通信装置１０ｂに再送される際に、アプリケーションヘッダとデータ部分を区別せずに重複除去を行った場合には、８５０キロバイトのデータが重複除去装置間で送受信されることになる。すなわち、ＣＩＦＳを用いて再送されたファイルの情報とＣＩＦＳのアプリケーションヘッダを区別せずに重複除去を行った結果、重複除去の効率が低下し、理論値の２．１倍以上のデータが重複除去装置間で送受信されることになる。
【００８１】
一方、通信装置１０ａと通信装置１０ｂの間の通信を、転送装置７０ａと転送装置７０ｂが中継する場合に転送装置７０ａと転送装置７０ｂの間で送受信されるデータ量は、図１９の右端に示すように４２３キロバイトである。従って、転送装置７０間で送受信されるデータ量は、理論値とほぼ等しい。また、転送装置７０間で送受信されるデータの量は、アプリケーションヘッダの存在やデータの順序入れ替えを考慮していない場合の重複処理に比べて、半分以下に削減されている。
【００８２】
このように、第３の実施形態では、アプリケーションヘッダと送信対象のデータを分けたうえに、アプリケーションによるデータの順序の変更を修正して、一時的に送信対象のデータを再現することにより、重複除去の効率の低下を効果的に防止できる。
【００８３】
さらに、第３の実施形態によると一時的に通信装置１０ａからの送信パケット間にギャップが発生しても、重複除去の効率が低下しないという効果もある。例えば、図１７に示す処理において、送信側の通信装置１０ａでの処理や通信装置１０ａと送信側の転送装置７０ａとの間の経路の通信状況などによって、分割データｄ８〜ｄ６までが転送装置７０ａ送信された後、通信装置１０ａからのデータの送信が中断されたとする。この場合、転送装置７０ａ中の順序変更部７３ａは、通信装置１０ａから送信される分割データのシーケンス番号の範囲を認識しているので、全てのデータが転送装置７０ａに到達していないと判定して、他の分割データの到着を待ち合わせることができる。
【００８４】
ここで、分割データｄ８〜ｄ６を用いても、転送済みのデータｄ１２が送信データに含まれていることが分からないとする。順序変更部７３ａを含まない装置では、他の分割データが到着するかを予測しないので、到着しているデータについての重複除去を行う。このため、一部のデータが未着のためにデータｄ１２が送信対象に含まれていることが認識されず、データｄ１２の一部のデータをデータのまま転送することになり、重複除去の効率が低下する。
【００８５】
一方、転送装置７０では、順序変更部７３は、通信装置１０ａから送信されてくるデータに付されているシーケンス番号を用いて、未着分の分割データを待ち合わせることにより、データｄ１１とデータｄ１２が送信データに含まれることを特定し、データｄ１１とｄ１２をいずれも識別子に変換して転送を行うことができる。従って、転送装置７０では、データの転送中にギャップが含まれていても、そのギャップに起因した重複除去の効率低下を防止することができる。
【００８６】
＜その他＞
なお、実施形態は上記に限られるものではなく、様々に変形可能である。以下にその例をいくつか述べる。
【００８７】
以上の説明では、ＣＩＦＳによる転送処理が行われる場合を具体例に用いて詳しく説明したが、各実施形態にかかる方法は、転送に使用されるアプリケーションがＣＩＦＳ以外の任意のプロトコルやアプリケーションであっても良い。例えば、ＨＴＴＰ、ＦＴＰ（File Transfer Protocol）を含む任意のプロトコルを用いた転送処理にも、各実施形態にかかる転送処理が適用されうる。
【００８８】
以上の説明で用いたテーブル中の情報要素やパケットのフォーマットなどは一例であり、実装に応じて任意に変更され得る。また、アプリケーションヘッダ中のシーケンス番号やデータ長などの情報は、専用のフィールドに格納されても良く、また、アプリケーションヘッダ中のコマンドなどの情報の一部として格納されていても良い。
【００８９】
以上の説明では、転送装置２０、６０、７０の動作に使用されるプログラムは外部記憶装置１０４に記憶されている場合を例として説明したが、プログラムは、任意の、記憶媒体に記録されうる。転送装置２０、６０、７０がコンピュータとして実現される場合、コンピュータは、記憶媒体に記録されたプログラムを読み込むことにより、転送装置として動作する。
【符号の説明】
【００９０】
５  ＷＡＮ
１０  通信装置
２０、６０、７０  転送装置
２１  送信部
２２  受信部
２３  送受信部
３０、６１、７１  パケット処理部
３１  置換処理部
３２  復元処理部
４０、６２、７２  制御部
４１、６３  ヘッダ分離部
４２  プロトコル判定部
５０  記憶部
５１  キャッシュ
５２  送信データテーブル
５３、６５、７４  フロー情報テーブル
５４  ヘッダ情報テーブル
５５  受信データテーブル
６４  ヘッダ生成部
７３  順序変更部
１０１  プロセッサ
１０２  メモリ
１０３  バス
１０４  外部記憶装置
１０５  ネットワーク接続装置
【図１】
2016181461.tif 000003
【図２】
2016181461.tif 000004
【図３】
2016181461.tif 000005
【図４】
2016181461.tif 000006
【図５】
2016181461.tif 000007
【図６】
2016181461.tif 000008
【図７】
2016181461.tif 000009
【図８】
2016181461.tif 000010
【図９】
2016181461.tif 000011
【図１０】
2016181461.tif 000012
【図１１】
2016181461.tif 000013
【図１２】
2016181461.tif 000014
【図１３】
2016181461.tif 000015
【図１４】
2016181461.tif 000016
【図１５】
2016181461.tif 000017
【図１６】
2016181461.tif 000018
【図１７】
2016181461.tif 000019
【図１８】
2016181461.tif 000020
【図１９】
2016181461.tif 000021
【手続補正書】
【提出日】平成29年11月10日(2017.11.10)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
通信装置から宛先装置に送信されたパケットを受信する送受信部と、
前記パケットにより受信したデータを、前記通信装置が前記宛先装置に送信する送信データと、前記送信データの送信処理を前記通信装置で行うアプリケーションが生成した制御情報に分離する制御部と、
前記宛先装置に向け、識別子に対応付けて送信したことがあるデータが前記送信データに含まれる場合、前記送信データ中で前記識別子に対応付けられたデータを前記識別子に置き換えた置換データを生成する置換処理部と、
前記送信データの代わりに前記置換データを前記宛先装置に向けて転送する送信部
を備えることを特徴とする転送装置であり、
前記制御部は、前記パケットにより受信したデータから前記制御情報を除いて得られるデータの各々を、前記パケットの先頭に近い順に結合した結合データを生成すると共に、前記制御情報を廃棄し、
前記置換処理部は、前記結合データ中で前記識別子に対応付けられたデータを前記識別子に置き換えることにより、前記置換データを生成する、
ことを特徴とする転送装置。
【請求項２】
前記制御部は、
前記パケットにより受信したデータ中の第１の制御情報の末尾から、前記第１の制御情報の次に挿入されている第２の制御情報の開始位置までの間のデータである対象データを特定し、
前記第１の制御情報、前記対象データ、前記第２の制御情報の各々を、互いに分離して前記置換処理部に出力し、
前記置換処理部は、前記対象データを、前記第１および第２の制御情報と分けて処理する
ことを特徴とする請求項１に記載の転送装置。
【請求項３】
前記制御部は、前記パケットのペイロードに含まれている情報から前記制御情報を除いて得られるデータの各々を、前記通信装置中のアプリケーションでの処理が行われる前の順序に結合させた結合データを生成すると共に、前記制御情報を廃棄し、
前記置換処理部は、前記結合データ中で前記識別子に対応付けられたデータを前記識別子に置き換えることにより、前記置換データを生成する
ことを特徴とする請求項１に記載の転送装置。
【請求項４】
他の転送装置から受信した受信データと、前記受信データを識別するために前記他の転送装置から通知された識別子である通知識別子を対応付けて記憶する記憶部と、
前記通信装置宛のデータを前記他の転送装置から受信すると、前記通信装置宛のデータに含まれている前記通知識別子を、前記通知識別子で識別される受信データに復元する復元処理部
をさらに備え、
前記送受信部は、前記復元処理部により得られたデータを前記通信装置に送信する
ことを特徴とする請求項１〜３のいずれか１項に記載の転送装置。
【請求項５】
前記制御部は、
前記通信装置宛のデータを前記他の転送装置から受信すると、前記通信装置宛のデータに、前記通信装置中のアプリケーションが制御に使用する制御データが含まれているかを判定し、
前記通信装置宛のデータに前記制御データが含まれていない場合、前記制御データの代替となる代替情報を前記通信装置宛のデータに挿入し、
前記送信部は、前記代替情報が挿入されたデータを前記通信装置に送信する
ことを特徴とする請求項４に記載の転送装置。
【請求項６】
通信装置と、
前記通信装置の通信先である宛先装置と、
前記通信装置と前記宛先装置の間の通信を中継する第１および第２の転送装置
を備え、
前記第１の転送装置は、
前記通信装置から前記宛先装置宛てのパケットを受信すると、前記パケットにより受信したデータを、前記通信装置が前記宛先装置に送信する送信データと、前記送信データの送信処理を前記通信装置で行うアプリケーションが生成した制御情報に分離し、
識別子に対応付けて前記第２の転送装置に送信したことがあるデータが前記送信データに含まれる場合、前記送信データ中で前記識別子に対応付けられたデータを前記識別子に置き換えた置換データを前記第２の転送装置に送信し、
前記第２の転送装置は、前記置換データを前記送信データに復元してから、前記宛先装置に送信する
ことを特徴とする通信システムであって、
前記第１の転送装置は、前記パケットにより受信したデータから前記制御情報を除いて得られる複数のデータを結合した結合データを生成すると共に、前記制御情報を廃棄し、
前記置換データは、前記結合データ中で前記識別子に対応付けられたデータを前記識別子に置換したデータであり、
前記第２の転送装置は、
前記第１の転送装置から受信したデータを用いて、前記結合データを復元し、
前記宛先装置での処理に使用されるアプリケーションが前記制御情報の代替として制御に使用する代替情報を生成し、
前記代替情報と前記結合データとを、前記宛先装置に送信する
ことを特徴とする通信システム。
【請求項７】
前記第１の転送装置は、
前記パケットにより受信したデータ中の第１の制御情報の末尾から、前記第１の制御情報の次に挿入されている第２の制御情報の開始位置までの間のデータである対象データを特定し、
前記第１の制御情報、前記対象データ、前記第２の制御情報の各々について、前記識別子を用いた置換処理を行う
ことを特徴とする請求項６に記載の通信システム。
【請求項８】
通信装置と、前記通信装置の通信先である宛先装置の間の通信が第１および第２の転送装置によって中継されるネットワークにおいて、
前記第１の転送装置は、
前記通信装置から前記宛先装置宛てのパケットを受信すると、前記パケットにより受信したデータを、前記通信装置が前記宛先装置に送信する送信データと、前記送信データの送信処理を前記通信装置で行うアプリケーションが生成した制御情報に分離し、
識別子に対応付けて前記第２の転送装置に送信したことがあるデータが前記送信データに含まれる場合、前記送信データ中で前記識別子に対応付けられたデータを前記識別子に置き換えた置換データを前記第２の転送装置に送信し、
前記第２の転送装置は、前記置換データを前記送信データに復元してから、前記宛先装置に送信する
ことを特徴とする通信方法であって、
前記第１の転送装置は、前記パケットにより受信したデータから前記制御情報を除いて得られる複数のデータを結合した結合データを生成すると共に、前記制御情報を廃棄し、
前記置換データは、前記結合データ中で前記識別子に対応付けられたデータを前記識別子に置換したデータであり、
前記第２の転送装置は、
前記第１の転送装置から受信したデータを用いて、前記結合データを復元し、
前記宛先装置での処理に使用されるアプリケーションが前記制御情報の代替として制御に使用する代替情報を生成し、
前記代替情報と前記結合データとを、前記宛先装置に送信する
ことを特徴とする通信方法。
【請求項９】
前記第１の転送装置は、
前記パケットにより受信したデータ中の第１の制御情報の末尾から、前記第１の制御情報の次に挿入されている第２の制御情報の開始位置までの間のデータである対象データを特定し、
前記第１の制御情報、前記対象データ、前記第２の制御情報の各々について、前記識別子を用いた置き換え処理を行う
ことを特徴とする請求項８に記載の通信方法。
【請求項１０】
通信装置と宛先装置との間の通信を中継する転送装置に、
前記通信装置から前記宛先装置に送信されたパケットを受信し、
前記パケットにより受信したデータを、前記通信装置が前記宛先装置に送信する送信データと、前記送信データの送信処理を前記通信装置で行うアプリケーションが生成した制御情報に分離し、
前記宛先装置に向け、識別子に対応付けて送信したことがあるデータが前記送信データに含まれる場合、前記送信データ中で前記識別子に対応付けられたデータを前記識別子に置き換えた置換データを生成し、
前記送信データの代わりに前記置換データを前記宛先装置に向けて転送し、
他の転送装置から受信した受信データと、前記受信データを識別するために前記他の転送装置から通知された識別子である通知識別子を対応付けて記憶し、
前記通信装置宛のデータを前記他の転送装置から受信すると、前記通信装置宛のデータに含まれている前記通知識別子を、前記通知識別子で識別される受信データに置換することにより復元データを生成し、
前記復元データに前記制御情報が含まれていない場合、前記制御情報の代替となる代替情報を前記復元データに挿入し、
前記代替情報が挿入された復元データを前記通信装置に送信する、
処理を行わせることを特徴とする通信プログラム。
【請求項１１】
前記転送装置に、
前記パケットにより受信したデータから前記制御情報を除いて得られるデータを結合させた結合データを生成し、
前記制御情報を廃棄し、
前記結合データ中で前記識別子に対応付けられたデータを前記識別子に置き換えることにより、前記置換データを生成する
処理を行わせることを特徴とする請求項１０に記載の通信プログラム。
【国際調査報告】
2016181461.tif 000022
2016181461.tif 000023
2016181461.tif 000024