(57)【特許請求の範囲】
【請求項１】
通信装置であって、
所定のパケットから分割された第１のフラグメントパケットを受信する受信手段と、
前記受信手段により受信された前記第１のフラグメントパケットの、前記所定のパケットにおける位置を示す第１の下端アドレス情報と第１の上端アドレス情報とを取得する取得手段と、
前記受信手段により前記第１のフラグメントパケットを受信する前に、既に受信済みの第２のフラグメントパケットの前記所定のパケットにおける位置示す第２の下端アドレス情報と第２の上端アドレス情報とを記憶する記憶手段と、
前記取得手段により取得された前記第１の下端アドレス情報と前記第１の上端アドレス情報、および、前記記憶手段により記憶された前記第２の下端アドレス情報と前記第２の上端アドレス情報とに基づいて、前記記憶手段に記憶させる受信済みのフラグメントパケットの前記所定のパケットにおける位置を示すアドレス情報を変更する変更手段と、
前記変更手段により変更されたアドレス情報と、受信済みのフラグメントパケットの受信範囲を示す情報であるウィンドウ左端情報と受信済みＡＣＫ番号とを比較する比較手段と、
を有することを特徴とする通信装置。
【請求項２】
他の通信装置から受信したパケットが前記第１のフラグメントパケットであるか否かを、当該パケットのヘッダ情報に基づいて判定する第１の判定手段を更に有することを特徴とする請求項１に記載の通信装置。
【請求項３】
前記取得手段は、前記第１の判定手段の判定結果に応じて、前記第１のフラグメントパケットの前記第１の下端アドレス情報と前記第１の上端アドレス情報とを取得することを特徴とする請求項２に記載の通信装置。
【請求項４】
前記第１のフラグメントパケットのヘッダ情報に前記所定のパケットのパケット長を示す長さ情報が含まれていた場合、前記長さ情報と、前記変更手段により変更されたアドレス情報とに基づいて、前記所定のパケットの受信が完了したことを判定する第２の判定手段を更に有することを特徴とする請求項１乃至３のいずれか１項に記載の通信装置。
【請求項５】
通信装置の処理方法であって、
所定のパケットから分割された第１のフラグメントパケットを受信する受信工程と、
前記受信工程において受信された前記第１のフラグメントパケットの、前記所定のパケットにおける位置を示す第１の下端アドレス情報と第１の上端アドレス情報とを取得する取得工程と、
前記受信工程において前記第１のフラグメントパケットを受信する前に、既に受信済みの第２のフラグメントパケットの前記所定のパケットにおける位置示す第２の下端アドレス情報と第２の上端アドレス情報とを記憶手段に記憶する記憶工程と、
前記取得工程において取得された前記第１の下端アドレス情報と前記第１の上端アドレス情報、および、前記記憶工程において記憶された前記第２の下端アドレス情報と前記第２の上端アドレス情報とに基づいて、前記記憶手段に記憶させる受信済みのフラグメントパケットの前記所定のパケットにおける位置を示すアドレス情報を変更する変更工程と、  前記変更工程において変更されたアドレス情報と、受信済みのフラグメントパケットの受信範囲を示す情報であるウィンドウ左端情報と受信済みＡＣＫ番号とを比較する比較工程と、
を有することを特徴とする処理方法。
【請求項６】
コンピュータを、
所定のパケットから分割された第１のフラグメントパケットを受信する受信手段、
前記受信手段により受信された前記第１のフラグメントパケットの、前記所定のパケットにおける位置を示す第１の下端アドレス情報と第１の上端アドレス情報とを取得する取得手段、
前記受信手段により前記第１のフラグメントパケットを受信する前に、既に受信済みの第２のフラグメントパケットの前記所定のパケットにおける位置示す第２の下端アドレス情報と第２の上端アドレス情報とを記憶する記憶手段、
前記取得手段により取得された前記第１の下端アドレス情報と前記第１の上端アドレス情報、および、前記記憶手段により記憶された前記第２の下端アドレス情報と前記第２の上端アドレス情報とに基づいて、前記記憶手段に記憶させる受信済みのフラグメントパケットの前記所定のパケットにおける位置を示すアドレス情報を変更する変更手段、
前記変更手段により変更されたアドレス情報と、受信済みのフラグメントパケットの受信範囲を示す情報であるウィンドウ左端情報と受信済みＡＣＫ番号とを比較する比較手段、
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置、その処理方法及びプログラムに関する。
【背景技術】
【０００２】
Ｅｔｈｅｒｎｅｔ（登録商標）以外のネットワークを構築する場合や、最大転送単位（ＭＴＵ）が異なるネットワーク同士を結合する場合、ＭＴＵが小さい方のネットワークに併せてＴＣＰ／ＩＰパケットのサイズを変更する必要がある。
【０００３】
この問題を解決するため、ＩＰ（Internet Protocol）を記述しているＲＦＣ７９１では、インターネットデータグラムの分割手続きとその再構成手続きとが定義される（非特許文献１）。この方式を用いれば、ネットワーク間のＭＴＵの違いを意識せずに、ネットワークを構築できる。この場合、ネットワーク間を接続する中継器において、パケットを分割し、その分割されたパケットを受信側ステーションにおいて再構成する。
【０００４】
ＭＴＵの異なるネットワークが相互に接続される環境においては、ＭＴＵの大きいネットワークからＭＴＵの小さいネットワークにデータを送信する場合、大きいサイズのパケットを伝送できない。上述したＲＦＣ７９１では、ＩＰデータグラムのペイロード部分をＭＴＵサイズ以下になるように分割する手法が定義されている。
【０００５】
分割パケットは、送信側ステーションからの送信時や、ルータなどで異なるネットワークに中継される時に生じる。分割パケットは、異なるネットワークを通じて受信側ステーションに到達する場合もある。分割パケットは、全て同じサイズで構成される場合もあれば、そうでない場合もある。また、分割パケットは、分割された順序通りに受信側ステーションに到達する保証も無い。
【０００６】
ここで、受信側ステーションにおいては、パケットの再構成が完了するまでそれまでに受信した分割パケットをＩＰ層に保留する必要がある。このため、ＩＰ層では、分割パケットの再構成処理と、分割パケット全ての受信完了を判定する判定処理とが実施される必要がある。
【０００７】
受信完了の判定には、リンクドリストを用いる方法が知られている。リンクドリスト方式では、分割パケットのヘッダ情報（パケット長フィールド、フラグメント・オフセットフィールド）から分割パケットの先頭アドレス及び終端アドレスをリンクドリスト情報として抽出する。リンクドリスト情報が得られる度に既存のリンクドリスト情報を用いて、連続したデータであるか否かを判断し、リンクの先頭データと終端データとを更新していく。
【０００８】
再構成後のパケット長は、最後尾のパケットのパケット長フィールドとフラグメント・オフセットフィールドとに基づいて判明する。そのため、その時点における先頭データ及び終端データの情報と、パケット長とを比較することによって分割パケットの受信完了を判定できる。特許文献１の技術では、シフトレジスタ上にリンクドリスト情報を更新・蓄積し、受信完了通知を生成する方式が提案されている。
【０００９】
また、ＴＣＰ層では、ヘッダに記述されたシーケンス番号を基にリオーダリングと呼ばれる手法を用いてパケットを組み立てる。ＴＣＰにおいては、データストリームによる通信が行なわれており、ストリーム中のデータの固まりをセグメントと呼称される。ＴＣＰの受信パケットには、ＴＣＰのセグメントが含まれており、シーケンス番号にセグメントの位置が示されている。連続したセグメントを組み立てれば、送信されたＴＣＰストリームを組み立てることができる。しかし、ＴＣＰ／ＩＰネットワーク上では、宛先までパケットが到達する保障が無いため、パケットを受信した宛先では、ストリームの最新受信位置としてＡｃｋｎｏｗｌｅｄｇｅ番号を送信元に通知する。送信元では返送されたＡｃｋｎｏｗｌｅｄｇｅをもって宛先がＴＣＰストリームを受信したことが知らされる（スライディングウインドウ）。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００６−８１０３０号公報
【非特許文献】
【００１１】
【非特許文献１】ＲＦＣ７９１（http://www.ietf.org/rfc/rfc0793.txt?number=791）
【非特許文献２】ＲＦＣ７９３（http://www.ietf.org/RFC/RFC0793.txt?number=793）
【発明の概要】
【発明が解決しようとする課題】
【００１２】
しかし、上述した分割パケットの受信完了の判定方法では、種々の課題がある。例えば、分割パケットの受信順序は、入れ替わる可能性があるので、パケット識別番号毎に既存のリンクドリスト情報をソートする必要がある。そのため、パケットを受信する都度、ソートを実施し、それにより得られたリンクドリスト情報と受信した分割パケットとを比較し、リンクドリスト情報を統合したり、また、追加したりする必要がある。
【００１３】
また、ＡＳＩＣ（Application Specific Integrated Circuit）等において、分割パケットの受信完了を判定するモジュールを組み込む場合、ビット幅、深さなどが予め決められた専用のシフトレジスタを設ける必要がある。そのため、大規模化が難しく、柔軟なハードウェアを構築するのが困難である。
【００１４】
本発明は、上記課題に鑑みてなされたものであり、簡単な構成で分割されたパケットの受信処理を柔軟に行なうことを目的とする。
【課題を解決するための手段】
【００１５】
本発明の通信装置は、所定のパケットから分割された第１のフラグメントパケットを受信する受信手段と、前記受信手段により受信された前記第１のフラグメントパケットの、前記所定のパケットにおける位置を示す第１の下端アドレス情報と第１の上端アドレス情報とを取得する取得手段と、前記受信手段により前記第１のフラグメントパケットを受信する前に、既に受信済みの第２のフラグメントパケットの前記所定のパケットにおける位置示す第２の下端アドレス情報と第２の上端アドレス情報とを記憶する記憶手段と、前記取得手段により取得された前記第１の下端アドレス情報と前記第１の上端アドレス情報、および、前記記憶手段により記憶された前記第２の下端アドレス情報と前記第２の上端アドレス情報とに基づいて、前記記憶手段に記憶させる受信済みのフラグメントパケットの前記所定のパケットにおける位置を示すアドレス情報を変更する変更手段と、前記変更手段により変更されたアドレス情報と、受信済みのフラグメントパケットの受信範囲を示す情報であるウィンドウ左端情報と受信済みＡＣＫ番号とを比較する比較手段と、を有する。
【発明の効果】
【００１６】
本発明によれば、本構成を有さない場合よりも、簡単な構成で分割されたパケットの受信処理を柔軟に行なえる。
【図面の簡単な説明】
【００１７】
【図１】本発明の一実施の形態に係わる通信装置の構成の一例を示す図。
【図２】本実施形態に係わるパケットの一例を示す図。
【図３】図１に示す比較部１０５及びメモリ１０７における構成の一例を示す図。
【図４】図１に示す通信装置における動作の一例を示すフローチャート。
【図５】セグメントデータベース２０５の構成の一例を示す図。
【図６】図３に示す第１の比較部２０３による処理の概要を示す図。
【図７】実施形態２に係わる比較部１０５及びメモリ１０７における構成の一例を示す図。
【図８】ＴＣＰウインドウ処理の概要を示す図。
【図９】実施形態３に係わる第１の比較部７０３による処理の概要を示す図。
【図１０】実施形態３に係わるセグメントデータベース７０５の構成の一例を示す図。
【図１１】実施形態４に係わる比較部１０５及びメモリ１０７における構成の一例を示す図。
【図１２】実施形態４に係わるセグメントデータベース７０５の構成の一例を示す図。
【発明を実施するための形態】
【００１８】
以下、本発明の一実施の形態について添付図面を参照して詳細に説明する。
【００１９】
（実施形態１）
図１は、本発明の一実施の形態に係わる通信装置の構成の一例を示す図である。
【００２０】
通信装置１０には、ＰＨＹ部１０２と、ＭＡＣ部１０３と、パケット解析部１０４と、比較部１０５と、ＤＭＡコントローラ１０６と、メモリ１０７と、ＣＰＵ１０８とが具備される。
【００２１】
通信装置１０は、外部メディア等とネットワーク１０１を介して接続される。ここで、ＰＨＹ部１０２は、物理層を処理し、ＭＡＣ部１０３は、データリンク層を処理し、パケット解析部１０４は、パケットデータ（以下、パケットと略す）を解析する。ＤＭＡ（Direct Memory Access）コントローラ１０６は、パケットをＤＭＡ転送し、比較部１０５は、分割パケット（フラグメントパケット）の受信完了を判定する。ＤＭＡコントローラ１０６は、受信したパケットをメモリ１０７に向けてＤＭＡ転送する。詳細については後述するが、ＤＭＡコントローラ１０６には、１又は複数の内部レジスタ１０６ａが設けられる。
【００２２】
メモリ１０７は、例えば、ＲＡＭ（ＤＲＡＭ、ＳＲＡＭ等）や不揮発性メモリ等により実現され、送受信パケットやセグメントデータを記憶する。ＣＰＵ１０８は、通信装置１０における動作を統括制御し、バス１０９は、通信装置１０内の各部を接続する。
【００２３】
ここで、図２（ａ）及び図２（ｂ）を用いて、本実施形態に係わるパケットの一例について説明する。
【００２４】
図２（ａ）には、Ｅｔｈｅｒｎｅｔ（登録商標）ＩＩのＭＡＣ（Media Access Control）ヘッダの一例が示される。ＭＡＣヘッダには、４８ビットからなる宛先ＭＡＣアドレス（Destination MAC Address）フィールドと、４８ビットからなる送信元ＭＡＣアドレス（Source MAC Address）フィールドとが具備される。ＭＡＣヘッダには、その他、１６ビットからなるＴｙｐｅフィールドや、４８〜１５００ビットからなるＰａｙｌｏａｄフィールドも具備される。ＭＡＣ層プロトコルとしては、この他にもＩＥＥＥ８０２．３やＥｔｈｅｒｎｅｔ（登録商標）パケット等もあるが、この点に関しては、本実施形態の要部ではないため、その説明については省略する。
【００２５】
図２（ｂ）には、ヘッダ情報の一例が示される。ここでは、パケット長（Total Length）フィールドと、パケット識別番号（IP-ID）フィールドと、フラグ（Frags）フィールドと、フラグメント・オフセットフィールドとについて説明する。
【００２６】
パケット長フィールドには、パケット全体の長さが格納される。パケット識別番号フィールドには、パケットを一意に識別する番号が格納される。なお、パケット分割前に同じデータを構成していたパケットには、同一のパケット識別番号が割り当てられる。
【００２７】
フラグフィールドは、リザーブビットとＤＦ（Don't Fragment）ビットとＭＦビットとを含む３ビットで構成される。リザーブビットは、当該フィールドが使用されない場合、予備ビットとして機能し、将来の拡張に備えて常に’０’が設定される。ＤＦビットは、分割の不許可を示すフィールドである。受信パケットのＤＦビットが有効になっている場合、当該パケットは、ネットワーク経路中で分割されていないことになる。
【００２８】
ＭＦビットは、後続に分割パケットが続くことを示すフィールドである。受信パケットのＭＦビットが有効になっている場合、当該パケットは、分割パケットであることが分かる。なお、最後尾の分割パケット以外には、ＭＦビットに有効が設定される。
【００２９】
フラグメント・オフセットフィールドには、分割前のパケットにおける当該分割パケットの位置が示される。再構成に際しては、フラグメント・オフセットフィールドを参照し、それにより、元のパケットの位置が特定される。すなわち、ＭＦビットが有効であるか、また、フラグメント・オフセットに’０’以外の値が記述されているかすれば、そのパケットは分割パケットということになる。また、ＭＦビットが有効でなく更に、フラグメント・オフセットフィールドに数値が記述されていれば、そのパケットは、最後尾の分割パケットである。
【００３０】
このように通信装置１０においては、フラグフィールドとフラグメント・オフセットフィールドとを用いて分割パケットであるか否かを判定できる。なお、分割パケット以外のパケットは、ＤＭＡコントローラ１０６によりメモリ１０７にＤＭＡ転送される。
【００３１】
図３は、図１に示す比較部１０５及びメモリ１０７における構成の一例を示す図である。
【００３２】
比較部１０５は、判定部２０１と、第１の抽出部２０２と、第１の比較部２０３と、第２の比較部２０４と、セグメントデータベース２０５と、レジスタ２０６〜２１２と、更新部２１３とを具備して構成される。
【００３３】
判定部２０１は、受信パケットのヘッダ情報に基づいてパケットを判定する機能を有し、第１の判定部２０１ａと、第２の判定部２０１ｂとを具備して構成される。第１の判定部２０１ａは、受信パケットが分割パケットであるか否かを判定し、第２の判定部２０１ｂは、第１の判定部２０１ａにより分割パケットである旨判定された場合に、最後尾のパケットであるか否かの判定を行なう。なお、これら判定は、図２（ｂ）に示すフラグフィールドとフラグメント・オフセットフィールドとに基づいて行なわれる。
【００３４】
抽出部２０２は、分割パケットのヘッダ情報から各種情報を抽出する機能を有し、第１の抽出部２０２ａと、第２の抽出部２０２ｂとを具備して構成される。第１の抽出部２０２ａは、分割パケットのヘッダ情報から当該パケットのセグメントデータを抽出する。セグメントデータは、分割前のパケットにおける分割パケットの位置を示す上端アドレス及び下端アドレスと、パケット識別番号（ＩＰ−ＩＤ）とを規定した情報である。第２の抽出部２０２ｂは、最後尾の分割パケットのヘッダ情報から分割前のパケット長を抽出する。
【００３５】
第１の比較部２０３は、分割パケットのセグメントデータとセグメントデータベース２０５に格納されたセグメントデータとを比較する。そして、その比較結果に基づいてセグメントデータの統合処理を実行し、その処理結果を出力する。処理結果としては、例えば、統合後のセグメントデータの上端アドレス及び下端アドレスが出力される。セグメントデータの統合処理では、例えば、分割パケットのセグメントデータとデータベース内のセグメントデータとを統合させる。なお、セグメントデータ同士を統合させずに、分割パケットのセグメントデータを新規セグメントデータとしてデータベース内に格納する場合もある。
【００３６】
第２の比較部２０４は、第２の抽出部２０２ｂによりパケット長が抽出された場合に、当該パケット長と、第１の比較部２０３による処理の結果（統合後の上端アドレス及び下端アドレス等）とを比較する。そして、その比較結果に基づいて分割前のパケットを構成する分割パケット全ての受信が完了したか否かを判定する。
【００３７】
更新部２１３は、第１の比較部２０３による処理の結果に基づいて、セグメントデータベース２０５を更新する。セグメントデータベース２０５は、詳細については後述するが、セグメントデータを格納する。すなわち、上端アドレスと、下端アドレスと、パケット識別番号とを対応付けたデータセットを格納する。なお、セグメントデータベース２０５は、メモリ１０７の一部の領域を用いて実現される。
【００３８】
レジスタ２０６〜２１２は、各構成の出力を一時的に格納する。Ｒｘ＿ＵＰ＿Ｐｒｔレジスタ２０６は、分割パケットのセグメントデータの上端アドレスを格納する。Ｒｘ＿Ｌｗ＿Ｐｔｒレジスタ２０８は、分割パケットのセグメントデータの下端アドレスを格納する。Ｓｅｇ＿Ｕｐ＿Ｐｔｒレジスタ２０７は、セグメントデータベース２０５に格納されたセグメントデータの上端アドレスを格納する。Ｓｅｇ＿Ｌｗ＿Ｐｔｒレジスタ２０９は、セグメントデータベース２０５に格納されたセグメントデータの下端アドレスを格納する。
【００３９】
Ｕｐ＿Ｐｔｒレジスタ２１０は、第１の比較部２０３から出力されるセグメントデータの上端アドレスを格納する。Ｌｗ＿Ｐｔｒレジスタ２１１は、第１の比較部２０３から出力されるセグメントデータの下端アドレスを格納する。Ｒｅｆ＿Ｐｋｔ＿Ｌｅｎレジスタ２１２は、統合されたセグメントデータにより求められるパケット長を格納する。このレジスタ２１２には、最後尾の分割パケットが受信された段階（ＭＦビットが０でフラグメント・オフセットフィールドに有意な数値が書き込まれている分割パケット）で、再構成後のパケットの全長（パケット長）が格納される。第２の比較部２０４では、このレジスタ２１２にパケット長が格納された場合に、分割パケット全ての受信が完了したと判定する。
【００４０】
次に、図４を用いて、図１に示す通信装置における動作の一例について説明する。ここでは、パケット受信時の動作（パケット受信完了の判定方法）について説明する。
【００４１】
パケットが送られてくると、通信装置１０は、ＰＨＹ部１０２において、それを受信し、復調する（Ｓ１０１でＹＥＳ）。なお、パケットは、各種スイッチやルータなど（図不指示）の中継器を経由して通信装置１０に送られてくる。
【００４２】
パケットを受信した通信装置１０は、ＭＡＣ部１０３において、図２（ａ）に示すようなＥｔｈｅｒｎｅｔ（登録商標）パケットに変換する。ここで、宛先ＭＡＣアドレスフィールドに自局のＭＡＣアドレスが記述され、また、ＴｙｐｅフィールドにＩＰｖ４プロトコルを示す（０ｘ０８００）記述がなされていたとする。この場合、ＭＡＣ部１０３は、当該パケットのＰａｙｌｏａｄフィールドをＩＰｖ４パケットとしてパケット解析部１０４に出力する。これを受けたパケット解析部１０４は、ヘッダ情報を解析する。
【００４３】
次に、通信装置１０は、第１の判定部２０１ａにおいて、Ｓ１０１で受信したパケットが分割パケットであるか否かを判定する。判定の結果、分割パケットでなければ（Ｓ１０２でＮＯ）、再度、Ｓ１０１の処理に戻り、パケット受信待ちとなる。
【００４４】
一方、分割パケットであれば（Ｓ１０２でＹＥＳ）、通信装置１０は、第２の判定部２０１ｂにおいて、更に、最後尾のパケットであるか否かを判定する。最後尾のパケットでなければ（Ｓ１０３でＮＯ）、通信装置１０は、第１の抽出部２０２ａにおいて、当該分割パケットのヘッダ情報からセグメントデータ（上端アドレス、下端アドレス、パケット識別番号（ＩＰ−ＩＤ））を抽出する（Ｓ１０４）。なお、上端アドレスは、Ｒｘ＿Ｕｐ＿Ｐｔｒレジスタ２０６に格納され、下端アドレスは、Ｒｘ＿Ｌｗ＿Ｐｔｒレジスタ２０８に格納される。
【００４５】
また、最後尾のパケットであれば（Ｓ１０３でＹＥＳ）、通信装置１０は、上記同様に、第１の抽出部２０２ａにおいて、当該分割パケットのヘッダ情報からセグメントデータを抽出する（Ｓ１０５）。そして、第２の抽出部２０２ｂにおいて、当該分割パケットのヘッダ情報からパケット長情報を抽出する（Ｓ１０６）。なお、上端アドレスは、Ｒｘ＿Ｕｐ＿Ｐｔｒレジスタ２０６に格納され、下端アドレスは、Ｒｘ＿Ｌｗ＿Ｐｔｒレジスタ２０８に格納される。また、パケット長情報は、パケット識別番号と対応付けられてセグメントデータベース２０５に格納される。これら情報の格納は、ＤＭＡコントローラ１０６により行なわれる。
【００４６】
次に、通信装置１０は、受信したパケットのパケット識別番号と一致するセグメントデータをセグメントデータベース２０５内から探索する。具体的には、ＤＭＡコントローラ１０６において、セグメントデータベース２０５に格納されたセグメントデータ内でパケット識別番号が一致するデータの上端及び下端アドレスをレジスタ２０７及び２０９に順番に出力していく。これにより、上端アドレスがＳｅｇ＿Ｕｐ＿Ｐｔｒレジスタ２０７に格納され、下端アドレスがＳｅｇ＿Ｌｗ＿Ｐｔｒレジスタ２０９に格納される。なお、この上端アドレス及び下端アドレスの出力は、第１の比較部２０３による比較処理が行なわれる度に行なわれ、同一のパケット識別情報を持つセグメントデータがなくまるまで繰り返される。
【００４７】
ここで、通信装置１０は、第１の比較部２０３において、レジスタ（２０７、２０９）に格納されたアドレス情報と、レジスタ（２０６、２０８）に格納されたアドレス情報とを比較する。これにより、セグメントデータベース２０５内におけるセグメントデータと、受信パケットから抽出したセグメントデータとを比較する。
【００４８】
ここでまず、最初の分割パケットを受信した時の処理について説明する。最初の分割パケットを受信時においては、セグメントデータベース２０５内には、受信パケットの識別番号と一致するパケット識別番号を持つセグメントデータが格納されていない（Ｓ１０７でＮＯ）。そのため、Ｒｘ＿Ｕｐ＿Ｐｔｒレジスタ２０７及びＲｘ＿Ｌｗ＿Ｐｔｒレジスタ２０８には、ｎｕｌｌが格納される。この場合、第１の比較部２０３は、比較処理を行なわず、Ｒｘ＿Ｕｐ＿Ｐｔｒレジスタ２０７及びＲｘ＿Ｌｗ＿Ｐｔｒレジスタ２０８に格納されたアドレス情報をそのままＵｐ＿Ｐｔｒレジスタ２１０及びＬｗ＿Ｐｔｒレジスタ２１１に出力する。なお、最初の分割パケットが最後尾のパケットでなければ、分割前におけるパケットの全長が不明であるので、Ｒｅｆ＿Ｐｋｔ＿Ｌｅｎレジスタ２１２にはｎｕｌｌが格納されており、第２の比較部２０４による比較処理も実施されない。その後、更新部２１３は、レジスタ２１０及び２１１に格納されたアドレス情報と、パケット識別番号とを対応付けたデータセットをセグメントデータとしてセグメントデータベース２０５に格納する（Ｓ１０８）。その後、通信装置１０は、再度、Ｓ１０１の処理に戻り、パケット受信待ちとなる。
【００４９】
次に、受信パケットの識別番号と一致するパケット識別番号を持つセグメントデータがセグメントデータベース２０５内に格納されている場合について説明する（Ｓ１０７でＹＥＳ）。この場合、通信装置１０は、第１の比較部２０３において、Ｒｘ＿Ｌｗ＿Ｐｔｒレジスタ２０８とＳｅｇ＿Ｌｗ＿Ｐｔｒ２０９とに格納された下端アドレスを比較する。また、Ｒｘ＿Ｕｐ＿Ｐｔｒレジスタ２０６とＳｅｇ＿Ｕｐ＿Ｐｔｒレジスタ２０７とに格納された上端アドレスの比較も行なう（Ｓ１０９）。これにより、セグメントデータ同士の位置を規定する情報の関係を比較する。そして、これらの比較結果の組み合わせに基づいてセグメントデータの統合処理を実行し、その処理後の情報（上端アドレス、下端アドレス）をレジスタ（２１０、２１１）に出力する（Ｓ１１０）。この比較は、同一のパケット識別情報を持つセグメントデータがなくまるまで繰り返し行なわれる。なお、セグメントデータの統合処理の詳細については後述する。
【００５０】
第１の比較部２０３による比較処理が終わると、通信装置１０は、ＤＭＡコントローラ１０６において、受信パケットと同一のパケット識別番号を持つパケット長情報がセグメントデータベース２０５内に格納されているか否かを判定する。格納されていれば（Ｓ１１１でＹＥＳ）、ＤＭＡコントローラ１０６は、当該パケット長情報をＲｅｆ＿Ｐｋｔ＿Ｌｅｎレジスタ２１２に格納する。これにより、通信装置１０は、第２の比較部２０４ににおいて、当該レジスタ２１２に格納されたパケット長情報と、第１の比較部２０３の処理結果（上端アドレス、下端アドレス）とを比較し、両者が示すデータ長が一致するか否かを判定する（Ｓ１１２）。
【００５１】
ここで、両者が一致すれば（Ｓ１１３でＹＥＳ）、通信装置１０は、第２の比較部２０４において、分割前のパケットを構成する分割パケット全ての受信が完了した旨の判定を行なう（Ｓ１１４）。そして、通信装置１０は、更新部２１３において、第１の比較部２０３による処理の結果に基づいてセグメントデータベース２０５を更新する。すなわち、第１の比較部２０３の処理結果（上端アドレス、下端アドレス）と、パケット識別番号とを対応付けたデータセットをセグメントデータとしてセグメントデータベース２０５に格納する（Ｓ１１５）。そして、該当するパケット識別番号に対応するデータをｎｕｌｌデータで更新する（Ｓ１１７）。その後、通信装置１０は、再度、Ｓ１０１の処理に戻り、パケット受信待ちとなる。
【００５２】
また、Ｓ１１１において該当するパケット長情報がなかった場合（Ｓ１１１でＮＯ）、また、Ｓ１１３において両者のデータ長が不一致であった場合（Ｓ１１３でＮＯ）、通信装置１０は、更新部２１３において、更新処理を行なう。すなわち、第１の比較部２０３の処理結果（上端アドレス、下端アドレス）と、パケット識別番号とを対応付けたデータセットをセグメントデータとしてセグメントデータベース２０５に格納する（Ｓ１１６）。この場合、Ｒｅｆ＿Ｐｋｔ＿Ｌｅｎレジスタ２１２には、ｎｕｌｌが格納されているため、第２の比較部２０４による比較処理は実施されない。その後、通信装置１０は、再度、Ｓ１０１の処理に戻り、パケット受信待ちとなる。
【００５３】
以上が、通信装置１０における動作についての説明であるが、ここに示す処理の流れはあくまで一例であり、処理の順番等は前後してもよい。例えば、ＤＭＡコントローラ１０６において、パケット長情報をＲｅｆ＿Ｐｋｔ＿Ｌｅｎレジスタ２１２に格納するタイミングは、分割パケットの受信とともに行なわれる等してもよい。
【００５４】
次に、図５及び図６を用いて、図４のＳ１０９及びＳ１１０に示す第１に比較部２０３によるセグメントデータの統合処理の概要について説明する。ここでは、まず、図５を用いて、セグメントデータベース２０５の構成の一例について説明する。
【００５５】
セグメントデータベース２０５には、分割パケットから抽出及び算出されたセグメントデータが格納されている。セグメントデータベース２０５には、セグメントデータが記述されている領域「スタートアドレス１」〜「エンドアドレス１」がある。ここで、ＤＭＡコントローラ１０６は、内部レジスタ１０６において、この「スタートアドレス１」と「エンドアドレス１」とを示す情報を格納している。これにより、ＤＭＡコントローラ１０６は、第１の比較に際して、セグメントデータベース２０５のセグメントデータを比較部１０５に向けて転送できる。
【００５６】
また、セグメントデータベース２０５には、パケット再構成後のパケット長を示すパケット長情報と、パケット識別番号（ＩＰ−ＩＤ）とが対応付けられて格納されている。これら情報は、領域「スタートアドレス２」〜「エンドアドレス２」に格納されている。ＤＭＡコントローラ１０６では、上記同様に、内部レジスタ１０６ａにおいて、この「スタートアドレス２」と「エンドアドレス２」とを示す情報を格納している。そのため、ＤＭＡコントローラ１０６は、第２の比較に際して、セグメントデータベース２０５に格納された情報を比較部１０５に向けてＤＭＡ転送できる。
【００５７】
ＤＭＡコントローラ１０６は、内部レジスタ１０６ａにおいて、ライタブルアドレス（WritableAddress）を格納している。ライタブルアドレスは、パケット識別番号が未登録の領域（一番低位のアドレス（スタートアドレス１に近いアドレス）のアドレスであり、この領域に新規セグメントが登録される。仮に、未登録の領域がなければ、内部レジスタ１０６ａには、「エンドアドレス１」＋１のアドレスがライタブルアドレスとして保持される。このとき、内部レジスタ１０６ａには、「エンドアドレス１」の値も１増加した値が格納される。これにより、「スタートアドレス１」から「エンドアドレス１」のセグメントデータの登録領域をコンパクトに保てるため、セグメントデータの転送時間の増大を抑制できる。
【００５８】
次に、図６を用いて、第１の比較部２０３によるセグメントデータの統合処理の概要について説明する。
【００５９】
この処理では、第１の比較部２０３において、セグメントデータ同士の下端アドレスと上端アドレスとを比較する。これにより、図６に示すようなパターン分けを行なう。パターン（ａ）及びパターン（ｆ）は、比較対象となる２つのセグメントデータに共通する区間がない場合を示し、パターン（ｂ）、（ｃ）、（ｅ）は、比較対象となる２つのセグメント間に共通、又は連続したセグメントの領域があることを示す。パターン（ｄ）は、受信したセグメントデータが既に受信済みであり、セグメントデータベース２０５内のセグメントデータを変更する必要がない場合を示している。なお、第１の比較部２０３においては、受信したセグメントデータを、セグメントデータベース内の全てのセグメントデータと比較し、このようなパターンに分類する。
【００６０】
ここで、パターン（ｂ）、（ｃ）、（ｅ）の場合、第１の比較部２０３は、セグメントデータ同士を統合する。この統合に際して、第１の比較部２０３は、統合後のセグメントデータの上端アドレス及び下端アドレスを出力する。これにより、Ｒｘ＿Ｕｐ＿Ｐｔｒレジスタ２０６には、統合後の上端アドレスが格納され、Ｒｘ＿Ｌｗ＿Ｐｔｒレジスタ２０８には、統合後の下端アドレスが格納される。第１に比較部２０３においては、、「エンドアドレス１」に到達するまで、残りのデータについて比較処理を継続して行なう。
【００６１】
また、統合対象となるセグメントデータがセグメントデータベース２０５内に２つ以上ある場合、第１の比較部２０３は、受信したセグメントデータと、最初に該当したセグメントデータとを統合する。その後、残りの統合対象のデータとも統合を実施する。なお、当該残りの統合対象のデータが格納されていた領域には、ｎｕｌｌが格納される。例えば、「エンドアドレス１」領域にｎｕｌｌが書き込まれている場合、ＤＭＡコントローラ１０６では、内部レジスタ１０６ａに保持された対応する値を’１’減算する。
【００６２】
また、パターン（ａ）及びパターン（ｆ）の場合、「スタートアドレス１」〜「エンドアドレス１」に格納されたセグメントデータ全ての比較が終了しても、統合するセグメントデータがない。この場合、当該セグメントデータは、新規セグメントデータとしてセグメントデータベース２０５に格納されることになる。
【００６３】
以上説明したように本実施形態によれば、パケット分割前における分割パケットの位置と当該分割パケットの識別情報とを含むセグメントデータと、既受信の分割パケットのセグメントデータとを比較し、分割パケットの受信の完了を判定する。
【００６４】
ここで、既受信の分割パケットのセグメントデータは、メモリ内に定義されたセグメントデータベースにおいて管理されている。そのため、セグメントデータを管理するメモリ領域の容量の変更に際しては、レジスタ（セグメントデータベースの領域を定義する情報を格納）を書き換えるのみで済む。
【００６５】
これにより、簡単且つ柔軟な構成で分割パケットの受信完了を判定できる。また、メモリを使用してセグメントデータベースを管理するため、構成が安価で済むとともに、大容量化にも柔軟に対応できる。更に、分割パケットの同時に再構成する数を増加させる場合にも、セグメントデータベースの領域を定義するレジスタを書き換えるだけで済む。
【００６６】
一般に、ＡＳＩＣ内部にシフトレジスタを設ける場合よりも、ＡＳＩＣの外部にメモリデバイスを接続してシステム構築した方がビット単価が安価になる。そのため、本実施形態の構成によれば、コストを抑制できる。また、ＡＳＩＣを再設計せずに、メモリデバイスを変更することができる。
【００６７】
（実施形態２）
次に、実施形態２について説明する。実施形態２においては、ＩＰパケットではなく、ＴＣＰパケットの受信状態を判定する構成について説明する。なお、実施形態１と同様の構成についての説明は省略し、ここでは相違点について重点的に省略する。
【００６８】
図７は、実施形態２に係わる通信装置１０における比較部１０５及びメモリ１０７における構成の一例を示す図である。
【００６９】
抽出部７０２は、ＴＣＰヘッダ及びＩＰヘッダからセグメントデータを抽出する。具体的には、分割パケットの受信範囲を規定する情報（ストリーム全体におけるどの位置のデータであるかを示す情報）として、ソケットＩＤと、ＴＣＰヘッダのＳｅｑｕｅｎｃｅ番号と、Ｎｅｘｔ Ｓｅｑｕｅｎｃｅ番号とを抽出する。Ｓｅｑｕｅｎｃｅ番号は左端アドレスとして抽出され、Ｎｅｘｔ Ｓｅｑｕｅｎｃｅ番号は右端アドレスとして抽出される。なお、ソケットＩＤ（ＳＯ−ＩＤ）は、受信パケットのＩＰヘッダの送信元−宛先ＩＰアドレスと、ＴＣＰヘッダの送信元−宛先ポート番号との組み合わせであるソケットペアから一意に決定される。
【００７０】
セグメントデータベース７０５は、リオーダリング中のＴＣＰパケットのセグメントデータを格納する。より具体的には、ソケットＩＤに対応してセグメントデータが格納されている。
【００７１】
第１の比較部７０３は、受信したＴＣＰパケットのセグメントデータとセグメントデータベース７０５に格納されたセグメントデータとを比較する。そして、その比較結果に基づいてセグメントデータの統合処理を実行し、その処理結果を出力する。処理結果としては、例えば、統合後のセグメントデータの左端アドレス及び右端アドレスが出力される。
【００７２】
更新部７１３は、第１の比較部７０３による処理の結果に基づいて、セグメントデータベース２０５を更新する。
【００７３】
第２の比較部７０４は、第１の比較部７０３による処理の結果（統合後の左端アドレス及び右端アドレス等）と、受信済みの分割パケットの連続する受信範囲を示す情報（ウインドウ左端情報及び受信済みＡＣＫ番号）とを比較する。そして、その比較結果に基づいて分割パケットの受信状態（受信済みＡＣＫ番号及びウインドウサイズ情報）を更新する。なお、更新後の情報は、次にパケットを送信する際に通信相手先に通知される。
【００７４】
ここで、ウインドウサイズは、送信可能な最大のデータサイズを示す。また、ウインドウ左端情報は、図８の符号８０１に示すウインドウ左端を示し、受信済みＡＣＫ番号は、図８の符号８０２に示す受信済みＡＣＫ番号を示す。受信済みＡＣＫ番号は、ウインドウ左端８０１から連続してデータを受信した場合に更新され、例えば、受信したデータのバイト数に応じてその数が増えていく。これに対して、ウインドウサイズは、図８の符号８０３に示すように、ＡＣＫ番号が増えるにつれ減少する。
【００７５】
ここで、例えば、図８の符号８０４及び８０５に示すセグメントデータを受信した場合、これらセグメントデータ８０４及び８０５は、受信済みＡＣＫ番号８０２に示される位置と接していない。そのため、このような場合には、受信済みＡＣＫ番号は更新されない。この場合、セグメントデータ８０４及び８０５は、更新部７１３において、セグメントデータベース７０５へ新規登録される。
【００７６】
レジスタ７０６〜７１１は、各構成の出力を一時的に格納する。Ｒｘ＿ＬＥ＿Ｐｔｒレジスタ７０６は、受信したＴＣＰパケットのセグメントデータの左端アドレスを格納する。ＲＸ＿ＲＥ＿Ｐｔｒレジスタ７０８は、受信したＴＣＰパケットのセグメントデータの右端アドレスを格納する。Ｓｅｇ＿ＬＥ＿Ｐｔｒレジスタ７０７は、セグメントデータベース７０５に格納されたセグメントデータの左端アドレスを格納する。Ｓｅｇ＿ＲＥ＿Ｐｔｒレジスタ７０９は、セグメントデータベース７０５に格納されたセグメントデータの右端アドレスを格納する。
【００７７】
Ｒｅｆ＿ＬＥ＿Ｐｔｒレジスタ７１０は、第１の比較部７０３から出力されるセグメントデータの左端アドレスを格納する。Ｒｅｆ＿ＲＥ＿Ｐｔｒレジスタ７１１は、第１の比較部７０３から出力されるセグメントデータの右端アドレスを格納する。Ｒｅｆ＿Ｓｅｇ＿Ｒｅｇレジスタ７１４は、ウインドウ左端情報及び受信済みＡＣＫ番号を格納する。これらの情報は、取得部７１２によりＴＣＰの上位層から取得される。
【００７８】
ここで、実施形態２に係わる通信装置１０における処理の流れについて簡単に説明する。
【００７９】
通信装置１０は、まず、抽出部７０２において、ＴＣＰパケットを受信すると、Ｓｅｑｕｅｎｃｅ番号と、Ｎｅｘｔ Ｓｅｑｕｅｎｃｅ番号と、ソケットＩＤとを抽出する。そして、Ｓｅｑｕｅｎｃｅ番号とＮｅｘｔ Ｓｅｑｕｅｎｃｅ番号とをそれぞれ、レジスタ７０６及び７０８に格納する。また、ソケットＩＤは、セグメントデータベース７０５に出力され、セグメントデータベース７０５内のセグメントデータと比較される。
【００８０】
セグメントデータベース７０５には、ソケットＩＤに対応してセグメントデータが格納されている。通信装置１０は、受信したセグメントデータのソケットＩＤと一致するセグメントデータをセグメントデータベース７０５内から探索する。具体的には、ＤＭＡコントローラ１０６において、セグメントデータベース７０５に格納されたセグメントデータ内でソケットＩＤが一致するセグメントデータの左端及び右端アドレスをレジスタ７０７及び７０９に順番に出力していく。これにより、左端アドレスがＳｅｇ＿ＬＥ＿Ｐｔｒレジスタ７０７に格納され、右端アドレスがＳｅｇ＿ＲＥ＿Ｐｔｒレジスタ７０９に格納される。
【００８１】
レジスタ７０７及び７０９に値が格納されると、通信装置１０は、第１の比較部７０３において、レジスタ（７０７、７０９）に格納されたアドレス情報と、レジスタ（７０６、７０８）に格納されたアドレス情報とを比較する。これにより、セグメントデータベース７０５内におけるセグメントデータと、ＴＣＰパケットから抽出されたセグメントデータとが比較される。この比較により、第１の比較部７０３においては、実施形態１で説明した処理と同様にして、新規セグメント、セグメントの統合、セグメントの保持などの判定を行なう。
【００８２】
受信したセグメントデータと、セグメントデータベース７０５内のデータとの比較が終了すると、その比較結果がレジスタ７１０及び７１１にそれぞれ格納される。なお、セグメントデータが統合される場合は、セグメントデータベース７０５から該当のセグメントデータが削除される。すなわち、該当のデータがｎｕｌｌデータで更新される。ここで、例えば、図６（ｄ）に示すような比較結果が得られた場合には、実施形態１と同様に、更新後のアドレス情報がレジスタ７０６及び７０８に格納され、第１の比較部７０３による比較処理が継続して行なわれることになる。
【００８３】
第１の比較部７０３による比較処理が終了すると、その比較結果は、レジスタ７１０及びレジスタ７１１にそれぞれ格納される。そして、通信装置１０は、第２の比較部７０４による比較処理を行なう。
【００８４】
ここで、ウインドウ左端情報と、受信済みＡＣＫ番号とが、第２の比較部７０４に入力される。通信装置１０は、第２の比較部７０４において、これら情報と、レジスタ７１０及び７１１に格納されたアドレス情報とを比較する。第２の比較部７０４は、この比較結果に基づいて、現在のソケットに対応するウインドウの左端情報と、ＡＣＫ（Acknowledgement）番号とを更新して出力する。
【００８５】
以上説明したように実施形態２によれば、通信装置（ＴＣＰ受信セグメント処理装置）において、ＴＣＰパケットの受信範囲を規定するセグメントデータと、既受信のＴＣＰパケットのセグメントデータとを比較する。これにより、ＴＣＰパケットの受信状態を判定（更新）することができる。
【００８６】
また、セグメントデータは、実施形態１同様に、メモリ内に定義されたセグメントデータベースにおいて管理されている。そのため、セグメントデータを管理するメモリ領域の容量の変更に際しては、レジスタ（セグメントデータベースの領域を定義する情報を格納）を書き換えるのみで済む。これにより、簡単且つ柔軟な構成でＴＣＰパケットの受信状態を判定できる。また更に、実施形態１同様に、構成が安価で済むとともに、大容量化にも柔軟に対応できる。
【００８７】
（実施形態３）
次に、実施形態３について説明する。実施形態２においては、受信したＴＣＰパケットを受信バッファ上で組み立てていたが、この手法に限られない。例えば、リンクドリストを構築し、組み立てられたパケットのシーケンス番号までリンクドリストを追跡することにより、ＴＣＰパケットの受信状態を上位層に通知する手法が知られている。
【００８８】
この処理を行なう場合、実施形態２で説明したセグメントデータの統合処理による受信通知の他、各セグメントを再構築するためのリンクドリストの処理に多くのリソースが必要となる。そこで、実施形態３においては、セグメントデータのリンクドリストの処理負荷を軽減させる構成について説明する。
【００８９】
図９は、実施形態３に係わる第１の比較部７０３による処理の概要を示す図である。実施形態１及び２においては、セグメントデータを統合することでパケットの受信完了の判定や、受信済みＡＣＫ番号等を更新する場合について説明した。これに対して、実施形態３においては、セグメントデータの統合は行なわず、セグメントデータベース７０５におけるセグメントデータの左端及び右端アドレスの値を変更させる。
【００９０】
パターン（ｂ）、（ｄ）及び（ｅ）に示すように、受信したセグメントデータと、セグメントデータベース７０５から読み出したセグメントデータとに重複する領域がある場合、セグメントデータの左端及び右端アドレスを変更させる。ＴＣＰパケットの受信では、セグメントデータの重複があった場合、時系列的に後から受信したセグメントデータを受信データとする。そのため、セグメントデータベース７０５から読み出したセグメントデータを修正している。
【００９１】
パターン（ａ）及び（ｆ）に示すように、受信したセグメントデータが、セグメントデータベース７０５内の全てのセグメントデータと重複する領域がない場合、受信したセグメントデータを新規セグメントとしてセグメントデータベース７０５に登録する。
【００９２】
パターン（ｃ）に示すように、受信したセグメントデータが、セグメントデータベース７０５内のセグメントデータをオーバーラップしている場合、セグメントデータベース７０５から該当のデータを削除する。セグメントデータベース７０５においては、図１０に示すように、セグメントデータ自体のアドレス情報の他、リンク情報として隣接するセグメントのアドレス情報が付加されている。一つのセグメントデータを読み込むことにより、次にリンクされるセグメントデータのアドレス情報が記載されている。そのため、通信装置１０は、このリストを辿ることによりセグメントデータを構築することができる。
【００９３】
以上説明したように実施形態３によれば、実施形態２で説明した受信ウインドウ管理の他、受信セグメントデータのリンクドリスト情報の管理も、プロセッサのリソースを用いずに高速に処理することができる。
【００９４】
（実施形態４）
次に、実施形態４について説明する。実施形態４においては、実施形態１（ＩＰパケットの受信完了判定）及び実施形態２（ＴＣＰパケットの受信状態の判定）を一つの構成で行なう場合について説明する。
【００９５】
図１１を用いて、実施形態４に係わる通信装置１０における比較部１０５及びメモリ１０７における構成の一例を示す図である。すなわち、実施形態１で説明したリアセンブル処理と、実施形態２で説明したリオーダリング処理とを行なう構成について説明する。
【００９６】
選択部９０２は、Ｒｅｆ＿Ｐｋｔ＿Ｌｅｎレジスタ２１２及びＲｅｆ＿Ｓｅｇ＿Ｒｅｇレジスタ７１４のいずれかを選択し、当該選択したレジスタに格納された値を第２の比較部７０４に入力する。より具体的には、ＩＰパケット処理時にはＲｅｆ＿Ｐｋｔ＿Ｌｅｎレジスタ２１２を選択し、ＴＣＰパケット処理時にはＲｅｆ＿Ｓｅｇ＿Ｒｅｇレジスタ７１４を選択する。なお、いずれのレジスタを選択するかは、後述するＩＤ番号に基づいて決められる。
【００９７】
また、実施形態４においては、受信したセグメントデータに関するアドレス情報を格納するレジスタ（７０６、７０８、７１０、７１１）がそれぞれ複数設けられる。これにより、セグメントデータベース７０５からの一度の読み出しに対して、複数の比較を行なうことができる。
【００９８】
また、実施形態４に係わる抽出部７０２は、実施形態２で説明した機能に加えて、実施形態１を説明した図３に示す抽出部２０２の機能を有する。実施形態４に係わる抽出部７０２においては、各種アドレス等の情報を抽出するとともに、ＩＰパケットを処理する際に用いるＩＰ−ＩＤと、ＴＣＰパケットを処理する際に用いるＳＯ−ＩＤに対してユニークなＩＤ番号（識別情報）を割り当てる。
【００９９】
ここで、実施形態４に係わる通信装置１０における処理の流れについて簡単に説明する。
【０１００】
通信装置１０は、まず、判定部２０１において、受信パケットのヘッダ情報に基づいてパケットを判定する。ＩＰパケットの場合、分割パケットが処理対象となり、ＴＣＰパケットの場合、コネクションが確立しているソケットが処理対象となる。
【０１０１】
次に、通信装置１０は、抽出部７０２において、受信パケットから各種アドレス等の情報を抽出するとともに、ＩＰパケットを処理する際に用いるＩＰ−ＩＤ及びＴＣＰパケットを処理する際に用いるＳＯ−ＩＤに対してユニークなＩＤ番号を割り当てる。このＩＤ番号は、セグメントデータベース７０５、受信セグメントデータ用のレジスタ（７０６、７０８）、選択部９０２に入力される。
【０１０２】
ここで、図１２には、実施形態４に係わるセグメントデータベース７０５の構成の一例が示される。セグメントデータベース７０５には、実施形態１を説明した図５と同様に、各レコードに対応して、ＩＤ番号とセグメントデータとが登録されている。分割ＩＰパケットによるセグメントデータと、ＴＣＰパケットによるセグメントデータとは、ＩＤ番号により識別可能であれば、同一データベースに登録されていても問題ない。
【０１０３】
受信セグメントデータ用のレジスタ（７０６、７０８）は、例えば、ＩＤ番号毎に複数設けられる。受信セグメントデータ用のレジスタ（７０６、７０８）に格納された値は、セグメントデータベース７０５から読み出されたセグメントデータとともに、第１の比較部７０３に入力される。
【０１０４】
その後、通信装置１０は、第１の比較部７０３において、上述した実施形態１及び２と同様にして比較処理を行なう。第１の比較結果用のレジスタ（７１０、７１１）は、上述した受信セグメントデータ用のレジスタ（７０６、７０８）と同様に、ＩＤ番号毎に複数設けられる。第１の比較部７０３においては、比較結果を第１の比較結果用のレジスタ（７１０、７１１）にそれぞれ出力する。これらレジスタ７０６及び７０８に格納された値は、第２の比較部７０４に入力される。この他、第２の比較部７０４には、ＩＰパケット処理時にはパケット長情報が入力され、ＴＣＰパケット処理時にはウインドウ左端情報と受信済みＡＣＫ番号とが入力される。
【０１０５】
通信装置１０は、第２の比較部７０４において、上記入力された情報に基づいて比較処理を行なう。この比較結果に基づいて、第２の比較部７０４は、実施形態１及び実施形態２で説明したように、ＩＰパケットの受信完了通知、又はＴＣＰパケットの受信状態の通知を行なう。その後、通信装置１０は、更新部７１３において、セグメントデータベース７０５への登録・更新処理を行なう。
【０１０６】
以上説明したように実施形態４によれば、複数のレジスタを備えることにより、実施形態１（ＩＰパケットの受信完了の判定）及び実施形態２（ＴＣＰパケットの受信状態の判定）における処理を一度のセグメントデータベースの読み込みで行なうことができる。
【０１０７】
以上が本発明の代表的な実施形態の一例であるが、本発明は、上記及び図面に示す実施形態に限定することなく、その要旨を変更しない範囲内で適宜変形して実施できるものである。
【０１０８】
例えば、本発明は、例えば、システム、装置、方法、プログラム若しくは記憶媒体等としての実施態様を採ることもできる。具体的には、複数の機器から構成されるシステムに適用してもよいし、また、一つの機器からなる装置に適用してもよい。
【０１０９】
（その他の実施形態）
本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（又はＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
0005643609.tif 000002
【図２】
0005643609.tif 000003
【図３】
0005643609.tif 000004
【図４】
0005643609.tif 000005
【図５】
0005643609.tif 000006
【図６】
0005643609.tif 000007
【図７】
0005643609.tif 000008
【図８】
0005643609.tif 000009
【図９】
0005643609.tif 000010
【図１０】
0005643609.tif 000011
【図１１】
0005643609.tif 000012
【図１２】
0005643609.tif 000013