(57)【要約】【課題】  本発明は、ＩＤＰにおけるＩＰパケットについての攻撃パターンの検出などで行う、分割されたデータを跨るデータ列の検索処理において、検索を効率良く行うことを目的とする。【解決手段】  分割データを跨りデータ列検索を行うデータ列検索装置１００において、エントリ記憶部１２０は、連結関係にある分割データを記憶するエントリを有する。構築部１１０は、分割データを入力し、入力した分割データに対して連結関係にある分割データのサイズと入力した分割データのサイズとの合計サイズが一定サイズに達する場合、入力した分割データに対して連結関係にある分割データと入力した分割データとをデータ列検索部１３０に出力してデータ列の検索を行う。また、構築部１１０は、入力した分割データをエントリに記憶し、この記憶した分割データに対して連結関係にある分割データを入力し全ての分割データに対してデータ列検索を行う。【選択図】        図５
2005354334.tif 000002
【特許請求の範囲】
【請求項１】
分割された分割データに対して分割データを跨りデータ列検索をするデータ列検索装置において、
分割データを記憶するエントリを有するエントリ記憶部と、
データ列検索を行うデータ列検索部と、
エントリに記憶される分割データに対して連結関係にある分割データを入力し、入力した分割データに対して連結関係にある分割データのサイズと入力した分割データのサイズとの合計サイズが一定サイズに達する場合、入力した分割データに対して連結関係にある分割データと入力した分割データとをデータ列検索部に出力し、入力した分割データをエントリに記憶する構築部と
を備えたことを特徴とするデータ列検索装置。
【請求項２】
上記エントリは、基準となる分割データを記憶する共用フラグメント領域と、共用フラグメント領域に記憶される分割データの前に位置する分割データを記憶する先頭フラグメント領域と、共用フラグメント領域に記憶される分割データの後ろに位置する分割データを記憶する最終フラグメント領域とを備え、
上記構築部は、
入力した分割データが共用フラグメント領域に記憶された分割データの前に連結するデータの場合で且つ入力した分割データのサイズと共用フラグメント領域に記憶された分割データのサイズとの合計サイズが一定サイズに達する場合、合計サイズと一定サイズとの差分のサイズ分、入力した分割データの先頭側のデータを先頭フラグメント領域に記憶し、
入力した分割データが共用フラグメント領域に記憶された分割データの後ろに連結するデータの場合で且つ入力した分割データのサイズと共用フラグメント領域に記憶された分割データのサイズとの合計サイズが一定サイズに達する場合、合計サイズと一定サイズとの差分のサイズ分、入力した分割データの最終側のデータを最終フラグメント領域に記憶し、
入力した分割データが先頭フラグメント領域に記憶された分割データに対して連結関係にある場合で且つ入力した分割データのサイズと先頭フラグメント領域に記憶された分割データのサイズとの合計サイズが一定サイズに達する場合、合計サイズと一定サイズとの差分のサイズ分、入力した分割データの先頭側のデータを先頭フラグメント領域に記憶し、
入力した分割データが最終フラグメント領域に記憶された分割データに対して連結関係にある場合で且つ入力した分割データのサイズと最終フラグメント領域に記憶された分割データのサイズとの合計サイズが一定サイズに達する場合、合計サイズと一定サイズとの差分のサイズ分、入力した分割データの最終側のデータを最終フラグメント領域に記憶する
ことを特徴とする請求項１記載のデータ列検索装置。
【請求項３】
上記構築部は、
上記エントリに記憶されたいずれの分割データに対しても連結する関係にない分割データを入力し、新たなエントリの共用フラグメント領域に、入力した分割データを記憶することを特徴とする請求項２記載のデータ列検索装置。
【請求項４】
上記共用フラグメント領域と上記先頭フラグメント領域と上記最終フラグメント領域との各サイズは、上記の一定サイズと同じであることを特徴とする請求項２記載のデータ列検索装置。
【請求項５】
上記エントリは、
上記共用フラグメント領域に記憶される分割データのサイズと、
上記先頭フラグメント領域に記憶される分割データのサイズと、
上記最終フラグメント領域に記憶される分割データのサイズと、
上記共用フラグメント領域に記憶される分割データの先頭アドレスと、
上記共用フラグメント領域に記憶される分割データの最終アドレスと、
上記先頭フラグメント領域に記憶される分割データの先頭アドレスと、
上記先頭フラグメント領域に記憶される分割データの最終アドレスと、
上記最終フラグメント領域に記憶される分割データの先頭アドレスと、
上記最終フラグメント領域に記憶される分割データの最終アドレスと
を記憶する接続情報領域を備えたことを特徴とする請求項２記載のデータ列検索装置。
【請求項６】
上記データ列検索装置は、ネットワーク通信において、
分割されたＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）データと分割されたＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）データとの少なくともいずれかを分割データとすることを特徴とする請求項１記載のデータ列検索装置。
【請求項７】
ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）パケットに含まれて送受信されるＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）データとＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）データとの少なくともいずれかに対して不正データ列を検索し、不正侵入のＩＰパケットを検知および遮断する不正侵入検知遮断装置において、
分割されたＴＣＰデータと分割されたＵＤＰデータとの少なくともいずれかを含むＩＰパケットを送受信する送受信部と、
送受信部が受信したＩＰパケットに含まれる分割されたＴＣＰデータと分割されたＵＤＰデータとの少なくともいずれかを分割データとして管理するエントリ管理部と、
分割データを記憶するエントリを検索するエントリ検索部と、
分割データを構築する構築部と、
分割データを記憶するエントリを有するエントリ記憶部と、
データ列検索を行うデータ列検索部とを備え、
送受信部は、ＩＰパケットを受信し、受信したＩＰパケットを出力し、
エントリ管理部は、送受信部が出力したＩＰパケットを入力し、入力したＩＰパケットに含まれる分割データを取得し、取得した分割データに対する検索情報を出力し、
エントリ検索部は、エントリ管理部が出力した検索情報を入力し、入力した検索情報に基づいて、エントリに記憶された分割データとエントリ管理部が取得した分割データとの連結関係を検索してエントリ検索結果を出力し、
エントリ管理部は、エントリ検索部が出力したエントリ検索結果を入力し、入力したエントリ検索結果と、取得した分割データとを出力し、
構築部は、エントリ管理部が出力したエントリ検索結果と分割データとを入力し、入力したエントリ検索結果と分割データとに基づいて、エントリに記憶された分割データのサイズと、入力した分割データとのサイズとの合計サイズを算出し、算出した合計サイズが一定サイズに達する場合、入力した分割データに対して連結関係にある分割データと入力した分割データとを構築データとして出力し、入力したエントリ検索結果に基づいて、入力した分割データをエントリに記憶し、
データ列検索部は、構築部が出力した構築データを入力し、入力した構築データに対して不正データ列を検索し、データ列検索結果を出力し、
構築部は、データ列検索部が出力したデータ列検索結果を入力し、入力したデータ列検索結果に基づいて構築結果を生成し、生成した構築結果を出力し、
エントリ管理部は、構築部が出力した構築結果を入力し、入力した構築結果に基づいてＩＰパケットの送信命令を出力し、
送受信部は、エントリ管理部が出力した送信命令を入力し、入力した送信命令に基づいてＩＰパケットを送信することを特徴とする不正侵入検知遮断装置。
【請求項８】
上記エントリ検索部は、
検索機能を持つメモリであるＣＡＭ（Ｃｏｎｔｅｎｔ  Ａｄｄｒｅｓｓａｂｌｅ  Ｍｅｍｏｒｙ）であることを特徴とする請求項７記載の不正侵入検知遮断装置。
【請求項９】
分割された分割データに対して分割データを跨りデータ列検索をするデータ列検索方法において、
分割データをエントリに記憶するエントリ記憶工程と、
エントリに記憶される分割データに対して連結関係にある分割データを入力し、入力した分割データに対して連結関係にある分割データのサイズと入力した分割データのサイズとの合計サイズが一定サイズに達する場合、入力した分割データに対して連結関係にある分割データと入力した分割データとを出力する構築工程と、
構築工程で出力された分割データに対してデータ列検索を行うデータ列検索工程と、
入力した分割データをエントリに記憶する構築工程と
を備えたことを特徴とするデータ列検索方法。
【請求項１０】
請求項９記載のデータ列検索方法をコンピュータに実行させるデータ列検索プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ間に跨るデータ列の検索を行うデータ列検索装置、不正侵入検知遮断装置、データ列検索方法およびデータ列検索プログラムに関するものである。
【背景技術】
【０００２】
インターネットをはじめとするネットワークでは、ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）パケットによる通信が広く使われ、ＩＰパケットにより、ＴＣＰデータやＵＤＰデータが送受信される。
このＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）データは、送信側において、通信する端末間の通信サイズで分割され、複数のＩＰパケットにより送信される。
複数のＩＰパケットにより送信された、分割されたＴＣＰデータは、受信側において、元のＴＣＰデータに構築され処理される。
【０００３】
このため、従来技術において、分割されたデータの全てを管理し、元のデータを構築するためのものがある（特許文献１、特許文献２）。
【特許文献１】特開２００３−２４２０１９号公報
【特許文献２】特開平８−１５３０３８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
また、通信上のセキュリティ性を高めるため、異なるネットワーク間に位置し、異なるネットワークの端末間で送信されたＩＰパケットを受信し、受信したＩＰパケットのデータを精査し、精査したＩＰパケットを中継するＩＤＰ（Ｉｎｔｒｕｓｉｏｎ  Ｄｅｔｅｃｔｉｏｎ  ａｎｄ  Ｐｒｅｖｅｎｔｉｏｎ  Ｓｙｓｔｅｍ）という装置がある。
【０００５】
このＩＤＰは、通信されるデータから、既知の攻撃パターンを示す不正なデータ列を検出し、これを廃棄することで、不正侵入を防ぐ。
ここで、不正なＩＰパケットの侵入を防ぐため、ＩＤＰは、分割されたデータを跨る不正なデータ列についても検索を行う。
また、ＩＤＰが、分割されたデータを跨るデータ列を検索するためには、データ列の検索を行う一定サイズ分のデータを管理すればよい。
【０００６】
しかし、従来技術では、元のデータに対して全ての分割されたデータを管理し構築するため、分割されたデータを記憶するメモリ量の増加や、分割されたデータに対する処理負荷の増加が起こる。
【０００７】
本発明は、上記の課題を解決するためになされたもので、分割されたデータを跨るデータ列の検索において、データ列の検索が可能なサイズ分の分割されたデータを管理し構築することで、検索を効率良く行うことを目的とする。
【課題を解決するための手段】
【０００８】
本発明のデータ列検索装置は、分割された分割データに対して分割データを跨りデータ列検索をするデータ列検索装置において、分割データを記憶するエントリを有するエントリ記憶部と、データ列検索を行うデータ列検索部と、エントリに記憶される分割データに対して連結関係にある分割データを入力し、入力した分割データに対して連結関係にある分割データのサイズと入力した分割データのサイズとの合計サイズが一定サイズに達する場合、入力した分割データに対して連結関係にある分割データと入力した分割データとをデータ列検索部に出力し、入力した分割データをエントリに記憶する構築部とを備えたことを特徴とする。
【発明の効果】
【０００９】
本発明によれば、分割されたデータを跨るデータ列の検索において、データ列の検索を行う一定サイズ分の分割されたデータを管理し構築することができ、分割されたデータを記憶するメモリ量の削減や、分割されたデータに対する処理負荷の軽減を図ることができる。
【発明を実施するための最良の形態】
【００１０】
実施の形態１．
データ列検索装置を備えるものに、ネットワーク中のＩＰパケットを精査して不正侵入の検知及び遮断をするＩＤＰ（不正侵入検知遮断装置）２００がある。
そこで、ＩＤＰ２００について以下に説明する。
【００１１】
ＩＤＰ２００は、異なるネットワーク間に位置し、ネットワークを跨って送信されたＩＰパケットを受信し、受信したＩＰパケットを精査して、精査したＩＰパケットをネットワーク間で中継することで、不正侵入の検知及び遮断をする。
ＩＤＰ２００は、ネットワーク中のＩＰパケットを精査するため、ＩＰパケットに含まれるデータに不正データ列（不正文字列）が存在しないかデータ列検索を行う。
ＩＤＰ２００は、データ列検索をして、不正データ列を含むパケットを廃棄することでネットワークへの不正侵入の検知及び遮断を行う。
また、ＩＰパケットにより送受信されるＴＣＰデータは、サイズが大きい場合、分割され、複数のＩＰパケットにより送受信される。分割されたＴＣＰデータをＴＣＰセグメントとする。
そこで、ＩＤＰ２００は、ＴＣＰセグメントに対して、セグメントを跨り不正データ列の検索をする。
検索に際して、ＴＣＰセグメントの場合、ＴＣＰヘッダのシーケンス番号に基づいて各セグメントを整列する順序を判定する。また、本発明は、ＴＣＰだけではなく、ＴＣＰのシーケンス番号のような順序を制御するプロトコルにおいても有効である。
【００１２】
ＩＤＰ２００は、セグメントに対して不正データ列を検索する際、互いに連続する各セグメントの合計サイズ（構築セグメントサイズ）が一定サイズ（ペイロードサイズ）以上になったとき、各セグメントを構築して、構築した構築データ（構築セグメント）に対して不正データ列を検索する。
この検索方法をペイロード方式（ペイロード精査）とする。
【００１３】
ここで、ＩＤＰ２００は、ペイロード精査する構築セグメントの前後に連結するセグメントとの間に跨る不正データ列についてもペイロード精査を行うため、ペイロード精査実施時に、構築セグメントの先頭と最終の一部（境界データ）をコピーして保持する。
この境界データは、ＩＤＰ２００が境界データの前後に接続するセグメントを受信して、構築セグメントサイズが再度、ペイロードサイズ以上になった際に、受信したセグメントと一緒にペイロード精査を行われる。
【００１４】
図１は、実施の形態１におけるＩＤＰ２００の構成図１である。
送信元と送信先の組合せ（セッション）単位で各セグメントを管理し、ペイロード精査を行うＩＤＰ２００の構成について、図１に基づいて説明する。
【００１５】
ＩＤＰ２００が備える各構成について以下に説明する。
送受信部２１０は、接続されたネットワークに対してＩＰパケットの送受信を行う。
セッション管理部２２０は、セッション単位で各セグメントを管理する。
セッション検索部２３０は、受信したＩＰパケットのセグメントに対するセッションが既に管理されているかを検索する。
構築部１１０は、各セグメントをデータの順番で連結して構築セグメントを構築する。
エントリ記憶部１２０は、セッション単位でエントリを有し、各エントリで、対応するセッションの各セグメントを記憶する。
データ列検索部１３０は、構築セグメントに対して不正データ列を検索する。
【００１６】
送受信部２１０は、ＩＰパケットを受信し、受信したＩＰパケットを出力する。
セッション管理部２２０は、送受信部２１０が出力したＩＰパケットを入力し、入力したＩＰパケットに含まれるセグメントを取得し、取得したセグメントのセッションに対するセッション情報を出力する。
セッション検索部２３０は、セッション管理部２２０が出力したセッション情報を入力し、入力したセッション情報に基づいてエントリを検索してセッション検索結果を出力する。
セッション管理部２２０は、セッション検索部２３０が出力したセッション検索結果を入力し、入力したセッション検索結果と、取得したセグメントとを出力する。
構築部１１０は、セッション管理部２２０が出力したセッション検索結果とセグメントとを入力し、入力したセッション検索結果と入力したセグメントとに基づいて、入力したセグメントをエントリに記憶する。
構築部１１０は、エントリに記憶された先頭セグメントから連続するデータの合計サイズを算出し、算出した結果、合計サイズがペイロードサイズに達する場合、エントリに記憶された先頭セグメントから連続するデータを構築セグメントとして出力する。
データ列検索部１３０は、構築部１１０が出力した構築セグメントを入力し、入力した構築セグメントに対して不正データ列を検索し、データ列検索結果を出力する。
構築部１１０は、データ列検索部１３０が出力したデータ列検索結果を入力し、入力したデータ列検索結果に基づいて構築結果を生成し、生成した構築結果を出力する。
セッション管理部２２０は、構築部１１０が出力した構築結果を入力し、入力した構築結果に基づいてＩＰパケットの送信命令を出力する。
送受信部２１０は、セッション管理部２２０が出力した送信命令を入力し、入力した送信命令に基づいてＩＰパケットを送信する。
【００１７】
ここで、構築部１１０とエントリ記憶部１２０とデータ列検索部１３０とをデータ列検索装置１００とする。
データ列検索装置１００は、セグメントに限らず、分割データを入力し、入力した分割データに対して、分割データを跨ってデータ列を検索する。
【００１８】
図２は、実施の形態１におけるエントリ記憶部１２０の構成図１である。
セッション単位でエントリを有し、各エントリで、対応するセッションの各セグメントを記憶するエントリ記憶部１２０の構成について、図２に基づいて説明する。
【００１９】
エントリ記憶部１２０は複数のエントリを備える。
エントリ記憶部１２０の備える各エントリは、セグメントを記憶するセグメント領域と、セグメントのサイズを示すセグメント長領域と、セグメントの順序を示す次ポインタ領域とを備える。
ここで、セグメント領域とセグメント長領域と次ポインタ領域との組み合わせをセグメントエントリとする。
各エントリは複数のセグメントエントリを備える。
また、各エントリは、順序が先頭であるセグメントの記憶されるセグメントエントリを示す先頭ポインタ領域と、セグメントが記憶されていない空きセグメントエントリを示す空きポインタ領域とを備える。
【００２０】
例えば、Ｓ１からＳ７は同一のセッションで分割されたセグメントで、ＩＤＰ２００の構築部１１０が、Ｓ６、Ｓ１、Ｓ２、Ｓ５、Ｓ７の順番で入力する。
また、Ｓ１からＳ７のセッションはエントリ２に対応する。
また、Ｓ３、Ｓ４の入力はないとする。
また、ＩＤＰ２００のエントリ記憶部１２０のエントリ２にセグメントが記憶されていないとき、エントリ２の空きポインタ領域は０を示し、エントリ２の先頭ポインタ領域は設定されていないとする。
ここで、構築部１１０は、以下のようにして、入力した各セグメントをエントリに記憶する。
【００２１】
Ｓ６を入力したとき、構築部１１０は、Ｓ６のセッションに対応するエントリ２の空きポインタ領域を参照し、参照した空きポインタ領域が示すセグメントエントリ０のセグメント領域にＳ２を記憶する。
また、セグメントエントリ０のセグメント長領域に、Ｓ６のセグメント長を設定する。
また、Ｓ６以外のセグメントを入力していないため、セグメントエントリ０の次ポインタ領域にはアドレスを設定しない。
また、エントリ２の先頭ポインタ領域に、Ｓ６が記憶されたセグメントエントリ０を示す０を設定する。
また、エントリ２の空きポインタ領域に、空きセグメントエントリであるセグメントエントリ１を示す１を設定する。
【００２２】
Ｓ１を入力したとき、構築部１１０は、Ｓ１のセッションに対応するエントリ２の空きポインタ領域を参照し、参照した空きポインタ領域が示すセグメントエントリ１のセグメント領域にＳ１を記憶する。
また、セグメントエントリ１のセグメント長領域に、Ｓ１のセグメント長を設定する。
また、入力したセグメント（Ｓ１）は、エントリ２の先頭ポインタ領域が示すセグメントエントリ０に記憶されたセグメント（Ｓ６）の前に位置するので、エントリ２の先頭ポインタ領域に、Ｓ１が記憶されたセグメントエントリ１を示す１を設定する。
また、Ｓ１が記憶されたセグメントエントリ１の次ポインタ領域に、Ｓ６が記憶されたセグメントエントリ０を示す０を設定する。
また、エントリ２の空きポインタ領域に、空きセグメントエントリであるセグメントエントリ２を示す２を設定する。
ここで、各セグメントの順序は、各ＴＣＰセグメントのＴＣＰヘッダのシーケンス番号に基づいて判定する。
【００２３】
Ｓ２を入力したとき、構築部１１０は、Ｓ２のセッションに対応するエントリ２の空きポインタ領域を参照し、参照した空きポインタ領域が示すセグメントエントリ２のセグメント領域にＳ２を記憶する。
また、セグメントエントリ２のセグメント長領域に、Ｓ２のセグメント長を設定する。
また、ＴＣＰヘッダのシーケンス番号に基づいて判定する入力したセグメント（Ｓ２）の順序は、エントリ２の先頭ポインタ領域が示すセグメントエントリ１に記憶されたセグメント（Ｓ１）と、Ｓ１が記憶されたセグメントエントリ１の次ポインタ領域が示すセグメントエントリ０に記憶されたセグメント（Ｓ６）との間である。
そこで、Ｓ１が記憶されたセグメントエントリ１の次ポインタ領域に、Ｓ２が記憶されたセグメントエントリ２を示す２を設定し、Ｓ２が記憶されたセグメントエントリ２の次ポインタ領域に、Ｓ６が記憶されたセグメントエントリ０を示す０を設定する。
また、エントリ２の空きポインタ領域に、空きセグメントエントリであるセグメントエントリ３を示す３を設定する。
【００２４】
構築部１１０は、同様にして、Ｓ５、Ｓ７と入力し、入力した各セグメントをエントリ２に記憶する。
【００２５】
ここで、Ｓ７を入力してエントリ２に記憶するとき、エントリ２に記憶済みのＳ６、Ｓ１、Ｓ２、Ｓ５との順序を判定するため、エントリ２の先頭ポインタ領域と、各セグメントエントリの次ポインタ領域との合計５回のポインタ領域とセグメント長領域との参照処理が発生する。
【００２６】
また、Ｓ５とＳ６とＳ７とから成る構築セグメントの構築セグメントサイズが、ペイロードサイズ以上になっても、Ｓ１とＳ２とから成る、エントリ２に記憶される先頭の構築セグメントの構築セグメントサイズが、ペイロードサイズに満たないため、ペイロード精査を行わない。
このため、本来ならペイロード精査を行い、再利用できるＳ５とＳ６とＳ７とを記憶したメモリ領域を保持しなければならない。
【００２７】
図３は、実施の形態１におけるペイロード精査処理のフローチャート１である。
ＩＤＰ２００が、セッション単位でエントリを有し、各エントリで、対応するセッションの各セグメントを記憶し、ペイロード精査をする処理の流れについて、図３に基づいて説明する。
【００２８】
送受信部２１０は、ＩＰパケットを受信し、受信したＩＰパケットを出力する（Ｓ１０１）。
【００２９】
セッション管理部２２０は、送受信部２１０が出力したＩＰパケットを入力し、入力したＩＰパケットのＩＰヘッダの情報（発信元ＩＰアドレス、宛先ＩＰアドレス）と、入力したＩＰパケットに含まれるセグメントのヘッダの情報（発信元ポート番号、宛先ポート番号）とを含むセッション情報を出力する。
セッション検索部２３０は、セッション管理部２２０が出力したセッション情報を入力し、入力したセッション情報の発信元ＩＰアドレスと宛先ＩＰアドレスと発信元ポート番号と宛先ポート番号とに対応するセッションのエントリを検索する。
セッション検索部２３０は、対応するセッションのエントリの有無と、検索したエントリを示すエントリ番号とを含むセッション検索結果を出力する（Ｓ１０２）。
【００３０】
セッション管理部２２０は、セッション検索部２３０が出力したセッション検索結果と、入力したＩＰパケットに含まれるセグメントとを出力する。
構築部１１０は、セッション管理部２２０が出力したセッション検索結果とセグメントとを入力し、入力したセッション検索結果に含まれるエントリの有無に基づいて、入力したセグメントと同一セッションのエントリの有無を判定する（Ｓ１０３）。
【００３１】
構築部１１０は、同一セッションのエントリが無いと判定した場合、エントリ記憶部１２０に、入力したセグメントのセッションに対するエントリを作成する（Ｓ１０４）。
【００３２】
構築部１１０は、同一セッションのエントリが有ると判定した場合、入力したセグメントを、入力したセッション検索結果に含まれるエントリ番号の示すエントリに記憶してセグメントを構築し、同一セッションのエントリが無いと判定した場合、入力したセグメントを作成したエントリに記憶してセグメントを構築する（Ｓ１０５）。
【００３３】
構築部１１０は、セグメントを構築した結果の構築セグメントサイズと、ペイロードサイズとのサイズの大小を判定する（Ｓ１０６）。
【００３４】
構築部１１０は、構築セグメントサイズが、ペイロードサイズ未満と判定した場合、構築セグメントサイズがペイロードサイズ未満であることを構築結果として出力する。
セッション管理部２２０は、構築部１１０が出力した構築結果に基づいて、入力したＩＰパケットを宛先ＩＰアドレスに中継可能と判定し、入力したＩＰパケットとＩＰパケットの送信命令とを出力する。
送受信部２１０は、セッション管理部２２０が出力したＩＰパケットと送信命令とを入力し、入力した送信命令に基づいて、入力したＩＰパケットを送信し、ＩＰパケットの受信を待つ（Ｓ１０７）。
【００３５】
構築部１１０は、構築セグメントサイズが、ペイロードサイズ以上と判定した場合、構築セグメントを出力する。
データ列検索部１３０は、構築部１１０が出力した構築セグメントを入力し、入力した構築セグメントに対してペイロード精査をする（Ｓ１０８）。
【００３６】
データ列検索部１３０は、不正データ列の有無をデータ列検索結果として出力する。
構築部１１０は、データ列検索部１３０が出力したデータ列検索結果を入力し、入力したデータ列検索結果を構築結果として出力する。
セッション管理部２２０は、構築部１１０が出力した構築結果を入力し、入力した構築結果に基づいて、不正侵入の検出を判定する。
このとき、入力した構築結果が不正データ列有りを示していた場合、入力したＩＰパケットを不正侵入と判定する（Ｓ１０９）。
【００３７】
セッション管理部２２０は、不正侵入を検出した場合、入力したＩＰパケットを廃棄する（Ｓ１１０）。
【００３８】
ここでＩＤＰ２００は、構築セグメントに不正データ列を検出したときの入力ＩＰパケットを廃棄することで、ＩＰパケットの受信側で、不正侵入であるデータが構築され処理されることを防ぎ、不正侵入を遮断する。
【００３９】
セッション管理部２２０は、不正侵入を検出しなかった場合、入力したＩＰパケットを宛先ＩＰアドレスに中継可能と判定し、入力したＩＰパケットとＩＰパケットの送信命令とを出力する。
送受信部２１０は、セッション管理部２２０が出力したＩＰパケットと送信命令とを入力し、入力した送信命令に基づいて、入力したＩＰパケットを送信する（Ｓ１１１）。
【００４０】
図４は、実施の形態１におけるセグメントの構築処理のフローチャート１である。
図３のＳ１０５で示す構築部１１０が行うセグメントの構築処理の流れを図４に基づいて説明する。
【００４１】
入力したエントリ番号の示すエントリの空きポインタを取得する。
空きポインタには、空きセグメントエントリを示すセグメントエントリ番号を設定する（Ｓ２０１）。
【００４２】
取得した空きポインタの示すセグメントエントリのセグメント領域に、入力したセグメントを記憶する（Ｓ２０２）。
【００４３】
入力したエントリ番号の示すエントリの先頭ポインタを取得する（Ｓ２０３）。
【００４４】
取得した先頭ポインタの示すセグメントエントリの次ポインタを取得する（Ｓ２０４）。
【００４５】
取得した先頭ポインタの示すセグメントエントリのセグメントとそのセグメント長と、取得した次ポインタの示すセグメントエントリのセグメントとに基づいて、入力したセグメントの設定可否を判定する。
先頭ポインタの示すセグメントエントリのセグメントの最終位置（セグメントの先頭位置からセグメント長分先の位置）と、次ポインタの示すセグメントエントリのセグメントの先頭位置との間に、入力したセグメントが位置する場合に設定可と判定する（Ｓ２０５）。
【００４６】
入力したセグメントの設定を可能と判定しなかった場合、次のセグメントとの間に、入力したセグメントが位置するか判定するため、取得した次ポインタの示すセグメントエントリの次ポインタを取得し、判定処理を繰り返す。
【００４７】
入力したセグメントの設定を可能と判定した場合、入力したセグメントの前に位置するセグメントのセグメントエントリの次ポインタを、入力したセグメントを記憶したセグメントエントリを示すセグメントエントリ番号に修正する（Ｓ２０６）。
【００４８】
入力したセグメントを記憶したセグメントエントリのセグメント長と次ポインタを設定する。
次ポインタには、入力したセグメントの後ろに位置するセグメントのセグメントエントリを示すセグメントエントリ番号を設定する（Ｓ２０７）。
【００４９】
ここで、構築処理（Ｓ１０５）は、先頭ポインタで示されるセグメントエントリのセグメントから連続するデータ分のサイズを構築セグメントサイズとして出力する。
【００５０】
上記で説明したデータ列検索装置１００は、構築部１１０が行うセグメントの構築時に先頭からセグメントの連結関係を調べるため、ポインタ領域やセグメント長領域などに対する参照処理回数が多い。
また、同一セッションにおいて先頭の構築セグメントの構築セグメントサイズがペイロードサイズに満たない場合、後方に位置する構築セグメントをペイロード精査しないため、余計に記憶領域を使用する。
【００５１】
次に、上記で説明したデータ列検索装置１００に対して、構築部１１０が行うセグメントの構築時の参照処理回数を減らし、加えて、同一セッションにおいて先頭であるかないかに関わらず、ペイロード精査を実行し、記憶領域を再利用するデータ列検索装置１００を説明する。
【００５２】
図５は、実施の形態１におけるＩＤＰ２００の構成図２である。
連結するセグメントを一つの単位として各セグメントを管理し、ペイロード精査を行うＩＤＰ２００の構成について、図５に基づいて説明する。
【００５３】
ＩＤＰ２００が備える各構成について以下に説明する。
送受信部２１０は、接続されたネットワークに対してＩＰパケットの送受信を行う。
エントリ管理部２４０は、連結するセグメントを一つの単位として各セグメントを管理する。
エントリ検索部２５０は、受信したＩＰパケットのセグメントと連結関係にあるセグメントが既に管理されているかを検索する。
構築部１１０は、各セグメントをデータの順番で連結して構築セグメントを構築する。
エントリ記憶部１２０は、連結するセグメントを一つの単位としてエントリを有し、各エントリで、連結関係にある各セグメントを記憶する。
データ列検索部１３０は、構築セグメントに対して不正データ列を検索する。
【００５４】
また、エントリ検索部２５０は、検索機能を持つメモリであるＣＡＭ（Ｃｏｎｔｅｎｔ  Ａｄｄｒｅｓｓａｂｌｅ  Ｍｅｍｏｒｙ）にすることで、ＩＤＰ２００の処理能力を向上することができる。
【００５５】
送受信部２１０は、ＩＰパケットを受信し、受信したＩＰパケットを出力する。
エントリ管理部２４０は、送受信部２１０が出力したＩＰパケットを入力し、入力したＩＰパケットに含まれるセグメントを取得し、取得したセグメントに対する検索情報を出力する。
エントリ検索部２５０は、エントリ管理部２４０が出力した検索情報を入力し、入力した検索情報に基づいて、エントリに記憶されたセグメントとエントリ管理部２４０が取得したセグメントとの連結関係を検索してエントリ検索結果を出力する。
エントリ管理部２４０は、エントリ検索部２５０が出力したエントリ検索結果を入力し、入力したエントリ検索結果と、取得したセグメントとを出力する。
構築部１１０は、エントリ管理部２４０が出力したエントリ検索結果とセグメントとを入力し、入力したエントリ検索結果とセグメントとに基づいて、エントリに記憶されたセグメントのサイズと、入力したセグメントのサイズとの合計サイズ（構築セグメントサイズ）を算出する。
構築部１１０は、算出した合計サイズがペイロードサイズに達する場合、入力したセグメントに対して連結関係にあるセグメントと入力したセグメントとを構築セグメントとして出力する。
また、構築部１１０は、入力したエントリ検索結果に基づいて、入力したセグメントをエントリに記憶する。
データ列検索部１３０は、構築部１１０が出力した構築セグメントを入力し、入力した構築セグメントに対して不正データ列を検索し、データ列検索結果を出力する。
構築部１１０は、データ列検索部１３０が出力したデータ列検索結果を入力し、入力したデータ列検索結果に基づいて構築結果を生成し、生成した構築結果を出力する。
エントリ管理部２４０は、構築部１１０が出力した構築結果を入力し、入力した構築結果に基づいてＩＰパケットの送信命令を出力する。
送受信部２１０は、エントリ管理部２４０が出力した送信命令を入力し、入力した送信命令に基づいてＩＰパケットを送信する。
【００５６】
ここで、構築部１１０とエントリ記憶部１２０とデータ列検索部１３０とをデータ列検索装置１００とする。
データ列検索装置１００は、セグメントに限らず、分割データを入力し、入力した分割データに対して、分割データを跨ってデータ列を検索する。
【００５７】
データ列検索装置１００がＩＰパケットに含まれるセグメントに対して、セグメントを跨って不正データ列を検索することができることにより、ＩＤＰ２００にデータ列検索機能を実現することができる。
【００５８】
ＩＤＰ２００がデータ列検索装置１００を備えることにより、セグメントを効率良く管理および構築しながら不正データ列の検索を行え、不正侵入を検知および遮断することができる。
【００５９】
図６は、実施の形態１におけるエントリ記憶部１２０の構成図２である。
連結するセグメントを一つの単位としてエントリを有し、各エントリで、対応する連結関係にあるセグメントを記憶するエントリ記憶部１２０の構成について、図６に基づいて説明する。
【００６０】
エントリ記憶部１２０は複数のエントリを備える。
エントリ記憶部１２０の備える各エントリは、連結関係の基準となるセグメントを記憶する共用フラグメント領域（ＣＦＦ（Ｃｏｍｍｏｎ  Ｆｒａｇｍｅｎｔ  Ｆｉｅｌｄ））１２３を備える。
エントリ記憶部１２０の備える各エントリは、ＣＦＦ１２３に記憶されるセグメントの前に位置するセグメントを記憶する先頭フラグメント領域（ＨＦＦ（Ｈｅａｄ  Ｆｒａｇｍｅｎｔ  Ｆｉｅｌｄ））１２２を備える。
エントリ記憶部１２０の備える各エントリは、ＣＦＦ１２３に記憶されるセグメントの後ろに位置するセグメントを記憶する最終フラグメント領域（ＦＦＦ（Ｆｏｏｔ  Ｆｒａｇｍｅｎｔ  Ｆｉｅｌｄ））１２４を備える。
ここで、ＣＦＦ１２３とＨＦＦ１２２とＦＦＦ１２４のサイズは、ペイロードサイズと同じとし、ＣＦＦ１２３、ＨＦＦ１２２、ＦＦＦ１２４のそれぞれで記憶するセグメントのサイズが各領域のサイズ（ペイロードサイズ）を越えた場合に、ペイロード精査を実施する。
エントリ記憶部１２０の備える各エントリは、各エントリに記憶されるセグメントの接続情報を記憶する接続情報領域（ＣＩ（Ｃｏｎｎｅｃｔ  Ｉｎｆｏｒｍａｔｉｏｎ））１２１を備える。
ＣＩ１２１の記憶する接続情報には、ＣＦＦ１２３とＨＦＦ１２２とＦＦＦ１２４とのそれぞれに対して、記憶されるセグメントのサイズと、記憶されるセグメントの先頭アドレスと、記憶されるセグメントの最終アドレスとを含む。
【００６１】
図７は、実施の形態１におけるエントリの使用例１を示す図である。
連結関係にあるセグメントを一つの単位として記憶するエントリの使用例を図７に基づいて説明する。
【００６２】
例えば、Ｓ１からＳ７は同一のセッションで分割されたセグメントで、ＩＤＰ２００の構築部１１０が、Ｓ６、Ｓ１、Ｓ２、Ｓ５、Ｓ７の順番で入力する。
また、Ｓ３、Ｓ４の入力はないとする。
ここで、構築部１１０は、以下のようにして、入力した各セグメントをエントリに記憶する。
【００６３】
Ｓ６を入力したとき、構築部１１０は、Ｓ６と連結関係にあるセグメント（Ｓ５またはＳ７）がエントリに記憶されていないため、何もセグメントが記憶されていないエントリ１のＣＦＦ１２３の先頭からＳ６を記憶する。
【００６４】
Ｓ１を入力したとき、構築部１１０は、Ｓ１と連結関係にあるセグメント（Ｓ２）がエントリに記憶されていないため、何もセグメントが記憶されていないエントリ２のＣＦＦ１２３の先頭からＳ１を記憶する。
【００６５】
Ｓ２を入力したとき、構築部１１０は、Ｓ２と連結関係にあるセグメント（Ｓ１）がエントリ２に記憶されているため、データが連続するようにＳ２をエントリ２のＳ１に連結して記憶する。
【００６６】
Ｓ５を入力したとき、構築部１１０は、Ｓ５と連結関係にあるセグメント（Ｓ６）がエントリ１に記憶されているため、Ｓ５をエントリ１のＣＦＦに記憶する。
ここで、Ｓ５はＳ６の前に位置するため、ＣＦＦの最終に位置するようにＳ５を記憶する。
【００６７】
Ｓ７を入力したとき、構築部１１０は、Ｓ７と連結関係にあるセグメント（Ｓ６）がエントリ１に記憶されているため、データが連続するようにＳ７をエントリ２のＳ６に連結して記憶する。
【００６８】
以上のように、同一セッションのセグメントにおいても、連結関係にあるセグメント（Ｓ１とＳ２、またはＳ５とＳ６とＳ７）を一つの単位として別々のエントリに記憶する。
【００６９】
各エントリに記憶されたセグメントと連結する関係にないセグメントの入力に対して、新たなエントリを設定することで、同一セッションの先頭の構築セグメントであるかないかに関わらず、ペイロードサイズに達した構築セグメントに対してペイロード精査を行うことができる。
【００７０】
図８と図９は、実施の形態１におけるエントリの使用例２を示す図である。
ＣＦＦ１２３に記憶されたセグメントの後ろに連結するセグメントを入力した場合のエントリの使用例を図８と図９とに基づいて説明する。
【００７１】
Ｓ１からＳ４は同一のセッションで分割されたセグメントで、ＩＤＰ２００の構築部１１０が、Ｓ１、Ｓ２、Ｓ３、Ｓ４の順番で入力した場合、構築部１１０は、以下のようにして、入力した各セグメントをエントリに記憶する。
【００７２】
図８において、Ｓ１を入力したとき、構築部１１０は、Ｓ１をＣＦＦ１２３の先頭からＳ１を記憶する。
Ｓ２を入力したとき、構築部１１０は、Ｓ２をＳ１に連結して記憶する。
Ｓ３を入力したとき、ＣＦＦ１２３に記憶されたＳ１とＳ２とのサイズと、入力したＳ３のサイズとの合計サイズが、ＣＦＦ１２３のサイズ（ペイロードサイズ）に達するため、構築部１１０は、Ｓ１とＳ２とＳ３とを構築セグメントとして出力する。
また、構築部１１０は、Ｓ３をＳ２に連結して記憶する。
このとき、Ｓ１のサイズとＳ２のサイズとＳ３のサイズとの合計サイズと、ペイロードサイズとの差分のサイズ分、Ｓ３の最終側のデータはＦＦＦ１２４に記憶される。
【００７３】
図９において、Ｓ４を入力したとき、構築部１１０は、Ｓ４をＳ３に連結して記憶する。
Ｓ５を入力したとき、ＦＦＦ１２４に記憶されたＳ３（最終側のデータ）とＳ４とのサイズと、入力したＳ５のサイズとの合計サイズが、ＦＦＦ１２４のサイズ（ペイロードサイズ）に達するため、構築部１１０は、Ｓ３とＳ４とＳ５とを構築セグメントとして出力する。
また、構築部１１０は、Ｓ５をＳ４に連結して記憶する。
このとき、Ｓ３（最終側のデータ）のサイズとＳ４のサイズとＳ５のサイズとの合計サイズと、ペイロードサイズとの差分のサイズ分、Ｓ５の最終側のデータはＦＦＦ１２４の先頭から記憶される。
【００７４】
図１０と図１１と図１２は、実施の形態１におけるエントリの使用例３を示す図である。
ＣＦＦ１２３に記憶されたセグメントの前に連結するセグメントを入力した場合のエントリの使用例を図１０と図１１と図１２とに基づいて説明する。
【００７５】
Ｓ１からＳ６は同一のセッションで分割されたセグメントで、ＩＤＰ２００の構築部１１０が、Ｓ６、Ｓ５、Ｓ４、Ｓ３、Ｓ２の順番で入力した場合、構築部１１０は、以下のようにして、入力した各セグメントをエントリに記憶する。
【００７６】
図１０において、Ｓ６を入力したとき、構築部１１０は、Ｓ６をＣＦＦ１２３の先頭からＳ６を記憶する。
Ｓ５を入力したとき、Ｓ５はＳ６の前に位置するデータであるため、構築部１１０は、Ｓ５をＣＦＦ１２３の最終に位置するように記憶する。
【００７７】
図１１において、Ｓ４を入力したとき、ＣＦＦ１２３に記憶されたＳ６とＳ５とのサイズと、入力したＳ４のサイズとの合計サイズが、ＣＦＦ１２３のサイズ（ペイロードサイズ）に達するため、構築部１１０はＳ４とＳ５とＳ６とを構築セグメントとして出力する。
また、構築部１１０は、Ｓ４をＳ５に連結して記憶する。
このとき、Ｓ４のサイズとＳ５のサイズとＳ６のサイズとの合計サイズと、ペイロードサイズとの差分のサイズ分、Ｓ４の先頭側のデータはＨＦＦ１２２に記憶される。
Ｓ３を入力したとき、構築部１１０は、Ｓ３をＳ４に連結して記憶する。
【００７８】
図１２において、Ｓ２を入力したとき、ＨＦＦ１２２に記憶されたＳ３とＳ４（先頭側のデータ）とのサイズと、入力したＳ２のサイズとの合計サイズが、ＨＦＦ１２２のサイズ（ペイロードサイズ）に達するため、構築部１１０は、Ｓ２とＳ３とＳ４とを構築セグメントとして出力する。
また、構築部１１０は、Ｓ２をＳ３に連結して記憶する。
このとき、Ｓ２のサイズとＳ３のサイズとＳ４（先頭側のデータ）のサイズとの合計サイズと、ペイロードサイズとの差分のサイズ分、Ｓ２の先頭側のデータはＨＦＦ１２２の最終に位置するように記憶される。
【００７９】
上記のように、構築部１１０は、連結関係にあるセグメントをＣＦＦ１２３、ＨＦＦ１２２、ＦＦＦ１２４に記憶し、また、構築セグメントを出力する。
【００８０】
ここで、構築部１１０は、構築セグメントサイズとペイロードサイズとの差分のサイズ分、入力したセグメントをＨＦＦ１２２またはＦＦＦ１２４に記憶することで、さらに、入力したセグメントとの間に跨る不正データ列を検出することができる。
【００８１】
また、ＣＦＦ１２３とＨＦＦ１２２とＦＦＦ１２４との各サイズがペイロードサイズと同じであることで、検索するデータサイズ分のセグメントを管理することができ、使用する領域サイズを減らすことができる。
【００８２】
図１３は、実施の形態１におけるペイロード精査処理のフローチャート２である。
ＩＤＰ２００が、連結関係にあるセグメントを一つの単位としてエントリを有し、各エントリで、連結関係にある各セグメントを記憶し、ペイロード精査をする処理の流れについて、図１３に基づいて説明する。
【００８３】
送受信部２１０は、ＩＰパケットを受信し、受信したＩＰパケットを出力する（Ｓ３０１）。
【００８４】
エントリ管理部２４０は、送受信部２１０が出力したＩＰパケットを入力し、入力したＩＰパケットのＩＰヘッダの情報（発信元ＩＰアドレス、宛先ＩＰアドレス）と、入力したＩＰパケットに含まれるセグメントのヘッダの情報（発信元ポート番号、宛先ポート番号）とを含む検索情報を出力する。
エントリ検索部２５０は、エントリ管理部２４０が出力した検索情報を入力し、入力した検索情報の発信元ＩＰアドレスと宛先ＩＰアドレスと発信元ポート番号と宛先ポート番号とに対応し、連結関係にあるセグメントを記憶するエントリを検索する。
エントリ検索部２５０は、対象となるエントリの有無と、セグメントの連結関係（エントリに記憶されるセグメントの前に連結するか、または、後ろに連結するか）と、検索したエントリを示すエントリ番号とを含むエントリ検索結果を出力する（Ｓ３０２）。
【００８５】
エントリ管理部２４０は、エントリ検索部２５０が出力したエントリ検索結果と、入力したＩＰパケットに含まれるセグメントとを出力する。
構築部１１０は、エントリ管理部２４０が出力したエントリ検索結果とセグメントとを入力し、入力したエントリ検索結果に含まれるエントリの有無に基づいて、入力したセグメントと連結関係にあるセグメントを記憶するエントリの有無を判定する（Ｓ３０３）。
【００８６】
構築部１１０は、入力したセグメントと連結関係にあるセグメントを記憶するエントリが無いと判定した場合、エントリ記憶部１２０に、入力したセグメントを記憶するエントリを作成する（Ｓ３０４）。
【００８７】
構築部１１０は、入力したセグメントのサイズと、入力したエントリ検索結果に含まれるエントリ番号の示すエントリに記憶されるセグメントのサイズとの合計サイズ（構築セグメントサイズ）と、ペイロードサイズとのサイズの大小を判定する（Ｓ３０５）。
【００８８】
構築部１１０は、構築セグメントサイズが、ペイロードサイズ未満と判定した場合、入力したセグメントを、入力したエントリ検索結果に含まれるエントリ番号の示すエントリ、または作成したエントリに記憶してセグメントを構築する（Ｓ３０６）。
【００８９】
さらに、構築部１１０は、構築セグメントサイズがペイロードサイズ未満であることを構築結果として出力する。
エントリ管理部２４０は、構築部１１０が出力した構築結果に基づいて、入力したＩＰパケットを宛先ＩＰアドレスに中継可能と判定し、入力したＩＰパケットとＩＰパケットの送信命令とを出力する。
送受信部２１０は、エントリ管理部２４０が出力したＩＰパケットと送信命令とを入力し、入力した送信命令に基づいて、入力したＩＰパケットを送信し、他のＩＰパケットの受信を待つ（Ｓ３０７）。
【００９０】
構築部１１０は、構築セグメントサイズが、ペイロードサイズ以上と判定した場合、構築セグメントを出力する。
データ列検索部１３０は、構築部１１０が出力した構築セグメントを入力し、入力した構築セグメントに対してペイロード精査する（Ｓ３０８）。
【００９１】
また、構築部１１０は、入力したセグメントを、入力したエントリ検索結果に含まれるエントリ番号の示すエントリ、または作成したエントリに記憶してセグメントを構築する（Ｓ３０９）。
【００９２】
データ列検索部１３０は、不正データ列の有無をデータ列検索結果として出力する。
構築部１１０は、データ列検索部１３０が出力したデータ列検索結果を入力し、入力したデータ列検索結果を構築結果として出力する。
エントリ管理部２４０は、構築部１１０が出力した構築結果を入力し、入力した構築結果に基づいて、不正侵入の検出を判定する。
このとき、入力した構築結果が不正データ列有りを示していた場合、入力したＩＰパケットを不正侵入と判定する（Ｓ３１０）。
【００９３】
エントリ管理部２４０は、不正侵入を検出した場合、入力したＩＰパケットを廃棄する（Ｓ３１１）。
【００９４】
ここでＩＤＰ２００は、構築セグメントに不正データ列を検出したときの入力ＩＰパケットを廃棄することで、ＩＰパケットの受信側で、不正侵入であるデータが構築され処理されることを防ぎ、不正侵入を遮断する。
【００９５】
エントリ管理部２４０は、不正侵入を検出しなかった場合、入力したＩＰパケットを宛先ＩＰアドレスに中継可能と判定し、入力したＩＰパケットとＩＰパケットの送信命令とを出力する。
送受信部２１０は、エントリ管理部２４０が出力したＩＰパケットと送信命令とを入力し、入力した送信命令に基づいて、入力したＩＰパケットを送信する（Ｓ３１２）。
【００９６】
図１４は、実施の形態１におけるセグメントの構築処理のフローチャート２である。
図１３のＳ３０６とＳ３０９で示す構築部１１０が行うセグメントの構築処理の流れを図１４に基づいて説明する。
【００９７】
入力したエントリ検索結果に基づいて、入力したセグメントを記憶する領域を判定する。
入力したエントリ検索結果に含まれるエントリ番号の示すエントリのＣＩ１２１に記憶されるＣＦＦ１２３のセグメントのサイズが、ＣＦＦ１２３のサイズ（ペイロードサイズ）に達していなければ、ＣＦＦ１２３を、入力したセグメントを記憶する領域と判定する。
入力したエントリ検索結果に含まれるエントリ番号の示すエントリのＣＩ１２１に記憶されるＣＦＦ１２３のセグメントのサイズが、ＣＦＦ１２３のサイズ（ペイロードサイズ）に達していれば、入力したエントリ検索結果に含まれるセグメントの連結関係を参照して、入力したセグメントを記憶する領域を判定する。
セグメントの連結関係が、エントリに記憶されるセグメントの前に連結することを示す場合、ＨＦＦ１２２を、入力したセグメントを記憶する領域と判定する。
セグメントの連結関係が、エントリに記憶されるセグメントの後ろに連結することを示す場合、ＦＦＦ１２４を、入力したセグメントを記憶する領域と判定する（Ｓ４０１）。
【００９８】
ＣＦＦ１２３を、入力したセグメントを記憶する領域と判定した場合、入力したエントリ検索結果に含まれるセグメントの連結関係に基づいて、入力したセグメントの連結位置を判定する（Ｓ４０２）。
【００９９】
入力したセグメントがＣＦＦ１２３に記憶されるセグメントの前に位置すると判定した場合、ペイロード精査（Ｓ３０８）の実行の有無を判定する（Ｓ４０３）。
【０１００】
ペイロード精査の実行が有ったと判定した場合、ペイロードサイズと、ＣＦＦ１２３に記憶されるセグメントのサイズとの差分のサイズ分、入力したセグメントの最終側のデータをＣＦＦ１２３に記憶する。
ＣＦＦ１２３に記憶されるセグメントのサイズと、入力したセグメントを記憶する位置とは、ＣＩ１２１に記憶されるＣＦＦ１２３の接続情報を参照する。
また、ＣＦＦ１２３に記憶したセグメント分、ＣＩ１２１に記憶されるＣＦＦ１２３の接続情報を更新する（Ｓ４０４）。
【０１０１】
さらに、ＣＦＦ１２３に記憶していない入力したセグメントの先頭側のデータ、つまり、ＣＦＦ１２３に記憶されるセグメントのサイズと、入力したセグメントのサイズとの合計サイズと、ペイロードサイズとの差分のサイズ分の入力したセグメントの先頭側のデータ、をＨＦＦ１２２の最終に位置するように記憶する。
また、ＨＦＦ１２２に記憶したセグメント分、ＣＩ１２１に記憶されるＨＦＦ１２２の接続情報を更新する（Ｓ４０５）。
【０１０２】
ペイロード精査の実行が無かったと判定した場合、入力したセグメントをＣＦＦ１２３に記憶する。
入力したセグメントを記憶する位置は、ＣＩ１２１に記憶されるＣＦＦ１２３の接続情報を参照する。
また、ＣＦＦ１２３に記憶したセグメント分、ＣＩ１２１に記憶するＣＦＦ１２３の接続情報を更新する（Ｓ４０６）。
【０１０３】
入力したセグメントがＣＦＦ１２３に記憶されるセグメントの後ろに位置すると判定した場合、ペイロード精査（Ｓ３０８）の実行の有無を判定する（Ｓ４０７）。
【０１０４】
ペイロード精査の実行が有ったと判定した場合、ペイロードサイズと、ＣＦＦ１２３に記憶されるセグメントのサイズとの差分のサイズ分、入力したセグメントの先頭側のデータを、ＣＦＦ１２３に記憶されるセグメントに連結して記憶する。
ＣＦＦ１２３に記憶されるセグメントのサイズと、入力したセグメントを記憶する位置とは、ＣＩ１２１に記憶されるＣＦＦ１２３の接続情報を参照する。
また、ＣＦＦ１２３に記憶したセグメント分、ＣＩ１２１に記憶されるＣＦＦ１２３の接続情報を更新する（Ｓ４０８）。
【０１０５】
さらに、ＣＦＦ１２３に記憶していない入力したセグメントの最終側のデータ、つまり、ＣＦＦ１２３に記憶されるセグメントのサイズと、入力したセグメントのサイズとの合計サイズと、ペイロードサイズとの差分のサイズ分の入力したセグメントの最終側のデータ、をＦＦＦ１２４の先頭から記憶する。
また、ＦＦＦ１２４に記憶したセグメント分、ＣＩ１２１に記憶されるＦＦＦ１２４の接続情報を更新する（Ｓ４０９）。
【０１０６】
ペイロード精査の実行が無かったと判定した場合、入力したセグメントをＣＦＦ１２３に記憶されるセグメントに連結して記憶する。
入力したセグメントを記憶する位置は、ＣＩ１２１に記憶されるＣＦＦ１２３の接続情報を参照する。
また、ＣＦＦ１２３に記憶したセグメント分、ＣＩ１２１に記憶するＣＦＦ１２３の接続情報を更新する（Ｓ４１０）。
【０１０７】
ＨＦＦ１２２を、入力したセグメントを記憶する領域と判定した場合、ペイロード精査（Ｓ３０８）の実行の有無を判定する（Ｓ４１１）。
【０１０８】
ペイロード精査の実行が有ったと判定した場合、ペイロードサイズと、ＨＦＦ１２２に記憶されるセグメントのサイズとの差分のサイズ分、入力したセグメントの最終側のデータを、ＨＦＦ１２２に記憶されるセグメントに連結して記憶する。
ＨＦＦ１２２に記憶されるセグメントのサイズと、入力したセグメントを記憶する位置とは、ＣＩ１２１に記憶されるＨＦＦ１２２の接続情報を参照する。
また、ＨＦＦ１２２に記憶したセグメント分、ＣＩ１２１に記憶されるＨＦＦ１２２の接続情報を更新する（Ｓ４１２）。
【０１０９】
さらに、ＨＦＦ１２２に記憶していない入力したセグメントの先頭側のデータ、つまり、ＨＦＦ１２２に記憶されるセグメントのサイズと、入力したセグメントのサイズとの合計サイズと、ペイロードサイズとの差分のサイズ分の入力したセグメントの先頭側のデータ、をＨＦＦ１２２の最終に位置するように記憶する。
また、ＨＦＦ１２２に記憶したセグメント分、ＣＩ１２１に記憶されるＨＦＦ１２２の接続情報を更新する（Ｓ４１３）。
【０１１０】
ペイロード精査の実行が無かったと判定した場合、入力したセグメントをＨＦＦ１２２に記憶されるセグメントに連結して記憶する。
また、ＨＦＦ１２２に記憶したセグメント分、ＣＩ１２１に記憶するＨＦＦ１２２の接続情報を更新する（Ｓ４１４）。
【０１１１】
ＦＦＦ１２４を、入力したセグメントを記憶する領域と判定した場合、ペイロード精査（Ｓ３０８）の実行の有無を判定する（Ｓ４１５）。
【０１１２】
ペイロード精査の実行が有ったと判定した場合、ペイロードサイズと、ＦＦＦ１２４に記憶されるセグメントのサイズとの差分のサイズ分、入力したセグメントの先頭側のデータを、ＦＦＦ１２４に記憶されるセグメントに連結して記憶する。
ＦＦＦ１２４に記憶されるセグメントのサイズと、入力したセグメントを記憶する位置とは、ＣＩ１２１に記憶されるＦＦＦ１２４の接続情報を参照する。
また、ＦＦＦ１２４に記憶したセグメント分、ＣＩ１２１に記憶されるＦＦＦ１２４の接続情報を更新する（Ｓ４１６）。
【０１１３】
さらに、ＦＦＦ１２４に記憶していない入力したセグメントの最終側のデータ、つまり、ＦＦＦ１２４に記憶されるセグメントのサイズと、入力したセグメントのサイズとの合計サイズと、ペイロードサイズとの差分のサイズ分の入力したセグメントの最終側のデータ、をＦＦＦ１２４の先頭から記憶する。
また、ＦＦＦ１２４に記憶したセグメント分、ＣＩ１２１に記憶されるＦＦＦ１２４の接続情報を更新する（Ｓ４１７）。
【０１１４】
ペイロード精査の実行が無かったと判定した場合、入力したセグメントをＦＦＦ１２４に記憶されるセグメントに連結して記憶する。
また、ＦＦＦ１２４に記憶したセグメント分、ＣＩ１２１に記憶するＦＦＦ１２４の接続情報を更新する（Ｓ４１８）。
【０１１５】
ここで、各エントリがＣＩ１２１を備え、ＣＩ１２１にＣＦＦ１２３とＨＦＦ１２２とＦＦＦ１２４との各接続情報を記憶することにより、構築部１１０が、入力したセグメントを記憶する領域の接続情報を参照して、入力したセグメントの構築をすることができ、構築時の参照処理回数を減らし、データ列検索装置１００の処理負荷を軽減することができる。
【０１１６】
図１５は、実施の形態１におけるデータ列検索装置１００とＩＤＰ２００とのハードウェア構成図である。
図１５において、データ列検索装置１００とＩＤＰ２００とは、プログラムを実行するＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）９１１を備えている。ＣＰＵ９１１は、バス９１２を介してＲＯＭ９１３、ＲＡＭ９１４、通信ボード９１５、磁気ディスク装置９２０と接続されている。
ＲＡＭ９１４は、揮発性メモリの一例である。ＲＯＭ９１３、磁気ディスク装置９２０は、不揮発性メモリの一例である。これらは、記憶装置、記憶部あるいは領域の一例である。
通信ボード９１５はネットワークに接続されている。
【０１１７】
磁気ディスク装置９２０には、オペレーティングシステム（ＯＳ）９２１、プログラム群９２３、ファイル群９２４が記憶されている。プログラム群９２３は、ＣＰＵ９１１、ＯＳ９２１により実行される。
【０１１８】
上記プログラム群９２３には、実施の形態の説明において「〜部」として説明する機能を実行するプログラムが記憶されている。プログラムは、ＣＰＵ９１１により読み出され実行される。
ファイル群９２４には、実施の形態の説明において、「〜の判定結果」、「〜の計算結果」、「〜の処理結果」として説明するものが、「〜ファイル」として記憶されている。
また、実施の形態の説明において説明するフローチャートや構成図の矢印の部分は主としてデータの入出力を示し、そのデータの入出力のためにデータは、磁気ディスク装置９２０等のその他の記録媒体に記録される。あるいは、信号線やその他の伝送媒体により伝送される。
【０１１９】
また、実施の形態の説明において「〜部」として説明するものは、ＲＯＭ９１３に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、ハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。
【０１２０】
また、実施の形態を実施するプログラムは、磁気ディスク装置９２０、ＦＤ（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ  ｃａｒｔｒｉｄｇｅ）、光ディスク、ＣＤ（コンパクトディスク）、ＭＤ（ミニディスク）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のその他の記録媒体による記録装置を用いて記憶されても構わない。
【図面の簡単な説明】
【０１２１】
【図１】実施の形態１におけるＩＤＰ２００の構成図１。
【図２】実施の形態１におけるエントリ記憶部１２０の構成図１。
【図３】実施の形態１におけるペイロード精査処理のフローチャート１。
【図４】実施の形態１におけるセグメントの構築処理のフローチャート１。
【図５】実施の形態１におけるＩＤＰ２００の構成図２。
【図６】実施の形態１におけるエントリ記憶部１２０の構成図２。
【図７】実施の形態１におけるエントリの使用例１を示す図。
【図８】実施の形態１におけるエントリの使用例２を示す図。
【図９】実施の形態１におけるエントリの使用例２を示す図。
【図１０】実施の形態１におけるエントリの使用例３を示す図。
【図１１】実施の形態１におけるエントリの使用例３を示す図。
【図１２】実施の形態１におけるエントリの使用例３を示す図。
【図１３】実施の形態１におけるペイロード精査処理のフローチャート２。
【図１４】実施の形態１におけるセグメントの構築処理のフローチャート２。
【図１５】実施の形態１におけるデータ列検索装置１００とＩＤＰ２００とのハードウェア構成図。
【符号の説明】
【０１２２】
１００  データ列検索装置、１１０  構築部、１２０  エントリ記憶部、１３０  データ列検索部、２００  不正侵入検知遮断装置、２１０  送受信部、２２０  セッション管理部、２３０  セッション検索部、２４０  エントリ管理部、２５０  エントリ検索部、１２１  接続情報領域、１２２  先頭フラグメント領域、１２３  共用フラグメント領域、１２４  最終フラグメント領域、９１１  ＣＰＵ、９１２  バス、９１３  ＲＯＭ、９１４  ＲＡＭ、９１５  通信ボード、９２０  磁気ディスク装置、９２１  ＯＳ、９２３  プログラム群、９２４  ファイル群。
【図１】
2005354334.tif 000003
【図２】
2005354334.tif 000004
【図３】
2005354334.tif 000005
【図４】
2005354334.tif 000006
【図５】
2005354334.tif 000007
【図６】
2005354334.tif 000008
【図７】
2005354334.tif 000009
【図８】
2005354334.tif 000010
【図９】
2005354334.tif 000011
【図１０】
2005354334.tif 000012
【図１１】
2005354334.tif 000013
【図１２】
2005354334.tif 000014
【図１３】
2005354334.tif 000015
【図１４】
2005354334.tif 000016
【図１５】
2005354334.tif 000017