(57)【要約】【課題】適切にＰ２Ｐ端末を検出する端末検出方法、および端末検出装置を提供する。【解決手段】通信ネットワークに接続する対象情報処理装置がＰ２Ｐ（Peer To Peer）通信を行うＰ２Ｐ端末であることを検出する端末検出方法であって、第１の情報処理装置から対象情報処理装置送信された第１のパケットと、第２の情報処理装置に対象情報処理装置から送信された第２のパケットとを取得し、取得した第１及び第２のパケットが、所望のデータを検索するための要求であるクエリを構成するパケットであり、第１の情報処理装置から第２の情報処理装置に対象情報処理装置が転送する処理であるクエリルーティングの対象のパケットであるか否かを判定し、この判定結果に基づいて、クエリルーティングの対象となる第１及び第２のパケットの組の件数が、対象情報処理装置がＰ２Ｐ通信を行わないと仮定した場合の、第１及び第２のパケットの組の件数の期待値より所定数以上の場合に、対象情報処理装置がＰ２Ｐ端末であると判定する。【選択図】図５
2011123647.tif 000002
【特許請求の範囲】
【請求項１】
通信ネットワークに接続された対象情報処理装置がＰ２Ｐ（Peer To Peer）通信を行うＰ２Ｐ端末であることを検出する検出装置における端末検出方法であって、前記検出装置は、前記通信ネットワークに接続し、
前記通信ネットワークに接続する第１の情報処理装置から前記対象情報処理装置に送信された第１のパケットを前記通信ネットワークから取得し、
前記通信ネットワークに接続する第２の情報処理装置に前記対象情報処理装置から送信された第２のパケットを前記通信ネットワークから取得し、
取得した前記第１及び第２のパケットが、所望のデータを検索するための要求であるクエリを構成するパケットであり、前記第１の情報処理装置から前記第２の情報処理装置に前記対象情報処理装置が転送する処理であるクエリルーティングの対象のパケットであるか否かを判定し、
前記判定結果に基づいて、前記クエリルーティングの対象となる前記第１及び第２のパケットの組の件数が、前記対象情報処理装置がＰ２Ｐ通信を行わないと仮定した場合の、前記第１及び第２のパケットの組の件数の期待値より所定数以上の場合に，前記対象情報処理装置がＰ２Ｐ通信を行うＰ２Ｐ端末であると判定することを特徴とする端末検出方法。
【請求項２】
前記検出装置は、さらに取得時刻が所定の時間間隔以内の前記第１のパケットの集合である内向きチャンクごとに前記第１のパケットを分類し、取得時刻が所定の時間間隔以内の前記第２のパケットの集合である外向きチャンクごとに前記第２のパケットを分類し、
前記内向きチャンクごとに含まれる末尾の前記第１のパケットの取得時刻と前記外向きチャンクごとに含まれる先頭の前記第２のパケットの取得時刻との差が所定の時間以内であるチャンクペアを検出し、
前記クエリルーティングの対象となる前記第１及び第２のパケットの組の件数を、前記チャンクペアの件数とすることを特徴とする請求項１記載の端末検出方法。
【請求項３】
前記期待値は、前記内向きチャンクと前記外向きチャンクとの取得時刻が一様分布し、前記内向きチャンクと前記外向きチャンクとの間に相関性が無いと仮定した場合に発生するチャンクペアの件数の期待値であることを特徴とする請求項２記載の端末検出方法。
【請求項４】
通信ネットワークに接続し、
前記通信ネットワークに接続する第１の情報処理装置から前記対象情報処理装置に送信された第１のパケットを前記通信ネットワークから取得し、前記通信ネットワークに接続する第２の情報処理装置に前記対象情報処理装置から送信された第２のパケットを前記通信ネットワークから取得するパケット取得部、
取得した前記第１及び第２のパケットが、所望のデータを検索するための要求であるクエリを構成するパケットであり、前記第１の情報処理装置から前記第２の情報処理装置に前記対象情報処理装置が転送する処理であるクエリルーティングの対象のパケットであるか否かを判定するペアリング部、及び、
前記判定結果に基づいて、前記クエリルーティングの対象となる前記第１及び第２のパケットの組の件数が、前記対象情報処理装置がＰ２Ｐ通信を行わないと仮定した場合の、前記第１及び第２のパケットの組の件数の期待値より所定数以上の場合に，前記対象情報処理装置がＰ２Ｐ通信を行うＰ２Ｐ端末であると判定するペア期待値算出部を有することを特徴とする端末検出装置。
【請求項５】
さらに、取得時刻が所定の時間間隔以内の前記第１のパケットの集合である内向きチャンクごとに前記第１のパケットを分類する受信パケット保存部、及び、取得時刻が所定の時間間隔以内の前記第２のパケットの集合である外向きチャンクごとに前記第２のパケットを分類する受信パケット保存部を有し、
前記ペア期待値算出部は、前記内向きチャンクごとに含まれる末尾の前記第１のパケットの取得時刻と前記外向きチャンクごとに含まれる先頭の前記第２のパケットの取得時刻との差が所定の時間以内であるチャンクペアを検出し、前記クエリルーティングの対象となる前記第１及び第２のパケットの組の件数を、前記チャンクペアの件数とすることを特徴とする請求項４記載の端末検出装置。
【請求項６】
前記期待値は、前記内向きチャンクと前記外向きチャンクとの取得時刻が一様分布し、前記内向きチャンクと前記外向きチャンクとの間に相関性が無いと仮定した場合に発生するチャンクペアの件数の期待値であることを特徴とする請求項５記載の端末検出装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信端末を検出する技術に関し、特に、ネットワーク上のトラヒックの中からＰ２Ｐ（Peer to Peer）通信を行っている通信端末を検出する技術に関する。
【背景技術】
【０００２】
インターネット上で行われる通信の一形態として、Ｐ２Ｐ通信と呼ばれる通信の形態がある。これは不特定多数のコンピュータが相互に接続され、ルータなどを介してファイルなどの情報を送受信するインターネットの利用形態である。
【０００３】
一般に、Ｐ２Ｐ通信を行っている端末はＰ２Ｐ端末と呼ばれるが、Ｐ２Ｐ通信は、ファイルの共有などの大きな恩恵を利用者にもたらす一方で、著作権を侵害するファイルの流通に利用されたり、Ｐ２Ｐ通信のトラヒックの増加により通信ネットワークに大きな負荷がかかる等の問題を発生させている。また、Ｐ２Ｐ通信を行うＰ２Ｐソフトウェア（以下、Ｐ２Ｐソフト）を悪用したウイルスによる情報漏洩事故が多発し、社会的な問題となっている。
【０００４】
これらの動きを受け、ネットワーク上のＰ２Ｐ端末を検出し、そのトラヒックを制御しようとする試みがなされている。例えば、非特許文献1には、端末が他の端末に対して開いたＴＣＰ(Transmission Control Protocol)コネクションの接続数と他の端末から受けたＴＣＰコネクションの接続数の比を求めることによりＰ２Ｐ端末を検出する技術が開示されている。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】“Inherent Behaviors for On-line Detection of Peer-to-Peer File Sharing”, In Proceedings of the 10th IEEE Global Internet Symposium, 2007.
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、上述したＰ２Ｐ通信は、様々な種類のプロトコルによる通信手順によって実現されている。したがって、ある一部の種類のプロトコルにのみ着目してＰ２Ｐ端末を検出しても、Ｐ２Ｐ端末のすべてを検出することができるわけではないため、プロトコルに依存しない方法でＰ２Ｐ端末を検出する必要がある。また、今日ではＰ２Ｐ端末上でも様々なネットワークサービスが動作しているため、Ｐ２Ｐ通信以外のネットワークサービスを誤検出しないことも必要となる。
【０００７】
しかしながら、非特許文献１に開示された技術では、端末のＴＣＰコネクションの接続数と非接続数との比率を計算し、この値が一定範囲内である場合、その端末はＰ２Ｐ端末であると判定している。このため、例えば、Ｗｅｂサーバが他の端末にＴＣＰ接続でアクセスしようとした場合、他の端末に対してＷｅｂサービスを提供するサーバとして機能しているにもかかわらず、誤ってＰ２Ｐ端末であると判定されてしまう可能性があるという問題がある。また、ＴＣＰ接続の以外のプロトコル（例えば、ＵＤＰ(User Datagram Protocol)）を用いて通信を行う端末を検出できないという問題がある。
【課題を解決するための手段】
【０００８】
開示する端末検出方法及び端末検出装置は、次のような構成を有する。通信ネットワークに接続された対象情報処理装置がＰ２Ｐ（Peer To Peer）通信を行うＰ２Ｐ端末であることを検出する検出装置、及びその端末検出方法であって、通信ネットワークに接続する第１の情報処理装置から対象情報処理装置に送信された第１のパケット（対象情報処理装置の受信パケット）と、通信ネットワークに接続する第２の情報処理装置に対象情報処理装置から送信された第２のパケット（対象情報処理装置の送信パケット）とを通信ネットワークから取得し、取得した第１及び第２のパケットが、所望のデータを検索するための要求であるクエリを構成するパケットであり、第１の情報処理装置から第２の情報処理装置に対象情報処理装置が転送する処理であるクエリルーティングの対象のパケットであるか否かを判定し、この判定結果に基づいて、クエリルーティングの対象となる第１及び第２のパケットの組の件数が、対象情報処理装置がＰ２Ｐ通信を行わないと仮定した場合の、第１及び第２のパケットの組の件数の期待値より所定数以上の場合に、対象情報処理装置がＰ２Ｐ通信を行うＰ２Ｐ端末であると判定する。
【０００９】
さらに望ましい他の態様は、検出装置は、取得時刻が所定の時間間隔以内の第１のパケットの集合である内向きチャンクごとに第１のパケットを分類し、取得時刻が所定の時間間隔以内の第２のパケットの集合である外向きチャンクごとに第２のパケットを分類し、内向きチャンクごとに含まれる末尾の第１のパケットの取得時刻と外向きチャンクごとに含まれる先頭の第２のパケットの取得時刻との差が所定の時間以内であるチャンクペアを検出し、クエリルーティングの対象となる第１及び第２のパケットの組の件数を、チャンクペアの件数とする。
【発明の効果】
【００１０】
本発明によれば、適切にＰ２Ｐ端末を検出することができる。
【図面の簡単な説明】
【００１１】
【図１】本実施形態にかかる端末検出システムの構成を示す図である。
【図２】クエリ、フロー、パケットチャンク、送信ノード、受信ノード、および対象ノードの関係を示す図である。
【図３】パケットとパケットチャンクの関係の例を示す図である。
【図４】検出装置の主要な物理的な構成を示す図である。
【図５】検出装置の機能的な構成、および物理的な各装置との関係を示す図である。
【図６】外向きフローテーブルの例を示す図である。
【図７】外向きチャンクテーブルの例を示す図である。
【図８】内向きフローテーブルの例を示す図である。
【図９】内向きチャンクテーブルの例を示す図である。
【図１０】内向きチャンク分布テーブルの例を示す図である。
【図１１】外向きチャンク分布テーブルの例を示す図である。
【図１２】チャンクペア分布テーブルの例を示す図である。
【図１３】パケット取得部における処理のフローチャートである。
【図１４】送信パケット保存部における処理のフローチャートである。
【図１５】受信パケット保存部における処理のフローチャートである。
【図１６】ルーティングスコア算出部の処理のフローチャートである。
【図１７】ペアリング部によるクエリルーティング判定処理のフローチャートである。
【図１８】チャンク分布算出部の処理のフローチャートである。
【図１９】チャンクペア期待値算出部の処理のフローチャートである。
【発明を実施するための形態】
【００１２】
本実施形態として開示する端末検出方法及び端末検出装置は、Ｐ２Ｐ（Peer To Peer）通信を行うＰ２Ｐ端末が、所望のデータを検索するための要求であるクエリを転送するクエリルーティングを実行するという性質を用い、次のような構成を有する。通信ネットワークに接続された対象情報処理装置がＰ２Ｐ端末であることを検出する検出装置、及びその端末検出方法であって、通信ネットワークに接続する第１の情報処理装置から対象情報処理装置に送信された第１のパケット（対象情報処理装置の受信パケット）と、通信ネットワークに接続する第２の情報処理装置に対象情報処理装置から送信された第２のパケット（対象情報処理装置の送信パケット）とを通信ネットワークから取得し、取得した第１及び第２のパケットがクエリを構成するパケットであり、第１の情報処理装置から第２の情報処理装置に対象情報処理装置が転送する処理であるクエリルーティングの対象のパケットであるか否かを判定し、この判定結果に基づいて、クエリルーティングの対象となる第１及び第２のパケットの組の件数が、対象情報処理装置がＰ２Ｐ通信を行わないと仮定した場合の、第１及び第２のパケットの組の件数の期待値（対象情報処理装置がＰ２Ｐ端末でない場合に、偶然に生起し得る値）より所定数以上の場合に、対象情報処理装置がＰ２Ｐ端末であると判定する。
【００１３】
以下に添付図面を参照して、実施形態を詳細に説明する。説明では、情報処理装置、ホスト、端末を同義の用語として用いる。
【００１４】
図１は、本実施形態にかかる端末検出システム１０の構成を示す図である。図１に示すように、端末検出システム１０は、送信ホスト１００、送信ホスト１１０、受信ホスト２００、対象ホスト３００、及び、検出装置４００の情報処理装置(端末)と、通信ネットワーク５００とを含んで構成されている。なお、通信ネットワーク５００は、ＷＡＮ（Wide Area Network）やＬＡＮ（Local Area Network）等の通信回線網である。
【００１５】
なお、対象ホスト３００は、Ｐ２Ｐ通信を実行している端末か否かを検出装置４００が検出する対象であり、通信ネットワーク５００に接続する端末から選択され、そのＩＰ（Internet Protocol）アドレスで特定される。すなわち、あるＩＰアドレスで特定できる端末を対象ホスト３００とする。
【００１６】
送信ホスト１００および送信ホスト１１０は、ＴＣＰ(Transmission Control Protocol)やＵＤＰ(User Datagram Protocol)等の種々のプロトコルに従って、対象ホスト３００との間で様々なデータの送受信を行う端末等である。以下の説明では、送信ホスト１００および送信ホスト１１０は、対象ホスト３００に対して所望のデータを検索するための要求を行うものとする。このように、送信ホスト１００や送信ホスト１１０が、対象ホスト３００に対して行う要求のことをクエリと呼ぶこととする。
【００１７】
また、クエリは、検索を行うための複数の検索情報（例えば、検索する対象となる文字列や、その文字列を検索するコマンド、あるいは検索対象となるＷｅｂサーバのページ等の情報）を含んで構成される。送信ホスト１００や送信ホスト１１０は、クエリをクエリと同じ、またはクエリよりも小さいデータ（以下、パケットと呼ぶ。）に分割して対象ホスト３００に送信する。
【００１８】
より具体的には、送信ホスト１００や送信ホスト１１０は、クエリをパケットに分割する際に、送信ホスト１００や送信ホスト１１０の送信ＩＰアドレス、対象ホスト３００の受信ＩＰアドレス、送信ポート番号、受信ポート番号、プロトコルの種類等の各種の情報をヘッダ情報（ＩＰヘッダ）としてパケットに付加し、ヘッダ情報が付加されたパケットを対象ホスト３００に送信している。以下では、ヘッダ情報に含まれる各種の情報のうち、特に、送信ＩＰアドレス、受信ＩＰアドレス、送信ポート番号、受信ポート番号、及びプロトコルの種類、の５つの情報を５タプルと呼ぶ。５タプルの具体的な内容については、検出装置４００を説明する際に合わせて説明する。
【００１９】
さらに、５タプルの各情報が同一であるパケットまたはパケットチャンク（後述）の集合を、特に、フローと呼ぶ。また、フローのうち、各パケットを送信または受信した間隔が、あらかじめ定められた所定の時間の間隔（例えば、１００ミリ秒）以内であるパケットやその集合を、特に、パケットチャンクと呼ぶ。パケットチャンクは、少なくとも１つ以上のパケットを含んで構成されているが、フローおよびパケットチャンクの具体的な内容については、５タプルと同様に後述する。
【００２０】
なお、送信ホスト１００および送信ホスト１１０についての具体的な構成については、その記載を省略するが、クエリを送信できるものであれば、どのような構成でも構わない。また、以下では、クエリを送信する送信ホスト１００や送信ホスト１１０を、単に送信ノードと呼ぶこともある。
【００２１】
受信ホスト２００は、送信ノードの各ホストと同様に、種々のプロトコルに従って、対象ホスト３００との間で様々なデータの送受信を行う端末等である。以下の説明では、受信ホスト２００は、送信ノードから要求されたクエリについてのパケットを含む種々のデータを対象ホスト３００から受信するものとして説明している。
【００２２】
なお、受信ホスト２００についての具体的な構成については、送信ノードの各ホストと同様にその記載を省略するが、クエリを受信できるものであれば、どのような構成でも構わない。また、以下では、クエリを受信する受信ホスト２００のことを、単に受信ノードと呼ぶこともある。
【００２３】
対象ホスト３００は、送信ノードや受信ノードの各ホストと同様に、種々のプロトコルに従って、これらの各ホストとの間で様々なデータの送受信を行う端末等である。以下の説明では、対象ホスト３００は、送信ノードの各ホストからクエリについてのパケットを受信すると、受信ノードまでのルート(経路)を示す経路情報を受信したパケットに付加し、経路情報を付加したパケットを、送信ノード以外のホストである受信ノードに転送する場合について説明している。
【００２４】
なお、以下では、このように、あるクエリについてのパケットを受信した場合に、上述した経路情報をパケットに付加し、ホストに転送することをクエリルーティングと呼ぶこととする。このように、ホストがクエリルーティングを行うことによって、送信ノードの各ホストからのクエリが実行され、送信ノードから要求された各種のデータを検索することができる。また、以下では、対象ホスト３００のことを、対象ノードと呼ぶこともある。
【００２５】
図２および図３は、上述したクエリ、フロー、パケットチャンク、送信ノード、受信ノード、および対象ノードの関係を示す図である。図２は、送信ホスト１００が、１つのクエリ（クエリＡ）としてパケットチャンクＰａとＰｃとを対象ホスト３００に送信し、送信ホスト１１０が、１つのクエリ（クエリＢ）としてパケットチャンクＰｂとＰｄとを対象ホスト３００に送信した場合の例を示している。
【００２６】
なお、図２に示した例では、クエリＡとして送信したパケットチャンクＰｃ、およびクエリＢとして送信したパケットチャンクＰｄは、対象ホスト３００が、既に各パケットチャンクに含まれるパケットに経路情報を付加して受信ホスト２００に送信した状態であり、パケットチャンクＰａが含まれるフローをフロー１、パケットチャンクＰｃおよびパケットチャンクＰｄが含まれるフローをフロー２、パケットチャンクＰｂが含まれるフローをフロー３としてあらわしている。
【００２７】
図２に示すように、対象ホスト３００は、送信ホスト１００からパケットチャンクＰａとパケットチャンクＰｃとを受信すると、順次、受信したパケットチャンクに含まれるパケットに経路情報を付加して受信ホスト２００に転送する。これと同様に、対象ホスト３００は、送信ホスト１１０からパケットチャンクＰｂとパケットチャンクＰｄとを受信すると、順次、受信したパケットチャンクに含まれるパケットに経路情報を付加して受信ホスト２００に転送する。
【００２８】
上述したように、パケットチャンクＰａとパケットチャンクＰｂについては、送信ホスト１００と対象ホスト３００との間で通信されている状態である。したがって、パケットチャンクＰａの５タプルの各情報には、送信ＩＰアドレスとして送信ホスト１００のＩＰアドレス、受信ＩＰアドレスとして対象ホスト３００のＩＰアドレス、送信ポート番号として送信ホスト１００の送信ポート番号、受信ポート番号として対象ホスト３００の受信ポート番号、プロトコルの種類として、例えばＴＣＰが記されている。
【００２９】
また、パケットチャンクＰｂについては、送信ＩＰアドレスとして送信ホスト１１０のＩＰアドレス、受信ＩＰアドレスとして対象ホスト３００のＩＰアドレス、送信ポート番号として送信ホスト１１０の送信ポート番号、受信ポート番号として対象ホスト３００の受信ポート番号、プロトコルの種類として、例えばＴＣＰが、パケットチャンクＰａと同様に記されている。
【００３０】
一方、パケットチャンクＰｃとパケットチャンクＰｄについては、上述したように、すでに対象ホスト３００が受信し、対象ホスト３００と受信ホスト２００との間で通信された状態である。したがって、パケットチャンクＰｃの５タプルの各情報には、送信ＩＰアドレスとして対象ホスト３００のＩＰアドレス、受信ＩＰアドレスとして受信ホスト２００のＩＰアドレス、送信ポート番号として対象ホスト３００の送信ポート番号、受信ポート番号として受信ホスト２００の受信ポート番号、プロトコルの種類として、例えばＴＣＰが記されている。パケットチャンクＰｂについても、パケットチャンクＰａと同様の５タプルの各情報が記されている。
【００３１】
このように、送信ノードからクエリとしてパケットが送信され、送信されたパケットがクエリルーティングされると、そのパケットチャンクの５タプルの各情報は、対象端末３００によって転送される前と後とでは異なっている。このため、後述する検出端末４００では、パケットチャンクの５タプルの各情報が同一であるか否か、さらには転送されるパケットチャンクの時間の間隔に着目することによって、対象端末３００がＰ２Ｐ通信を行っているか否かを判定している。すなわち、クエリルーティングした可能性のあるクエリに含まれるパケットチャンクの組（ペア）について、上述した判定を行うことによって、Ｐ２Ｐ通信を行っている端末を特定している。なお、判定の具体的な内容については後述する。
【００３２】
図３は、パケットとパケットチャンクの関係の例を示す図である。図３では、図２に示したフロー２に含まれるパケットチャンクＰｃおよびパケットチャンクＰｄを例に、横軸を時間（ｔ）として、パケットチャンクＰｃにはパケット１およびパケット２が含まれ、パケットチャンクＰｄにはパケット３およびパケット４が含まれる場合を示している。図面を見易くするために、パケットの送信時間ｔpをパケット間（パケットの末尾と後続するパケットの先頭）の時間（≦Δｌ）やパケットチャンク間（パケットチャンクの末尾と後続するパケットチャンクの先頭）の時間（＞Δｌ）より長く示しているが、実際はｔp＜＜Δｌであり、時間Δｌの観測に際しては、ｔp≒０として扱える。すなわちパケット間の間隔は、パケットの先頭と後続するパケットの先頭との間隔と見なしてもよい。
【００３３】
図３に示すように、パケットチャンクＰｃに含まれるパケット１およびパケット２は、所定の時間の間隔（Δｌ）以下で送信されているため、１つのパケットチャンク（パケットチャンクＰｃ）であると判定する。これと同様に、パケットチャンクＰｄについても、パケット３およびパケット４が所定の時間の間隔（Δｌ）以下で送信されているため、１つのパケットチャンク（パケットチャンク２）であると判定する。一方、パケットチャンクＰｃに含まれるパケット２とパケットチャンクＰｄに含まれるパケット３との時間の間隔は、所定の時間の間隔（Δｌ）よりも長いため、パケット２とパケット３とは１つのパケットチャンクではないと判定される。
【００３４】
なお、以下の説明では、対象ホスト３００におけるパケットの送受信に着目し、対象ホスト３００が送信ノードからパケットを受信する場合のクエリ、フロー、パケットチャンク、パケットのことを、それぞれ受信クエリ、受信フロー、受信パケットチャンク、受信パケット等と呼ぶ場合もある。また、これと同様に、対象ホスト３００が受信ノードに対してパケットを送信する場合のクエリ、フロー、パケットチャンク、パケットのことを、それぞれ送信クエリ、送信フロー、送信パケットチャンク、送信パケット等と呼ぶ場合もある。
【００３５】
図１に戻り、検出装置４００について説明する。検出装置４００は、送信ホスト１００や送信ホスト１１０、受信ホスト２００、対象ホスト３００の各ホストとの間で送受信されるデータのトラヒックを監視する端末等である。ここで、トラヒックとは、上述したクエリ、フロー、パケットチャンク、パケットの各情報をいうものとする。
【００３６】
図４は、検出装置４００の主要な物理的な構成を示す図である。図４に示すように、検出装置４００は、物理的には、入出力装置４０５と本体装置４１０とを含んで構成されている。入出力装置４０５は、ディスプレイ等の表示装置とキーボード等の入力装置を含んで構成され、検出装置４００の利用者からの指示（例えば、検出装置４００の起動指示）の入力を受け付けたり、あるいは後述する本体装置４１０のＣＰＵ（Central Processing Unit）４５０が処理を行った結果等を表示する。
【００３７】
なお、入出力装置４０５の入力装置と出力装置とは、実際には別個の場合もあるが、これらの各装置が行う処理は主要な部分ではないため、これらをまとめて入出力装置４０５として示している。また、以下の説明では、ＣＰＵ４５０が処理を行った結果等を入出力装置４０５に表示する前提で説明しているが、例えば、送信ノードの各ホストや受信ノード等、通信ネットワーク５００によって接続された他の装置等に表示させることとしてもよい。
【００３８】
本体装置４１０は、インタフェース４２０と記憶装置４３０とメモリ４４０とＣＰＵ４５０とバス４６０とを含んで構成されている。
【００３９】
インタフェース４２０は、ＮＩＣ（Network Interface Card）等から構成され、通信ネットワーク５００と検出装置４００との間の通信を媒介する。
【００４０】
記憶装置４３０は、ＨＤＤ（Hard Disk Drive）等から構成され、外向きフローＤＢ（Data Base）４３１と内向きフローＤＢ４３２と外向きパケットチャンク分布ＤＢ４３３と内向きパケットチャンク分布ＤＢ４３４とチャンクペアＤＢ４３５４とを記憶する。これらのＤＢの具体的な内容については後述する。
【００４１】
メモリ４４０は、ＲＡＭ（Random Access Memory）およびＲＯＭ（Read Only Memory）等の記憶媒体から構成されている。ＲＯＭには、対象ホスト３００を検出するＰ２Ｐ端末検出プログラム４４１があらかじめ記憶されている。そして、このプログラム４４１がＣＰＵ４５０によって実行されることによって、対象ホスト３００におけるトラヒックを検出している。ＣＰＵ４５０が実行する具体的な機能については後述する。なお、以下では、Ｐ２Ｐ端末検出プログラム４４１は、あらかじめＲＯＭに記憶されている前提で説明するが、例えば、通信ネットワーク５００を介して、他のホスト等から必要に応じてＲＡＭにインストールしてもよい。
【００４２】
ＣＰＵ４５０は、プロセッサ等の演算装置から構成され、Ｐ２Ｐ端末検出プログラム４４１の実行や、検出装置４００に含まれる各装置の動作を制御する。なお、ＣＰＵ４５０は、時刻を計時するクロックを内部に備えている。
【００４３】
バス４６０は、検出装置４００に含まれる各装置を接続し、これらの装置間における種々のデータの受け渡しを行う。
【００４４】
図５は、図４に示した検出装置４００の機能的な構成、および物理的な各装置との関係を示す図である。図５に示すように、ＣＰＵ４５０は、パケット取得部４５１と送信パケット保存部４５２と受信パケット保存部４５３とルーティングスコア算出部４５４とペアリング部４５５とチャンク分布算出部４５６とチャンクペア期待値算出部４５７とを含んで構成されている。これらの各部の機能は、ＣＰＵ４５０によるＰ２Ｐ端末検出プログラム４４１の実行によって具現化される。
【００４５】
パケット取得部４５１は、対象ホスト３００を含む通信ネットワーク５００におけるトラヒックを監視するものである。具体的には、パケット取得部４５１は、インタフェース４２０を介して通信ネットワーク５００に接続し、対象ホスト３００が対象ホスト３００以外の他のホストに送信しているパケット、または対象ホスト３００以外の他のホストから受信しているパケットを取得し、取得したパケットを、送信パケット保存部４５２または受信パケット保存部４５３に出力する。
【００４６】
より具体的には、パケット取得部４５１は、通信ネットワーク５００からパケットを取得すると、取得したパケットのヘッダ情報に記載された送信ＩＰアドレスおよび受信ＩＰアドレスを読み取る。そして、パケット取得部４５１は、読み取った送信ＩＰアドレスおよび受信ＩＰアドレスに、対象ホスト３００のＩＰアドレスが含まれているか否かを判定し、含まれているならば、取得したパケットは対象ホスト３００が送受信するものと判定する。
【００４７】
そして、パケット取得部４５１は、読み取った送信ＩＰアドレスおよび受信ＩＰアドレスに、対象ホスト３００のＩＰアドレスが含まれている場合、さらにそのＩＰアドレスが送信ＩＰアドレスまたは受信ＩＰアドレスのいずれに含まれているか否かを判定する。
【００４８】
パケット取得部４５１は、対象ホスト３００のＩＰアドレスが送信ＩＰアドレスに含まれている場合、取得したパケットは、対象ホスト３００が対象ホスト３００以外の他のホストに送信するパケット、すなわち送信フローに含まれるパケット（送信パケット）であると判定し、取得した送信パケットを送信パケット保存部４５２に出力する。
【００４９】
これと同様に、パケット取得部４５１は、対象ホスト３００のＩＰアドレスが受信ＩＰアドレスに含まれている場合、取得したパケットは、対象ホスト３００が対象ホスト３００以外の他のホストから受信したパケットであると判定する。すなわち、パケット取得部４５１は、取得したパケットは受信フローに含まれるパケット（受信パケット）であると判定し、取得した受信パケットを受信パケット保存部４５３に出力する。
【００５０】
送信パケット保存部４５２は、パケット取得部４５１から出力された送信パケットを受け取ると、その送信パケットをフロー形式のデータ（以下、外向きフローレコードと呼ぶ。）とパケットチャンク形式のデータ（以下、外向きチャンクレコードと呼ぶ。）に変換し、変換した各データを外向きフローＤＢ４３１に記憶する。すなわち、送信パケット保存部４５２は、送信パケットをフローレコードまたはチャンクレコード単位に分類する。
【００５１】
図６は、外向きフローレコードが外向きフローＤＢ４３１に記憶された例を示す図である。なお、図６に示すように外向きフローＤＢ４３１に記憶された外向きフローレコードの全体を外向きフローテーブル６００と呼ぶ。
【００５２】
送信パケット保存部４５２は、まず、パケット取得部４５１から送信パケットを受け取ると、受け取ったパケットがフローの中で最初に取得した送信パケットであるか否かを判定する。そして、送信パケット保存部４５２は、受け取った送信パケットがフローの中で最初に取得した送信パケットである場合、外向きフローテーブル６００に新たに外向きフローレコードを生成する。
【００５３】
そして、送信パケット保存部４５２は、外向きフローレコードを一意に特定するためのＩＤ（Identification。以下、外向きフローＩＤと呼ぶ。）６０１を付与するとともに、取得したパケットのサイズ情報６０２、一つのフローの中の最初のパケットを取得した時刻である開始時刻６０３、最後のパケット（あるフローに３パケット含まれる場合、２番目のパケットを取得した時点では、その２番目のパケットが最後のパケットである。）を取得した時刻である終了時刻６０４、５タプル６０５の値、ルーティングスコア６０６の６つの値を含む外向きフローレコードを新たに生成する。
【００５４】
例えば、外向きフローＩＤ６０１には０、１、２等の数値、サイズ情報６０２には、送信パケットのヘッダ情報を除いたパケットペイロードのサイズを示す値、開始時刻６０３および終了時刻６０４にはパケット取得部４５１から送信パケットを受け取った時刻、５タプル６０５の値には取得した送信パケットのヘッダ情報に含まれているそれぞれの値が外向きフローレコードに記憶される。なお、ルーティングスコア６０６とは、外向きフローに含まれるパケットチャンクのうち、クエリの転送に用いられたと考えられるものの数であり、後述するルーティングスコア算出部４５４は、このルーティングスコアが高いほど、クエリルーティングされたと判定する。また、ルーティングスコアには、後述するルーティングスコア算出部４５４によって初期値としてゼロが記憶されるが、ルーティングスコアについての具体的な内容については後述する。
【００５５】
なお、パケット取得部４５１が取得した送信パケットがフローの中で最初に取得した送信パケットであるか否かの判定は、取得した送信パケットと、過去に取得した送信パケットの５タプルの値が同じである外向きフローレコードが、外向きフローテーブルに記憶されているか否かによって判定する。記憶されていないとき、最初に取得したとする。
【００５６】
一方、送信パケット保存部４５２は、受け取った送信パケットがフローの中で最初に取得した送信パケットではない場合、取得した送信パケットの５タプルの値と、すでに外向きフローテーブル６００に記憶されている外向きフローレコードの５タプル６０５の値とが同じ外向きフローレコードを特定する。そして、送信パケット保存部４５２は、特定した外向きフローレコードのサイズ情報６０２に、取得した送信パケットのパケットペイロードの値を追加し、さらに、終了時刻６０４にパケット取得部４５１から送信パケットを受け取った時刻を上書きする。
【００５７】
図６に示す例では、外向きフローＩＤ６０１が「０」〜「２」までの外向きフローレコードが外向きフローテーブル６００に記憶されている場合の例を示している。外向きフローＩＤ６０１が「０」であるフローレコードは、サイズ情報６０２が「３．０ＫＢ」、開始時刻６０３が「０８／１２／０８  １２：００：００．０００」、終了時刻６０４が「０８／１２／０８  １２：００：００．３００」、５タプル６０５の値が「１０．０．０．１：２００  １０．０．０．２：８０  ＴＣＰ」、ルーティングスコア６０６が「１」であることを示している。
【００５８】
これと同様に、外向きフローＩＤ６０１が「１」であるフローレコードは、サイズ情報６０２が「０．６ＫＢ」、開始時刻６０３が「０８／１２／０８  １２：００：１０．０００」、終了時刻６０４が「０８／１２／０８  １２：００：１０．４００」、５タプル６０５の値が「１０．０．０．１：４００  １０．０．０．３：１６２  ＵＤＰ」、ルーティングスコア６０６が「２」であり、フローＩＤ６０１が「２」であるフローレコードは、サイズ情報６０２が「１．０ＫＢ」、開始時刻６０３が「０８／１２／０８  １３：００：００．０００」、終了時刻６０４が「０８／１２／０８  １３：００：００．０００」、５タプル６０５の値が「１０．０．０．１：５００  １０．０．０．４：１３７  ＴＣＰ」、ルーティングスコア６０６が「１」となっていることを示している。このように、外向きフローレコードが、順次、外向きフローテーブル６００に記憶されるが、記憶されたこれらの外向きフローレコードの５タプル６０５の値のうち、送信ＩＰアドレスについては、同じ送信ＩＰアドレス（１０．０．０．１）、すなわち対象ホスト３００のＩＰアドレスが記憶される。
【００５９】
なお、上述した例では、外向きフローＩＤ６００が「３」の外向きフローレコードの開始時刻６０３と終了時刻６０４が同じ時刻となっているが、送信パケット保存部４５２が受け取った送信パケットが、フローの中で最初に取得した送信パケットであるためである。
【００６０】
図７は、上述した外向きチャンクレコードが外向きフローＤＢ４３１に記憶された例を示す図である。なお、図７に示すように外向きフローＤＢ４３１に記憶された外向きチャンクレコードの全体を外向きチャンクテーブル７００と呼ぶ。
【００６１】
送信パケット保存部４５２は、受け取った送信パケットの５タプルの値と、過去に取得した送信パケットの５タプルの値が同じである外向きチャンクレコードが外向きチャンクテーブル７００に存在し、かつ取得した送信パケットの時刻と外向きチャンクテーブル６００の末尾パケット検出時刻７０４との間の間隔が、あらかじめ定められた所定の時間の間隔（例えば、１００ミリ秒）以内であるか否かを判定する。
【００６２】
そして、送信パケット保存部４５２は、過去に取得した送信パケットの５タプルの値が同じである外向きチャンクレコードが外向きチャンクテーブル７００に存在しない、または取得した送信パケットの時刻と外向きチャンクテーブル７００の末尾パケット検出時刻７０４との間の間隔が、所定の時間の間隔よりも大きいと判定した場合、外向きチャンクテーブル７００に新たに外向きチャンクレコードを生成する。末尾パケット検出時刻７０４の末尾パケットとは、５タプルの値が同じである送信パケットの中で、取得した送信パケットの直前に取得した送信パケットである。したがって、末尾パケット検出時刻７０４は、その直前に取得した送信パケットの取得時刻である
そして、送信パケット保存部４５２は、外向きフローレコードの場合と同様に、外向きチャンクレコードを一意に特定するためのＩＤ（以下、外向きチャンクＩＤと呼ぶ。）７０１を付与するとともに、取得した送信パケットのサイズ情報７０２、送信パケットを最初に取得した時刻である先頭パケット検出時刻７０３、送信パケットを最後に取得した時刻である末尾パケット検出時刻７０４、５タプル７０５の値、５タプルの値が同じであると判定した外向きチャンクレコードのチャンクＩＤ７０１の６つの値を含むチャンクレコードを新たに生成する。
【００６３】
一方、送信パケット保存部４５２は、受け取った送信パケットの５タプルの値と、過去に取得した送信パケットの５タプルの値が同じである外向きチャンクレコードが外向きチャンクテーブル７００に存在し、かつ取得した送信パケットの時刻と外向きチャンクテーブルの末尾パケット検出時刻７０４との間の間隔が、所定の時間の間隔以内であると判定した場合、パケット取得部４５１から送信パケットを受け取った時刻を、末尾パケット検出時刻７０４に上書きするとともに、サイズ情報７０２に、受け取った送信パケットのパケットペイロードの値を追加する。
【００６４】
図７では、外向きチャンクＩＤが「０」〜「７」までの外向きチャンクレコードが外向きチャンクテーブル７０１に記憶されている例を示している。ＩＤ７０１が「０」である外向きチャンクレコードは、サイズ情報７０２が「１．０ＫＢ」、先頭パケット検出時刻７０３が「０８／１２／０８  １２：００：００．０００」、末尾パケット検出時刻７０４が「０８／１２／０８  １２：００：００．０５０」、５タプル７０５の値が「１０．０．０．１：２００  １０．０．０．２：８０  ＴＣＰ」、外向きフローＩＤ７０６が「０」となっている。このように、図７に示す外向きチャンクＩＤ７０１が「０」の外向きチャンクレコードは、図６に示した外向きフローＩＤ６０１が「０」の外向きフローレコードに対応付けて記憶される。
【００６５】
これと同様に、外向きチャンクＩＤ７０１が「１」である外向きチャンクレコードは、サイズ情報７０２が「０．５ＫＢ」、先頭パケット検出時刻７０３が「０８／１２／０８  １２：００：１０．２００」、末尾パケット検出時刻７０４が「０８／１２／０８  １２：００：１０．２００」、５タプル７０５の値および外向きフローＩＤ７０６が、外向きチャンクＩＤ７０１が「０」の外向きチャンクレコードと同じであり、外向きチャンクＩＤ７０１が「２」である外向きチャンクレコードは、サイズ情報７０２が「１．０ＫＢ」、先頭パケット検出時刻７０３が「０８／１２／０８  １２：００：１０．３５０」、末尾パケット検出時刻７０４が「０８／１２／０８  １２：００：１０．４００」、５タプル７０５の値および外向きフローＩＤ７０６が、外向きチャンクＩＤ７０１が「０」の外向きチャンクレコードと同じであることを示している。
【００６６】
さらに、外向きチャンクＩＤ７０１が「３」である外向きチャンクレコードは、サイズ情報７０２が「０．５ＫＢ」、先頭パケット検出時刻７０３が「０８／１２／０８  １２：００：１０．６００」、末尾パケット検出時刻７０４が「０８／１２／０８  １２：００：１０．６００」、５タプル７０５の値および外向きフローＩＤ７０６が、外向きチャンクＩＤ７０１が「０」の外向きチャンクレコードと同じであることを示している。このように、外向きチャンクレコードが、順次外向きチャンクテーブル７００に記憶されるが、記憶されたこれらの外向きフローレコードの５タプル７０５の値のうち、送信ＩＰアドレスについては、外向きフローレコードと同様に、同じ送信ＩＰアドレス（１０．０．０．１）、すなわち対象ホスト３００のＩＰアドレスが記憶される。
【００６７】
すなわち、図６に示した外向きフローＩＤ６０１が「０」の外向きフローレコードは、図７に示した外向きチャンクＩＤ７０１が「０」〜「２」の３つの外向きチャンクレコードから構成されていることを示している。これと同様に、例えば、図６に示した外向きフローＩＤ６０１が「１」である外向きフローレコードは、図７に示す外向きチャンクＩＤ７０１が「４」〜「６」の３つの外向きチャンクレコードから構成されていることを示している。このように、１つの外向きフローレコードは、少なくとも１つの外向きチャンクレコードから構成され、互いに対応付けて記憶されている。
【００６８】
図５の受信パケット保存部４５３は、送信パケット保存部４５２と同様に、パケット取得部４５１から出力された受信パケットを受け取ると、その受信パケットをフロー形式のデータ（以下、内向きフローレコードと呼ぶ。）とパケットチャンク形式のデータ（以下、内向きチャンクレコードと呼ぶ。）に変換し、変換した各データを内向きフローＤＢ４３２に記憶する。すなわち、受信パケット保存部４５３は、送信パケット保存部４５２と同様に、受信パケットをフローレコードまたはチャンクレコード単位に分類する。
【００６９】
受信パケット保存部４５３は、まず、パケット取得部４５１からパケットを受け取ると、受け取った受信パケットがフローの中で最初に取得した受信パケットであるか否かを判定する。そして、送信パケット保存部４５２は、受け取った受信パケットがフローの中で最初に取得した受信パケットであると判定した場合、内向きフローＤＢ４３２の内向きフローテーブル８００(図８)に新たに内向きフローレコードを生成する。
【００７０】
そして、受信パケット保存部４５３は、内向きフローレコードを一意に特定するための内向きフローＩＤ８０１を付与するとともに、外向きフローレコードの場合と同様に、取得した受信パケットのサイズ情報８０２、受信パケットを最初に取得した時刻である開始時刻８０３、受信パケットを最後に取得した時刻である終了時刻８０４、５タプル８０５の値、ルーティングスコア８０６の６つの値を含む内向きフローレコードを新たに生成する。内向きフローレコードがどのように生成されるかについては、外向きフローレコードの場合と同様であるため、ここではその説明を省略する。
【００７１】
図８は、内向きフローＩＤ８０１が「０」〜「３」までの内向きフローレコードが内向きフローテーブル８００に記憶されている例を示している。内向きフローＩＤ８０１が「０」である内向きフローレコードは、サイズ情報８０２が「１．０ＫＢ」、開始時刻８０３が「０８／１２／０８  １１：５９：５９．９００」、終了時刻８０４が「０８／１２／０８  １１：５９：５９．９５０」、５タプル８０５の値が「１０．０．０．５：２００  １０．０．０．１：８０  ＴＣＰ」、ルーティングスコア８０６が「０」であることを示している。
【００７２】
これと同様に、内向きフローＩＤ８０１が「１」である内向きフローレコードは、サイズ情報８０２が「０．５ＫＢ」、開始時刻８０３が「０８／１２／０８  １１：５９：５９．８９５」、終了時刻８０４が「０８／１２／０８  １２：００：０９．８９５」、５タプル８０５の値が「１０．０．０．６：３００  １０．０．０．１：１６２  ＵＤＰ」、ルーティングスコア８０６が「０」であり、内向きフローＩＤ８０１が「２」である内向きフローレコードは、サイズ情報８０２が「０．６ＫＢ」、開始時刻８０３が「０８／１２／０８  １２：００：０９．９００」、終了時刻８０４が「０８／１２／０８  １２：００：０９．９５０」、５タプル８０５の値が「１０．０．０．７：４００  １０．０．０．１：１３９  ＴＣＰ」、ルーティングスコア８０６が「０」であり、内向きフローＩＤ８０１が「３」である内向きフローレコードは、サイズ情報８０２が「１．０ＫＢ」、開始時刻８０３が「０８／１２／０８  １２：５９：５９．９５０」、終了時刻８０４が「０８／１２／０８  １２：５９：５９．９５０」、５タプル８０５の値が「１０．０．０．８：２００  １０．０．０．１：１３７  ＴＣＰ」、ルーティングスコア８０６が「０」であることを示している。続いて、内向きチャンクレコードについて説明する。
【００７３】
図９は、内向きチャンクレコードが内向きフローＤＢ４３２に記憶された例を示す図である。なお、図９に示すように内向きフローＤＢ４３２に記憶された内向きチャンクレコードの全体のことを、外向きチャンクテーブル７００の場合と同様に、内向きチャンクテーブル９００と呼ぶこととする。なお、内向きチャンクレコードがどのように生成されるかについては、外向きチャンクレコードの場合と同様であるため、ここではその説明を省略する。
【００７４】
図９に示す例では、内向きチャンクＩＤ９０１が「０」〜「３」までの内向きチャンクレコードが内向きチャンクテーブル９００に記憶されている例を示している。これらの内向きチャンクレコードは、図８に示した内向きフローレコードと同様の内容となっているが、各フローレコードには、１つのチャンクレコードのみが含まれている状態であるためである。このように、内向きチャンクレコードが、順次内向きチャンクテーブル９００に記憶されるが、記憶されたこれらの内向きフローレコードの５タプル９０５の値のうち、受信ＩＰアドレスについては、内向きフローレコードと同様に、同じ受信ＩＰアドレス（１０．０．０．１）、すなわち対象ホスト３００のＩＰアドレスが記憶される。
【００７５】
すなわち、図８に示した内向きフローＩＤ８０１が「０」の内向きフローレコードは、図９に示した内向きチャンクＩＤ９０１が「０」の内向きチャンクレコードから構成され、内向きフローＩＤ８０１が「１」である内向きフローレコードは、内向きチャンクＩＤ９０１が「１」の内向きチャンクレコードから構成されていることを示している。このように、１つの内向きフローレコードは、外向きフローレコードの場合と同様に、少なくとも１つの内向きチャンクレコードから構成され、互いに対応付けて記憶されている。
【００７６】
図５に戻り、ルーティングスコア算出部４５４について説明する。なお、ルーティングスコア算出部４５４およびペアリング部４５５を単に判定部と呼ぶこともある。ルーティングスコア算出部４５４は、上述した外向きフローＤＢ４３１および内向きフローＤＢ４３２からそれぞれのフローレコードおよびチャンクレコードを読み取り、読み取ったフローレコードおよびチャンクレコードについての送信フローのルーティングスコアをカウントし、カウントしたルーティングスコアの値が、あらかじめ定められた一定の閾値（例えば、７）を超えた場合に、対象ホスト３００がＰ２Ｐ通信を行っているノードである旨等の結果を入出力装置４０５に出力するものである。すなわち、ルーティングスコア算出部４５４は、クエリルーティングした可能性のあるパケットの組（ペア）を判定するものである。
【００７７】
ルーティングスコア算出部４５４は、外向きフローＤＢ４３１に記憶されている外向きフローレコードのうち、終了時刻６０４およびサイズ情報６０２が更新された外向きフローレコードを特定し、特定した外向きフローレコードのルーティングスコア６０６に初期値として「０」を設定する。
【００７８】
なお、終了時刻６０４およびサイズ情報６０２が更新されたレコードであるか否かについては、終了時刻６０４については、例えば、開始時刻６０３と終了時刻６０４が異なっている場合には終了時刻が更新されたと判定する。また、サイズ情報６０２については、例えば、外向きフローテーブル６００に外向きフローレコードを記憶した際のサイズ情報６０２をメモリ４４０に記憶しておき、終了時刻６０４が更新されたと判定した場合におけるサイズ情報６０２を読み取り、読み取ったサイズ情報６０２がメモリ４４０に記憶したサイズ情報と異なっている場合にはサイズ情報６０２が更新されたレコードであると判定する。
【００７９】
その後、ルーティングスコア算出部４５４は、内向きフローＤＢ４３２に含まれる内向きフローレコードの中から、終了時刻６０４およびサイズ情報６０２が更新された外向きフローレコードの５タプル６０５に含まれる送信ＩＰアドレス以外の送信ＩＰアドレスを含む内向きフローレコードを特定する。そして、ルーティングスコア算出部４５４は、特定した内向きフローレコードと終了時刻６０４およびサイズ情報６０２が更新された外向きフローレコードとを後述するペアリング部４５５に出力する。
【００８０】
さらに、ルーティングスコア算出部４５４は、後述するペアリング部４５５が、特定した内向きフローレコードと、終了時刻６０４およびサイズ情報６０２が更新された外向きフローレコードのうち、クエリルーティングされたチャンクレコードが存在すると判定した場合、終了時刻６０４およびサイズ情報６０２が更新された外向きフローレコードのルーティングスコア６０６を更新する。
【００８１】
そして、ルーティングスコア算出部４５４は、更新したルーティングスコア６０６の値が、あらかじめ定められた閾値以上であるか否かを判定し、更新したルーティングスコア６０６の値が、あらかじめ定められた閾値以上であると判定した場合、対象ホスト３００は、Ｐ２Ｐ通信を行っている可能性があると判定し、より詳細な分析を行うために、チャンク分布算出部４５６を呼び出す。
【００８２】
一方、ルーティングスコア算出部４５４は、更新したルーティングスコア６０６の値が、あらかじめ定められた閾値未満であると判定した場合、内向きフローＤＢ４３２の中に、終了時刻６０４およびサイズ情報６０２が更新された外向きフローレコードの５タプル６０５に含まれる送信ＩＰアドレス以外の送信ＩＰアドレスを含む内向きフローレコードが他にあるか否かを判定する。
【００８３】
そして、ルーティングスコア算出部４５４は、内向きフローＤＢ４３２の中に、終了時刻６０４およびサイズ情報６０２が更新された外向きフローレコードの５タプル６０５に含まれる宛先アドレス（図６に示した外向きフローＩＤ６０１が「０」の外向きフローレコードでは、「１０．０．０．２」）以外のアドレスを送信元アドレスとして含む内向きフローレコードが他にあると判定した場合には、その内向きフローレコードについて、上述した各処理を行う。このように、ルーティングスコア算出部４５４は、１つの外向きフローレコードをキーにして、すべての内向きフローレコードについて、上述した各処理を繰り前し行う。
【００８４】
その後、ルーティングスコア算出部４５４は、内向きフローＤＢ４３２の中に、終了時刻６０４およびサイズ情報６０２が更新された外向きフローレコードの５タプル６０５に含まれる送信ＩＰアドレス以外の送信ＩＰアドレスを含む内向きフローレコードが他にない、すなわち、その外向きフローレコードをキーにしてすべての内向きフローレコードについて上述した判定を終了した場合、対象ホスト３００がＰ２Ｐ通信を行っていないと判定し、対象ホスト３００のＩＰアドレス、ルーティングスコア６０６の値、Ｐ２Ｐ通信を行っていない旨を入出力装置４０５に出力する。
【００８５】
例えば、図６に示した外向きフローレコードの中で、外向きフローＩＤ６０１が「０」である外向きフローレコードの終了時刻６０４は開始時刻６０３とは異なる時刻であり、サイズ情報６０２は図７に示した外向きチャンクテーブル７００の中の外向きチャンクＩＤ７０１が「０」〜「３」である４つの外向きチャンクレコードのサイズ情報７０２の合計となっている（すなわち、サイズ情報６０２が更新されている）ため、ルーティングスコア算出部４５４は、まず、外向きフローＩＤ６０１が「０」の外向きフローレコードを特定する。
【００８６】
そして、ルーティングスコア算出部４５４は、外向きフローＩＤ６０１が「０」の外向きフローレコードに含まれる５タプル６０５の値のうち、宛先ＩＰアドレス「１０．０．０．２」以外のアドレスを送信元ＩＰアドレスとして含む内向きフローレコードを特定する。図８に示した内向きフローテーブル８００に含まれる内向きフローレコードの例では、内向きフローＩＤ８０１が「０」〜「３」のレコードが、送信ＩＰアドレスが「１０．０．０．５」、「１０．０．０．６」、「１０．０．０．７」、「１０．０．０．８」となっており、外向きフローレコードの送信ＩＰアドレス「１０．０．０．２」とは異なっているため、これらのすべてのレコードをペアリング部４５５に出力する。
【００８７】
その後、ペアリング部４５５によって、外向きフローレコードと内向きフローレコードの組（ペア）に含まれる外向きチャンクレコードと内向きチャンクレコードの組（ペア）がクエリルーティングした旨の通知を受けた場合、例えば、図６に示した外向きフローＩＤ６０１が「０」の外向きフローレコードのルーティングスコア６０６（図６に示した例では「１」）を更新する。このように、外向きフローテーブル６００に記憶されている外向きフローレコードと内向きフローテーブル８００に記憶されている内向きフローレコードのすべてのレコードについて、クエリルーティングした可能性のあるパケットの組（ペア）を判定し、ルーティングスコア６０６をカウントアップする。
【００８８】
図５に戻り、ペアリング部４５５について説明する。ペアリング部４５５は、対象ホスト３００がクエリをクエリルーティングした場合において、外向きフローレコードに含まれるチャンクレコードと内向きフローレコードに含まれるチャンクレコードのうち、同じクエリのルーティングに用いられたものが存在するか否かを判定するものである。
【００８９】
具体的には、ペアリング部４５５は、まず、ルーティングスコア算出部４５４から受け取った外向きフローレコードと内向きフローレコードのうち、外向きフローレコードの外向きフローＩＤ６０１を含む外向きチャンクレコード、および内向きフローレコードの内向きフローＩＤ８０１を含む内向きチャンクレコード、すなわち判定対象となるフローレコードをそれぞれ特定する。
【００９０】
そして、ペアリング部４５５は、特定した内向きチャンクレコードの末尾パケット検出時刻９０４が、外向きチャンクレコードの先頭パケット検出時刻７０３よりも過去の時刻であって、かつ、内向きチャンクレコードの末尾パケット検出時刻９０４と外向きチャンクレコードの先頭パケット検出時刻７０３との差（間隔）が所定の閾値（例えば、１０ミリ秒）以内であるか否かを判定する。
【００９１】
そして、ペアリング部４５５は、内向きチャンクレコードの末尾パケット検出時刻９０４と外向きチャンクレコードの先頭パケット検出時刻７０３との差が所定の閾値以内であると判定した場合、さらに、内向きチャンクレコードのサイズ情報９０２と外向きチャンクレコードのサイズ情報７０２とを比較し、内向きチャンクレコードのサイズ情報９０２と外向きチャンクレコードのサイズ情報７０２との差が所定の閾値（例えば、１００バイト）以下であるか否かを判定する。
【００９２】
その後、ペアリング部４５５は、内向きチャンクレコードのサイズ情報９０２と外向きチャンクレコードのサイズ情報７０２との差が所定の閾値以下であると判定した場合、特定した内向きチャンクレコードと外向きチャンクレコードは、同じクエリのクエリルーティングに用いられたと判定し、その旨をルーティングスコア算出部４５４に通知する。
【００９３】
例えば、ペアリング部４５５は、図６に示した外向きフローＩＤ６０１が「０」の外向きフローレコードと、図８に示した内向きフローＩＤ８０１が「０」〜「３」の内向きフローレコードをルーティングスコア算出部４５４から受け取ると、受け取った外向きフローレコードの外向きフローＩＤ６０１の「０」を読み取り、その外向きフローＩＤ「０」を外向きフローＩＤ７０６として含む外向きチャンクレコードを、図７に示した外向きチャンクテーブル７００の中から特定する。図７に示した例では、ペアリング部４５５は、外向きフローＩＤ７０６が「０」である外向きチャンクＩＤ７０１が「０」〜「３」の外向きチャンクレコードを特定する。
【００９４】
続いて、ペアリング部４５５は、内向きフローＩＤ８０１が「０」〜「３」の内向きフローレコードのうち、まず、内向きフローＩＤ８０１が「０」である内向きフローレコードを選択し、選択した内向きフローレコードの内向きフローＩＤ「０」を内向きフローＩＤ９０６として含む内向きチャンクレコードである内向きチャンクＩＤ９０１が「０」の内向きチャンクレコードを、図９に示した内向きチャンクテーブル９００の中から特定する。
【００９５】
その後、ペアリング部４５５は、特定した内向きチャンクＩＤ９０１が「０」の内向きチャンクレコードの末尾パケット検出時刻９０４「０８／１２／０８  １１：５９：５９．９５０」が、図７に示した外向きチャンクＩＤ７０１が「０」の外向きチャンクレコードの先頭パケット検出時刻７０３「０８／１２／０８  １２：００：００．０００」よりも過去の時刻であり、さらに両者の時間の間隔（差）が「．０５０」(秒)であり、所定の閾値Δt（例えば、１００ミリ秒）以内であるため、さらに、外向きチャンクＩＤ７０１が「０」の外向きチャンクレコードと内向きチャンクＩＤ９０１が「０」の内向きチャンクレコードのそれぞれに含まれているサイズ情報７０２、９０２の値を比較する。
【００９６】
そして、ペアリング部４５５は、その外向きチャンクレコードのサイズ情報７０２「１．０ＫＢ」と、その内向きチャンクレコードのサイズ情報９０２「０．９ＫＢ」を比較し、両者の差（容量）「０．１ＫＢ」が所定の閾値（例えば、１００ＫＢ）以下であると判定し、図７に示した外向きチャンクＩＤ７０１が「０」である外向きチャンクレコードと、図９に示した内向きチャンクＩＤ９０１が「０」である内向きチャンクレコードの組（ペア）は、クエリルーティングされたと判定し、その旨をルーティングスコア算出部４５４に通知する。
【００９７】
また、ペアリング部４５５は、ルーティングスコア算出部４５４への通知後に、外向きチャンクレコードと内向きチャンクレコードの組から構成されるレコード（チャンクペアレコード）をチャンクペア分布ＤＢ４３５に記憶する。説明の都合上、チャンクペア分布ＤＢ４３５の詳細については、チャンク分布算出部４５６の後に説明する。
【００９８】
その後、ペアリング部４５５は、図７に示した外向きチャンクＩＤ７０１が「０」の外向きチャンクレコードと、図９に示した内向きチャンクＩＤ９０１が「１」〜「３」の内向きチャンクレコードの組（ペア）について上述した内容と同様の処理を行い、すべての組（ペア）のチャンクレコードについて処理が終了するまで繰り返し行う。
【００９９】
このように、ペアリング部４５５は、ルーティングスコア算出部４５４から受け取った内向きフローレコードと外向きフローレコードを受け取ると、これらの各フローレコードに含まれるチャンクレコードを特定し、特定したチャンクレコード（チャンクレコードが複数存在する場合には、それぞれのチャンクレコード）について、上述した２つの条件を満たしているか否かを判定することによって、クエリルーティングが行われたか否かを判定している。
【０１００】
図５に戻り、チャンク分布算出部４５６について説明する。チャンク分布算出部４５６は、内向きチャンクテーブル９００に記憶されている内向きチャンクレコードの件数を、サイズ情報９０２ごとに算出する。ここで、内向きチャンクレコードを、サイズ情報９０２に基づいて各内向きチャンククラスに分類する。内向きチャンククラスは、サイズ情報９０２が所定範囲内の内向きチャンクレコードを含む集合である。そして、チャンク分布算出部４５６は、各内向きチャンククラスに含まれる内向きチャンクレコードの件数を算出する。内向きチャンククラスとその件数情報の組（内向きチャンク分布レコード）は、内向きチャンク分布ＤＢ４３４に記憶される。
【０１０１】
図１０は、各内向きチャンククラス１００１ごとの内向きチャンクレコード件数情報１００２が、内向きパケットチャンク分布ＤＢ４３３に記憶された場合を示す図である。なお、図１０に示すように内向きパケットチャンク分布ＤＢ４３３に記憶された内向きチャンク分布レコードの全体のことを、内向きチャンク分布テーブル１０００と呼ぶこととする。
【０１０２】
図１０に示す例では、内向きチャンクレコードのサイズ情報９０２を１０バイトごとに分類している。内向きチャンククラスＲ０にはサイズ情報が０バイトから９バイトまでの内向きチャンクレコードが含まれる。同様に、内向きチャンククラスＲ１にはサイズ情報が１０バイトから１９バイトまでの内向きチャンクレコードが含まれる。そして、各内向きチャンククラス１００１に含まれる内向きチャンクレコード件数情報１００２が内向きチャンク分布ＤＢ４３４に記憶される。図１１の例では、内向きチャンククラスＲ０の件数情報は５件、内向きチャンククラスＲ１の件数情報は２０件となる。
【０１０３】
また、チャンク分布算出部４５６は、外向きチャンクテーブル７００に記憶されている外向きチャンクレコードの件数を、サイズ情報７０２ごとに算出する。ここで、外向きチャンクレコードを、サイズ情報７０２に基づいて各外向きチャンククラスに分類する。外向きチャンククラスは、サイズ情報７０２が所定範囲内の外向きチャンクレコードを含む集合である。そして、チャンク分布算出部４５６は、各外向きチャンククラスに含まれる外向きチャンクレコード件数を算出する。外向きチャンククラスとその件数情報の組（外向きチャンク分布レコード）は、外向きパケットチャンク分布ＤＢ４３３に記憶される。
【０１０４】
図１１は、各外向きチャンククラス１１０１ごとの外向きチャンクレコード件数情報１１０２が、外向きパケットチャンク分布ＤＢ４３３に記憶された場合を示す図である。なお、図１１に示すように外向きパケットチャンク分布ＤＢ４３３に記憶された外向きチャンク分布レコードの全体のことを、外向きチャンク分布テーブル１１００と呼ぶこととする。
【０１０５】
図１１に示す例では、外向きチャンクレコードのサイズ情報７０２を１０バイトごとに分類している。外向きチャンククラスＳ０にはサイズ情報が０バイトから９バイトまでの外向きチャンクレコードが含まれる。同様に、外向きチャンククラスＳ１にはサイズ情報が１０バイトから１９バイトまでの外向きチャンクレコードが含まれる。そして、外内向きチャンククラス１１０１に含まれる外向きチャンクレコード数１１０２が記憶される。図１１の例では、外向きチャンククラスＳ０の件数情報は２０件、外向きチャンククラスＳ１の件数情報は１１となる。以上の処理の終了後、チャンク分布算出部４５６はチャンクペア期待値算出部４５７を呼び出す。
【０１０６】
図５に戻り、ペアリング部４５５について説明する。前述の通り、ペアリング部４５５は、チャンクペアレコードをチャンクペア分布ＤＢ４３５に記憶する。この際、チャンクペアレコードを直接記憶するのではなく、チャンクペアレコードの内向きチャンクペアクラスと外向きチャンクペアクラス、およびその件数の組（チャンクペア分布レコード）として記憶する。図１２は、チャンクペア分布レコード件数１２０３がチャンクペア分布ＤＢ４３５に記憶された場合を示す図である。なお、図１２に示すようにチャンクペア分布ＤＢ４３５に記憶されたチャンクペア分布レコードの全体のことをチャンクペア分布テーブル１２００と呼ぶこととする。
【０１０７】
チャンクペア分布テーブル１２００には，チャンクペア分布レコードに含まれる内向きチャンククラス１２０１と外向きチャンククラス１２０２の組ごとの件数１２０３が記憶される。図１２の例では，内向きチャンククラスがＲ２，外向きチャンククラスがＳ２のチャンクペアレコードが５件あることが示されている。
【０１０８】
新しいチャンクペアレコードをチャンクペア分布ＤＢ４３５に記憶するとき、既に内向きチャンククラス１２０１と外向きチャンククラス１２０２が同値であるチャンクペア分布レコードが存在する場合は、そのレコードの件数１２０３が＋１される。一方、内向きチャンククラスと外向きチャンククラスが同値であるチャンクペア分布レコードが存在しない場合は、新しいレコードが追加される。追加されたチャンクペア分布レコードの件数は１となる。
【０１０９】
図５に戻り、チャンクペア期待値算出部４５７について説明する。チャンクペア期待値算出部４５７は、内向きチャンク分布ＤＢ４３４に記憶されている内向きチャンク分布レコードと、外向きチャンク分布ＤＢ４３３に記憶されている外向きチャンク分布レコードから、対象ホスト３００がクエリルーティングを実際には行っていないと仮定した場合に、チャンクペアと判定される内向きチャンクと外向きチャンクのペアの件数の期待値を求める。そして、実際にチャンクペアと判定された件数と期待値との差が所定の閾値以上である場合、対象ホスト３００はＰ２Ｐ通信を行っていると判定する。
【０１１０】
具体的には、チャンクペア期待値算出部４５７はまず、チャンクペア分布ＤＢ４３５からチャンクペア分布レコードを取得する。次に、チャンクペア分布レコードの内向きチャンクペアクラスと同じ値を持つ内向きチャンクペア分布レコードを内向きチャンクペア分布ＤＢ４３４から取得する。同様に、チャンクペア分布レコードの外向きチャンクペアクラスと同じ値を持つ外向きチャンクペア分布レコードを外向きチャンクペア分布ＤＢ４３３から取得する。
【０１１１】
次に、取得した外向きチャンクペア分布レコードの件数（Ｎｏｕｔ），内向きチャンクペア分布レコードの件数(Ｎｉｎ)，対象ホスト３００の観測期間（Ｔ），Δｔ（チャンクペアとなる内向きチャンクレコードと外向きチャンクレコードの発生時刻差の閾値）から，対象ホスト３００がクエリルーティングを行っていない（対象ホスト３００はＰ２Ｐ端末ではない），すなわち内向きチャンクと外向きチャンクとの発生時刻に相関性が一切無いと仮定した場合に発生するチャンクペアの件数の期待値を求める。実際に発生したチャンクペアの件数がこの期待値より所定数以上多い場合、対象ホスト３００はＰ２Ｐ通信を行っていると判定される。
【０１１２】
ここで、具体的なチャンクペア件数の期待値の算出方法の一例を示す。期間Ｔ内に外向きチャンク・内向きチャンクが一様に発生すると仮定した場合、期待値はＮｏｕｔ×Ｎｉｎ×Δｔ／Ｔで与えられる。
【０１１３】
次に、チャンクペア分布レコードの件数情報から期待値を引いた値をチャンクペアスコアに加算する。実際に発生したチャンクペアレコード件数が期待値より多ければ、チャンクペアスコアは正の数となる。
【０１１４】
上記の処理をチャンクペア分布ＤＢ４３５内に存在する全てのチャンクペア分布レコードについて行う。最後に、チャンクペアスコアが所定の閾値以上となる場合、対象ホスト３００はＰ２Ｐ通信を行っていると判定する。チャンクペアスコアが閾値未満である場合、対象ホスト３００はＰ２Ｐ通信を行っていないと判定する。
【０１１５】
内向きチャンクと外向きチャンクとの発生時刻が一様分布であり、それらの間に相関性が無いと仮定した場合に発生するチャンクペアの件数の期待値を求めることを説明したが、内向きチャンクと外向きチャンクとの発生時刻が一様分布でなく、他の分布に従うことが予め分かっている場合は、その分布に対応した期待値を求めればよい。また、チャンクペア分布レコードの件数と、期待値に予め設定した所定の閾値を加えた値との比較に基づいて、対象ホスト３００がＰ２Ｐ通信を行っているＰ２Ｐ端末であるか否かを判定するように説明したが、チャンクペア分布レコードの件数と期待値に1を超える所定の比率(例えば、1.2)を乗じた値と比較してもよい。所定の加算値及び所定の比率（又は所定の比率を乗じた値と期待値との差を加算値とする。）のいずれを用いるか、及びそれらの値は、判定の過誤の割合が小さくなるように実験的に決められる。
【０１１６】
端末検出システム１０で行われる処理について説明する。図１３〜図１９は、端末検出システム１０が上述した各種の処理を行う場合の処理手順を示すフローチャートである。以下の説明では、検出装置４００は、対象ホスト３００のパケットを所定の時間の間隔で検出している状態にあるものとする。
【０１１７】
図１３は、パケット取得部４５１における処理のフローチャートである。パケット取得部４５１は、対象ホスト３００からパケットを取得し（ステップＳ１３０１）、取得したパケットの送信ＩＰアドレスおよび受信ＩＰアドレスを読み取る（ステップＳ１３０２）。
【０１１８】
パケット取得部４５１は、読み取った送信ＩＰアドレスおよび受信ＩＰアドレスが、対象ホスト３００のＩＰアドレスに一致するか否かを判定し（ステップＳ１３０３）、読み取った送信ＩＰアドレスおよび受信ＩＰアドレスが、対象ホスト３００のＩＰアドレスに一致すると判定した場合（ステップＳ１３０３；Ｙｅｓ）、さらに、そのＩＰアドレスが送信ＩＰアドレスであるか受信ＩＰアドレスであるか否かを判定し、取得したパケットが送信パケットであるか受信パケットであるか否かを判定する（ステップＳ１
０４）。
【０１１９】
パケット取得部４５１は、取得したパケットが送信パケットであると判定した場合（ステップＳ１３０４；Ｙｅｓ）、取得したパケットを送信パケット保存部４５２に出力する（ステップＳ１３０５）。
【０１２０】
一方、パケット取得部４５１は、取得したパケットが送信パケットではない、すなわち取得したパケットは受信パケットであると判定した場合（ステップＳ１３０４；Ｎｏ）、取得したパケットを受信パケット保存部４５３に出力する（ステップＳ１３０６）。このステップＳ１３０５またはステップＳ１３０６の処理が終了すると、パケット取得部４５１における処理が終了し、図１４に示す処理、または図１５に示す処理に進む。
【０１２１】
図１４は、送信パケット保存部４５２における処理のフローチャートである。送信パケット保存部４５２は、パケット取得部４５１から受け取った送信パケットをフロー形式（外向きフローレコード）に変換し（ステップＳ１４０１）、さらに、パケット取得部４５１から受け取った送信パケットをチャンク形式（外向きチャンクレコード）に変換し（ステップＳ１４０２）、変換した外向きフローレコードおよび外向きチャンクレコードを外向きフローＤＢ４３１に記憶する（ステップＳ１４０３）。このステップＳ１４０３の処理が終了すると、送信パケット保存部４５２における処理が終了し、図１６に示す処理に進む。
【０１２２】
図１５は、受信パケット保存部４５３における処理のフローチャートである。受信パケット保存部４５３は、パケット取得部４５１から受け取った受信パケットをフロー形式（内向きフローレコード）に変換し（ステップＳ１５０１）、さらに、パケット取得部４５１から受け取った受信パケットをチャンク形式（内向きチャンクレコード）に変換し（ステップＳ１５０２）、変換した内向きフローレコードおよび内向きチャンクレコードを内向きフローＤＢ４３２に記憶する（ステップＳ１５０３）。このステップＳ１５０３の処理が終了すると、受信パケット保存部４５３における処理が終了し、図１６に示す処理に進む。
【０１２３】
図１６は、ルーティングスコア算出部４５４の処理のフローチャートである。ルーティングスコア算出部４５４は、外向きフローテーブル６００に含まれる外向きフローレコードのうち、終了時刻６０４およびサイズ情報６０２が更新された外向きフローレコードを特定し（ステップＳ１６０１）、内向きフローレコードの中から、特定した外向きフローレコードの宛先ＩＰアドレス以外のアドレスを、送信元アドレスとして含む内向きフローレコードを特定し、特定した内向きフローレコードと終了時刻６０４およびサイズ情報６０２が更新された外向きフローレコードとをペアリング部４５５に出力する（ステップＳ１６０２）。このステップＳ１６０２の処理が終了すると、クエリルーティング判定処理に進む（ステップＳ１６０３）。
【０１２４】
図１７は、ペアリング部４５５によるクエリルーティング判定処理のフローチャートである。図１７に示すように、ペアリング部４５５は、ルーティングスコア算出部４５４から外向きフローレコードと内向きフローレコードを受け取ると（ステップＳ１７０１）、受け取った外向きフローレコードの外向きフローＩＤ６０１を外向きフローＩＤ７０６として含む外向きチャンクレコード、および内向きフローレコードの内向きフローＩＤ８０１を内向きフローＩＤ９０６として含む内向きチャンクレコードをそれぞれ特定する（ステップＳ１７０２）。
【０１２５】
ペアリング部４５５は、内向きチャンクレコードが外向きチャンクレコードよりも過去に検出され、かつ両者を検出した間隔が所定の閾値以内であるか否かを判定し（ステップＳ１７０３）、内向きチャンクレコードが外向きチャンクレコードよりも過去に検出され、かつ両者を検出した間隔が所定の閾値以内であると判定した場合（ステップＳ１７０３；Ｙｅｓ）、さらに、内向きチャンクレコードのサイズ情報９０２と外向きチャンクレコードのサイズ情報７０２との差が所定の閾値以下であるか否かを判定する（ステップＳ１７０４）。
【０１２６】
ペアリング部４５５は、内向きチャンクレコードのサイズ情報９０２と外向きチャンクレコードのサイズ情報７０２との差が所定の閾値以下であると判定した場合（ステップＳ１７０４；Ｙｅｓ）、その旨をルーティングスコア算出部４５４に通知し、ルーティングスコア算出部４５４は、外向きフローレコードのルーティングスコアをカウントアップする（ステップＳ１７０５）。また、これらの外向きチャンクレコードと内向きチャンクレコードとのチャンクペアをチャンク分布ＤＢ４３５に記憶する（ステップＳ１７０７）。
【０１２７】
一方、ペアリング部４５５は、内向きチャンクレコードが外向きチャンクレコードよりも過去に検出され、かつ両者を検出した間隔が所定の閾値以内でないと判定した場合（ステップＳ１７０３；Ｎｏ）、または、内向きチャンクレコードが外向きチャンクレコードよりも過去に検出され、かつ両者を検出した間隔が所定の閾値以内であると判定したものの、内向きチャンクレコードのサイズ情報９０２と外向きチャンクレコードのサイズ情報７０２との差が所定の閾値以下でないと判定した場合（ステップＳ１７０４；Ｎｏ）、すべての組についてステップＳ１７０３およびステップＳ１７０４の判定を行ったか否かを判定する（ステップＳ１７０６）。
【０１２８】
ペアリング部４５５は、すべての組についてステップＳ１７０３およびステップＳ１７０４の判定を行ったと判定した場合（ステップＳ１７０６；Ｙｅｓ）、クエリルーティング判定処理を終了し、図１６に示すステップＳ１６０４の処理に進む。一方、すべての組についてステップＳ１７０３およびステップＳ１７０４の判定を行っていないと判定した場合（ステップＳ１７０６；Ｎｏ）、ステップＳ１７０２に戻り、ステップＳ１７０３以降の処理を繰り返す。
【０１２９】
図１６において、ルーティングスコア算出部４５４は、外向きフローレコードのルーティングスコアの値が、あらかじめ定めた閾値以上であるか否かを判定し（ステップＳ１６０４）、ルーティングスコアの値が、あらかじめ定めた閾値以上であると判定した場合（ステップＳ１６０４；Ｙｅｓ）、対象ホスト３００がＰ２Ｐ通信を行っている可能性があると判定し、より詳細な分析を行うためにチャンク分布算出部４５６を呼び出す（ステップＳ１６０７）。
【０１３０】
一方、ルーティングスコア算出部４５４は、ルーティングスコアの値が、あらかじめ定めた閾値以上でないと判定した場合（ステップＳ１６０４；Ｎｏ）、内向きフローＤＢ４３２の中に、終了時刻６０４およびサイズ情報６０２が更新された外向きフローレコードの５タプル６０５に含まれる送信ＩＰアドレス以外の送信ＩＰアドレスを含む内向きフローレコードが他にあるか否か、すなわちすべての内向きフローレコードについてステップＳ１６０４の判定を行ったか否かを判定する（ステップＳ１６０５）。
【０１３１】
ルーティングスコア算出部４５４は、すべての内向きフローレコードについてステップＳ１６０４の判定を行っていないと判定した場合（ステップＳ１６０５；Ｎｏ）、ステップＳ１６０２に戻り、ステップＳ１６０３以降の各処理を繰り返し行う。
【０１３２】
一方、ルーティングスコア算出部４５４は、すべての内向きフローレコードについてステップＳ１６０４の判定を行ったと判定した場合（ステップＳ１６０５；Ｙｅｓ）、対象ホスト３００がＰ２Ｐ通信を行っていないと判定し、送信ＩＰアドレスあるいは受信ＩＰアドレス、ルーティングスコアの値、Ｐ２Ｐ通信を行っていない旨を入出力装置４０５に出力する（ステップＳ１６０６）。
【０１３３】
図１８は、チャンク分布算出部４５６の処理のフローチャートである。チャンク分布算出部４５６は、内向きフローＤＢ４３２から内向きチャンクレコードを取得し（ステップＳ１８０１）、内向きチャンククラス１００１ごとの件数１００２を算出する（ステップＳ１８０２）。そして、各内向きチャンククラス１００１とその件数１００２の組（内向きチャンク分布レコード）を，内向きチャンク分布ＤＢ４３４に記憶する（ステップＳ１８０３）。
【０１３４】
同様に，チャンク分布算出部４５６は，外向きフローＤＢ４３１から外向きチャンクレコードを取得し（ステップＳ１８０４），外向きチャンククラス１１０１ごとの件数１１０２を算出する（ステップＳ１８０５）。そして，外向きチャンククラス１１０１とその件数１１０２の組を外向きチャンク分布レコードとして，外向きチャンク分布ＤＢ４３３に記憶する（ステップＳ１８０６）。チャンク分布算出部４５６は最後に、チャンクペア期待値算出部４５７を呼び出し（ステップＳ１８０７）、処理を終了する。
【０１３５】
図１９は、チャンクペア期待値算出部４５７の処理のフローチャートである。チャンクペア期待値算出部４５７は、チャンクペア分布ＤＢ４３５から、チャンクペア分布レコードを取得する（ステップＳ１９０１）。次に、チャンクペア分布レコードと同一の内向きチャンククラスを持つ内向きチャンク分布レコードを内向きチャンク分布ＤＢ４３４から取得し（ステップＳ１９０２）、チャンクペア分布レコードと同一の外向きチャンククラスを持つ外向きチャンク分布レコードを外向きチャンク分布ＤＢ４３３から取得する（ステップＳ１９０３）。
【０１３６】
チャンクペア期待値算出部４５７は、外向きチャンク分布レコードの件数と、内向きチャンク分布レコードの件数と、対象ホスト３００の観測期間Ｔ、外向きチャンクと内向きチャンクがチャンクペアとなるための発生時刻の最大差Δt（発生時刻差の閾値）から、対象ホスト３００がクエリルーティングを行っていない場合に発生するチャンクペア件数の期待値を算出する（ステップＳ１９０４）。
【０１３７】
次に、チャンクペア期待値算出部４５７は、チャンクペア分布レコードの件数から算出した期待値を減じた値をチャンクペアスコアに加算する（ステップＳ１９０５）。
【０１３８】
チャンクペア期待値算出部４５７は、ステップＳ１９０２〜ステップＳ１９０５の処理を全てのチャンクペア分布レコードを対象に行った場合（ステップＳ１９０６：ＹＥＳ）、チャンクペアスコアが所定の閾値以上であるかどうかを判定する（ステップＳ１９０７）。そして、チャンクペアスコアが所定の閾値以上である場合（ステップＳ１９０７：ＹＥＳ）、対象ホスト３００はＰ２Ｐ通信を行っていると判定して、その旨を入出力装置４０５に出力する（ステップＳ１９０８）。一方、チャンクペアスコアが所定の閾値未満である場合（ステップＳ１９０７：ＮＯ）、対象ホスト３００はＰ２Ｐ通信を行っていないと判定して、その旨を入出力装置４０５に出力する（ステップＳ１９０９）。
【０１３９】
チャンクペア期待値算出部４５７は、ステップＳ１９０２〜ステップ１９０５の処理を全てのチャンクペア分布レコードに対して行っていないと判定した場合（ステップＳ１９０６：ＮＯ）、ステップＳ１９０１に戻り、ステップＳ１９０２以降の処理を繰り返す。
【０１４０】
このように、パケット取得部４５１が、対象ホスト３００に接続する送信ホスト１００または送信ホスト１１０から送信された、所望のデータを検索するための要求であるクエリを構成する１または複数のパケットを取得し、判定部（ルーティングスコア算出部４５４、ペアリング部４５５）が、取得したパケットのうち、対象ホスト３００に接続する送信ホスト１００または送信ホスト１１０以外の受信ホスト２００に送信する処理であるクエリルーティングが行われる対象となるパケットが存在するか否かを判定し、取得されたパケットのうち、クエリルーティングが行われる対象となるパケットの検出数が、対象ホスト３００がＰ２Ｐ通信を行わないと仮定した場合の期待値より所定数以上多い場合に、対象ホスト３００がＰ２Ｐ通信を行うホストであると判定するので、適切にＰ２Ｐ端末を検出することができる。
【符号の説明】
【０１４１】
１０…端末検出システム、１００、１１０…送信ホスト、２００…受信ホスト、３００…対象ホスト、４００…検出装置、５００…通信ネットワーク、４０５…入出力装置、４１０…本体装置、４２０…インタフェース、４３０…記憶装置、４４０…メモリ、４５０…ＣＰＵ、４６０…バス、４５１…パケット取得部と、４５２…送信パケット保存部、４５３…受信パケット保存部、４５４…ルーティングスコア算出部、４５５…ペアリング部、４５６…チャンク分布算出部、４５７…チャンクペア期待値算出部。
【図１】
2011123647.tif 000003
【図２】
2011123647.tif 000004
【図３】
2011123647.tif 000005
【図４】
2011123647.tif 000006
【図５】
2011123647.tif 000007
【図６】
2011123647.tif 000008
【図７】
2011123647.tif 000009
【図８】
2011123647.tif 000010
【図９】
2011123647.tif 000011
【図１０】
2011123647.tif 000012
【図１１】
2011123647.tif 000013
【図１２】
2011123647.tif 000014
【図１３】
2011123647.tif 000015
【図１４】
2011123647.tif 000016
【図１５】
2011123647.tif 000017
【図１６】
2011123647.tif 000018
【図１７】
2011123647.tif 000019
【図１８】
2011123647.tif 000020
【図１９】
2011123647.tif 000021