(57)【要約】【課題】パケットロスが生じた後でも、先頭セグメントを含むパケットを特定できるようにすること。【解決手段】通信状態可視化装置４０は、監視対象のコンピュータ１０、２０間を流れるパケットの複製をＬＡＮスイッチ３０から受信する毎に、そのパケットの所属するＴＣＰコネクションを特定し（ステップＳ１３１〜Ｓ１３５）、そのＴＣＰコネクション内でのパケットロスの発生を確認する（ステップＳ１４１〜Ｓ１４３）。何れかのＴＣＰコネクションにおいてパケットロスの発生を確認すると（ステップＳ１４３；いいえ）、その後、通信状態可視化装置４０は、そのＴＣＰコネクションに係るパケットを破棄し（ステップＳ１４４〜Ｓ１４９）、先頭のセグメントが含まれると推定し得るパケットを受信すると（ステップＳ１９１；いいえ）、メッセージの再組立を再開する（ステップＳ１９５、Ｓ１０５：オフ、Ｓ１０７）。【選択図】図１
2010081343.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータを、
パケットを順次受信する受信手段、
前記受信手段がパケットを受信する毎に、その受信されたパケットと同一コネクションにおいてそのパケットとそのパケットの直前に受信されたパケットとの受信時間間隔を、取得する取得手段、及び、
前記取得手段が取得した受信時間間隔が所定の閾値を超えた場合に、前記受信手段が受信したパケットを、１つのメッセージを構成する複数のセグメントのうちの先頭のセグメントが含まれるパケットとして特定する特定手段
として機能させるためのパケット特定プログラム。
【請求項２】
前記所定の閾値は、
同一のメッセージに所属するセグメントを含み連続して受信された一対のパケットの受信時間間隔についての第１の度数分布と、異なるメッセージに所属するセグメントを含み連続して受信された一対のパケットの受信時間間隔についての第２の度数分布とに基づいて、決定されている
ことを特徴とする請求項１記載のパケット特定プログラム。
【請求項３】
前記所定の閾値は、
前記第１の度数分布の最大階級値が、前記第２の度数分布の最小階級値よりも大きい場合には、前記第１の度数分布の線グラフと前記第２の度数分布の線グラフとの交点に最も近い階級値である
ことを特徴とする請求項２記載のパケット特定プログラム。
【請求項４】
前記所定の閾値は、
前記第１の度数分布の最大階級値が、前記第２の度数分布の最小階級値以下である場合には、その最大階級値と最小階級値との中間値である
ことを特徴とする請求項２記載のパケット特定プログラム。
【請求項５】
コンピュータが、
パケットを順次受信する受信手順、
前記受信手順でパケットを受信する毎に、その受信されたパケットと同一コネクションにおいてそのパケットとその直前に受信されたパケットとの受信時間間隔を、取得する取得手順、
前記取得手順で取得した受信時間間隔が所定の閾値を超えた場合に、前記受信手順で受信したパケットを、１つのメッセージを構成する複数のセグメントのうちの先頭のセグメントが含まれるパケットとして特定する特定手順
を実行する
ことを特徴とするパケット特定方法。
【請求項６】
パケットを順次受信する受信部、
前記受信部がパケットを受信する毎に、その受信されたパケットと同一コネクションにおいてそのパケットとその直前に受信されたパケットとの受信時間間隔を、取得する取得部、及び、
前記取得部が取得した受信時間間隔が所定の閾値を超えた場合に、前記受信部が受信したパケットを、１つのメッセージを構成する複数のセグメントのうちの先頭のセグメントが含まれるパケットとして特定する特定部
を備えることを特徴とするパケット特定装置。
【発明の詳細な説明】
【技術分野】
【０００１】
技術分野は、所定のパケットを特定するためのプログラム、装置及び方法に、関する。
【背景技術】
【０００２】
周知のように、ＩＰ［Internet Protocol］ネットワークを介して接続された複数のコ
ンピュータの間の通信状態を可視化するためのソフトウエアがある。このソフトウエアが導入されたコンピュータは、監視対象となる複数のコンピュータ間を流れるパケットの複製を受信して、受信したパケットの内容をそのまま表示する。また、このソフトウエアが導入されたコンピュータは、パケット内に記述されているプロトコルやアドレスに関する情報を利用者が理解しやすい形態に変換して表示したり、特定の条件に合致するパケットを抽出して統計的な処理を行って図やグラフを表示したりする。また、このソフトウエアが導入されたコンピュータは、受信したパケットに基づいてＴＣＰ［Transmission Control Protocol］コネクション確立シーケンスやメッセージの遣り取りをラダー表示するこ
ともある。ここで、メッセージとは、ＩＰヘッダとＴＣＰヘッダとを取り除いて残るセグメントを基に再組み立てを行って元の形に戻したもので、ＴＣＰより上位の通信レイヤの送信単位を言う。
【０００３】
なお、当該ソフトウエアが導入されたコンピュータは、複数のパケット内のセグメントを基にメッセージの再組み立てを行う際、メッセージを構成するメッセージヘッダにおける「メッセージ長」フィールドの値を先頭セグメントから読み出す。そして、当該ソフトウエアが導入されたコンピュータは、この読み出した値に基づいて、１個のメッセージの再組み立てを行うのに必要な全てのパケットを特定している。
【０００４】
ところで、監視対象となる複数のコンピュータ間を流れるパケットの複製の受信は、通常、ＬＡＮ［Local Area Network］スイッチのポートミラーリング機能によって、実現される。ポートミラーリング機能は、特定の通信ポートを通過するパケットを複製し、それをミラーポートから送出するための機能である。前述したソフトウエアが導入されたコンピュータは、監視対象となる複数のコンピュータがともに接続されているＬＡＮスイッチのミラーポートに対し、接続されることとなる。
【０００５】
このＬＡＮスイッチでは、ミラーポートのスループット（単位時間当たりの処理能力）が限界を超えてしまうと、パケットロス（パケットの消失）が生じるようになる。また、複製された全てのパケットが、当該ソフトウエアが導入されたコンピュータに送り出されたとしても、そのコンピュータのリソース不足によってパケットロスが生じることもある。
【０００６】
このため、複数のパケット内のセグメントを基にメッセージの再組み立てを行う際に、「メッセージ長」フィールドを含む先頭パケットが、パケットロスにより失われてしまうと、その後に続くパケットのうち、どこからどこまでのパケットで１個のメッセージが完結するのか判らなくなる。そのため、メッセージの再組み立てが行えなくなるという問題があった。
【０００７】
【特許文献１】特開２００７−０２６３０３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本明細書で開示するパケット特定プログラムは、前述したような従来技術の有する問題
点に鑑みてなされたものであり、その課題は、パケットロスが生じた後でも、先頭セグメントを含むパケットを特定できるようにすることにある。
【課題を解決するための手段】
【０００９】
前述の課題を解決するために案出されたパケット特定プログラムは、コンピュータを、パケットを順次受信する受信手段、その受信手段がパケットを受信する毎に、その受信されたパケットと同一コネクションにおいてそのパケットとその直前に受信されたパケットとの受信時間間隔を、取得する取得手段、その取得手段が取得した受信時間間隔が所定の閾値を超えた場合に、受信手段が受信したパケットを、１つのメッセージを構成する複数のセグメントのうちの先頭のセグメントが含まれるパケットとして特定する特定手段として機能させることを、特徴としている。
【００１０】
このように構成されると、コンピュータは、パケットを受信する毎に、そのパケットと同一のコネクションにおいてそのパケットとその直前に受信したパケットとの受信時間間隔が所定の閾値を超えるか否かを確認するよう、動作する。また、このコンピュータは、受信時間間隔が所定の閾値を超えると、受信したパケットを、先頭セグメントが含まれるパケットとして特定するよう、動作する。
【発明の効果】
【００１１】
従って、先に開示したパケット特定プログラムによれば、パケットロスが生じた後でも、先頭セグメントを含むパケットが特定できるようになる。
【発明を実施するための最良の形態】
【００１２】
以下、添付図面を参照しながら、先に開示したパケット特定プログラムの実施形態であるコンピュータネットワークシステムについて、説明する。
【００１３】
《構成》
図１は、本実施形態のコンピュータネットワークシステムの構成図である。
【００１４】
本実施形態のコンピュータネットワークシステムは、第１及び第２のコンピュータ１０、２０、ＬＡＮ［Local Area Network］スイッチ３０、並びに、通信状態可視化装置４０を、含んでいる。
【００１５】
第１及び第２のコンピュータ１０、２０は、何れも、相手側とパケットの遣り取りを行う機能を有する一般的なコンピュータである。ここで、パケットとは、通信モデルの１つであるＴＣＰ／ＩＰ［Transmission Control Protocol/Internet Protocol］モデルの中
のインターネットレイヤでの送信単位である。ＬＡＮスイッチ３０は、パケット伝送路のスイッチングを行う中継機器である。図１に示すように、ＬＡＮスイッチ３０には、第１及び第２のコンピュータ１０、２０がそれぞれ接続されている。通信状態可視化装置４０は、複数のコンピュータが互いに遣り取りするパケットをＬＡＮスイッチ３０を介して取得し、取得したパケットに基づいてその通信状態を可視化するための装置である。本実施形態では、第１及び第２のコンピュータ１０、２０が、通信状態可視化装置４０の監視対象となっている。なお、図１では、通信状態可視化装置４０の監視対象は、２台となっているが、３台以上であっても良い。
【００１６】
図２は、ＬＡＮスイッチ３０の構成図である。
【００１７】
ＬＡＮスイッチ３０は、通信ユニット３０ａ、ＲＯＭ［Read Only Memory］ユニット３０ｂ、ＣＰＵ［Central Processing Unit］３０ｃ、及び、ＲＡＭ［Random Access Memory］ユニット３０ｄを、含んでいる。
【００１８】
通信ユニット３０ａは、コンピュータ又は中継機器とパケットの遣り取りを行うためのユニットである。通信ユニット３０ａは、複数の通信ポート３１を備え、１つの通信ポート３１からパケットが進入してくると、そのパケットの送り出し先として適切な通信ポート３１を選択し、選択した通信ポート３１からそのパケットを送出する。これら通信ポート３１には、それぞれ、第１及び第２のコンピュータ１０、２０が接続されている。なお、図２では、２個の通信ポート３１しか示していないが、通信ユニット３０ａは、３個以上の通信ポート３１を備えていても良い。また、通信ユニット３０ａは、ポートミラーリング機能３２を実現するための回路を内蔵している。ポートミラーリング機能３２は、特定の通信ポート３１を通過するパケットを複製し、複製したパケットをミラーポート３３から送出するための機能である。本実施形態では、通信ユニット３０ａは、１個のミラーポート３３を備え、ポートミラーリング機能３２は、２個の通信ポート３１から進入してくる全てのパケットを複製し、複製したパケットをミラーポート３３から出力するようになっている。なお、複製元のパケットは、前述したように、適切な通信ポート３１から送出される。本実施形態では、ミラーポート３３には、通信状態可視化装置４０が接続されている。
【００１９】
ＲＯＭユニット３０ｂは、通信ユニット３０ａを制御するためのプログラムや各種の設定データが記録されているユニットである。ＣＰＵ３０ｃは、ＲＯＭユニット３０ｂ内のプログラムに従って処理を行うユニットである。ＲＡＭユニット３０ｄは、ＣＰＵ３０ｃがプログラムやデータをキャッシュしたり作業領域を展開したりするためのユニットである。
【００２０】
図３は、通信状態可視化装置４０の構成図である。
【００２１】
通信状態可視化装置４０は、監視対象のコンピュータ１０、２０間の通信状態を可視化するための機能が附加されたコンピュータである。通信状態可視化装置４０は、ディスプレイ等の出力デバイス４０ａと、キーボードやマウス等の操作デバイス４０ｂと、これらデバイス４０ａ、４０ｂが接続された本体とからなる。本体は、ビデオ制御ユニット４０ｃ、入力制御ユニット４０ｄ、通信ユニット４０ｅ、ストレージユニット４０ｆ、ＣＰＵ［Central Processing Unit］４０ｇ、及び、メインメモリユニット４０ｈを、内蔵して
いる。
【００２２】
この通信状態可視化装置４０は、ストレージユニット４０ｆに、少なくとも、オペレーティングシステム４１と、通信状態可視化部４２とを、記憶している。
【００２３】
オペレーティングシステム４１は、ソフトウエアとハードウエアの仲介、メモリ空間の管理、ファイル管理、プロセスやタスクの管理などを行う。また、オペレーティングシステム４１は、通信ユニット４０ｅの動作を制御するためのドライバ（図４の４１ａ）を含んでいる。なお、オペレーティングシステム４１には、図示せぬＴＣＰ／ＩＰスイートが含まれていても良い。ＴＣＰ／ＩＰスイートは、通信ユニット４０ｅを介して接続されている他のコンピュータのＴＣＰ／ＩＰスイートと、ＴＣＰ／ＩＰに従ってパケットの遣り取りを行うためのプログラムである。但し、本実施形態では、オペレーティングシステム４１に含まれるＴＣＰ／ＩＰスイートは、使用されない。
【００２４】
図４は、通信状態可視化部４２の構成図である。
【００２５】
通信状態可視化ソフトウエア４２は、監視対象のコンピュータ１０、２０間の通信状態を可視化するための機能をコンピュータに附加するためのソフトウエアである。具体的には、通信状態可視化ソフトウエア４２は、利用者からの求めに応じて、監視対象のコンピ
ュータ１０、２０間を流れるパケットの内容を表示する機能を有する。また、通信状態可視化ソフトウエア４２は、パケット内に記述されているプロトコルやアドレスに関する情報を利用者が理解しやすい形態に変換して表示する機能、特定の条件に合致するパケットを抽出して統計的な処理を行って図やグラフを表する機能を有する。さらに、通信状態可視化ソフトウエア４２は、受信したパケットに基づいてＴＣＰコネクション確立シーケンスやメッセージの遣り取りをラダー表示する機能を、含んでいる。これらの機能を実現するため、通信状態可視化部４２は、メッセージ再組立部４２ａ、通信部４２ｂ、及び、通信状態解析部４２ｃを、含んでいる。
【００２６】
メッセージ再組立部４２ａは、パケットからＩＰヘッダとＴＣＰヘッダとを取り除いて残るセグメントを基にメッセージの再組み立てを行うための処理部である。ここで、メッセージは、前述したＴＣＰ／ＩＰモデルにおいてトランスポートレイヤより上位の通信レイヤであるアプリケーションレイヤでの送信単位である。メッセージ再組立部４２ａは、図４に示すように、オペレーティングシステム４１内のドライバ４１ａから、図示せぬＴＣＰ／ＩＰスイートを介さずに、直接、パケットを受け取るようになっている。このメッセージ再組立プログラム４２ａが実行する処理の内容については、図１０を用いて後述する。また、メッセージ再組立部４２ａは、さらに、受信部、取得部、及び、特定部を含む。受信部は、パケットを順次受信する処理部である。取得部は、パケットを受信する毎に、その受信されたパケットと同一コネクションにおいてそのパケットとそのパケットの直前に受信されたパケットとの受信時間間隔を、取得する処理部である。特定部は、取得した受信時間間隔が所定の閾値を超えた場合に、受信したパケットを、１つのメッセージを構成する複数のセグメントのうちの先頭のセグメントが含まれるパケットとして特定する処理部である。
【００２７】
通信部４２ｂは、通信ユニット４０ｅを介して接続されている他のコンピュータの通信アプリケーションと、アプリケーションレイヤに属する所定のプロトコルに従って、メッセージの遣り取りを行うための処理部である。本実施形態では、通信部４２ｂは、メッセージ再組立部４２ａにより生成されたメッセージから、所定のプロトコルに従って、ヘッダを取り除いてデータを取り出すために、利用される。なお、所定のプロトコルとしては、ＨＴＴＰ［HyperText Transfer Protocol］、ＩＩＯＰ［Internet Inter-ORB Protocol］（オブジェクトマネージメントグループの商標）、ＳＭＴＰ［Simple Mail Transfer Protocol］、ＦＴＰ［File Transfer Protocol］などがある。
【００２８】
通信状態解析部４２ｃは、監視対象となる複数のコンピュータ間の通信状態を可視化するために必要な情報を生成するための処理部である。より具体的には、通信状態解析部４２ｃは、通信状態可視化部４２が利用者に提供する図やグラフなどを生成するための統計的な処理を行う機能、及び、ラダー表示に必要なＴＣＰコネクション確立シーケンスやメッセージの遣り取りを解析する機能を、含んでいる。これらの機能を実現するため、通信状態解析部４２ｃは、オペレーティングシステム４１内のドライバ４１ａからパケットを直接受け取れるようになっている。また、通信状態解析部４２ｃは、メッセージ再組立部４２ａ及び通信部４２ｂからメッセージ及びデータを受け取れるようになっている。
【００２９】
《ＴＣＰ／ＩＰ》
次に、メッセージ再組立部４２ａによる処理の内容を理解するのに必要な知識として、ＴＣＰ／ＩＰに係る一般的な処理の内容について説明する。
【００３０】
図５は、一般的なメッセージの再組み立てについての説明図である。
【００３１】
トランスポートレイヤ及びインターネットレイヤに属するＴＣＰ／ＩＰスイートは、ネットワークインターフェースレイヤに属するドライバ（図４の４１ａ）からパケットを受
け取ると、受け取ったパケットからＩＰヘッダ及びＴＣＰヘッダを順に取り除く。そして、ＴＣＰ／ＩＰスイートは、残ったメッセージを、アプリケーションレイヤに属する通信アプリケーションに引き渡す。
【００３２】
また、ＴＣＰ／ＩＰスイートは、パケットが、メッセージを分割してできたセグメントにＩＰヘッダとＴＣＰヘッダとを附加したものである場合には、複数のパケットのそれぞれからセグメントを取り出す。そして、ＴＣＰ／ＩＰスイートは、取り出したセグメントを基にメッセージの再組み立てを行い、メッセージをアプリケーションレイヤに引き渡す。例えば、図５に示すように、第１乃至第３のパケットが、それぞれ、１個のメッセージを３個に分割してできた第１乃至第３のセグメントを含むものである場合、ＴＣＰ／ＩＰスイートは、第１乃至第３のパケットのそれぞれから、ＴＣＰヘッダとＩＰヘッダとを取り除く。そして、ＴＣＰ／ＩＰスイートは、残りの第１乃至第３のセグメントを基に１個のメッセージの再組み立てを行い、再組み立てにより生成された１個のメッセージを、アプリケーションレイヤに属する通信アプリケーションに引き渡す。
【００３３】
なお、メッセージは、図６に示すように、ヘッダとメッセージ内容とからなり、ヘッダ内には、ヘッダ長を含まないメッセージ内容全体のサイズがメッセージ内容長として格納される「メッセージ内容長」フィールドを、有している場合が多い。例えば、ＩＩＯＰメッセージでは、ヘッダ内の「message size」フィールドにメッセージ内容長が格納される。また、メッセージ全体のサイズであるメッセージ長は、ヘッダ長とメッセージ内容長とを合計することにより、求めることができる。アプリケーションレイヤからトランスポートレイヤ及びインターネットレイヤに引き渡されるメッセージは、メッセージ長が長い場合には、ＴＣＰ／ＩＰスイートによって幾つかのセグメントに分割される。メッセージが分割されているときには、メッセージ長は、先頭のセグメント（図５では、「第１のセグメント」）の内容から算出することができる。
【００３４】
図７は、ＩＰヘッダフォーマットを示す図である。
【００３５】
図７に示すように、ＩＰヘッダは、「ヘッダ長」、「全長」、「出所ＩＰアドレス」及び「宛先ＩＰアドレス」のフィールドを、含んでいる。なお、図７では、これら以外のフィールドには、斜線掛けが施されされているが、この斜線掛けが施されたフィールドについては、本実施形態では使用しないため、説明を省略する。「ヘッダ長」フィールドには、そのＩＰヘッダのサイズが格納され、「全長」フィールドには、ＩＰヘッダを含むパケット全体のサイズが格納される。また、「出所ＩＰアドレス」フィールドには、パケットの出所となるコンピュータのＩＰアドレスが格納され、「宛先ＩＰアドレス」フィールドには、パケットの宛先となるコンピュータのＩＰアドレスが格納される。
【００３６】
図８は、ＴＣＰヘッダフォーマットを示す図である。
【００３７】
図８に示すように、ＴＣＰヘッダは、「出所ポート番号」、「宛先ポート番号」、「制御ビット」、「シーケンス番号」、「確認応答番号」及び「ヘッダ長」のフィールドを、含んでいる。なお、図８では、これら以外のフィールドには、斜線掛けが施されているが、この斜線掛けが施されたフィールドについては、本実施形態では使用しないため、説明を省略する。「出所ポート番号」フィールドには、パケットの出所となるコンピュータにおいて、パケット内のメッセージを作成した通信アプリケーションを特定するポート番号が格納される。「宛先ポート番号」フィールドには、パケットの宛先となるコンピュータにおいてパケット内のメッセージを利用する通信アプリケーションを特定するポート番号が格納される。「制御ビット」フィールドは、パケットの種類や特別な制御情報を示す６個の制御ビットが格納される。なお、６個の制御ビットは、それぞれ、ＵＲＧ［URGent］、ＡＣＫ［ACKnowledge］、ＰＳＨ［PuSH］、ＲＳＴ［ReSeT］、ＳＹＮ［SYNchronize］
、及び、ＦＩＮ［FINish］のフラグのオンオフを示すが、以下の説明では、ＡＣＫ、ＳＹＮ、ＦＩＮのみ使用される。「シーケンス番号」フィールドには、パケットの送り側が受け側に１回のＴＣＰコネクションで送信するデータの各バイトに順に割り当てたシーケンス番号のうち、そのパケット内のセグメントの先頭のバイトに割り当てられている番号が格納される。なお、シーケンス番号の初期値は、ランダムに決定されるようになっている。「確認応答番号」フィールドは、パケットが、ＴＣＰヘッダ内の制御ビットのＡＣＫフラグが立っているパケット（以下、ＡＣＫパケットと表記）である場合において、そのＡＣＫパケットの受け側が同じＴＣＰコネクションにおいて次にパケットを送ってくるときに、そのパケット内のセグメントの先頭バイトのシーケンス番号として期待される値が、格納される。より具体的には、この値は、ＡＣＫパケットの送り側が同一のＴＣＰコネクションにおいて受け側から先に受け取っていたパケットのシーケンス番号に対してそのパケットのセグメント長と１とを加えた値となっている。「ヘッダ長」フィールドには、ＴＣＰヘッダのサイズが格納される。
【００３８】
図９は、ＴＣＰコネクションのシーケンスの一例を示す図である。
【００３９】
ＴＣＰコネクションを通じてメッセージの送信を行おうとする送信側コンピュータは、まず、ランダムな初期値（図９の例では、１０００）をシーケンス番号として決定する。続いて、送信側コンピュータは、ＴＣＰヘッダ内の制御ビットのＳＹＮフラグが立ったパケット（以下、ＳＹＮパケットと表記）Ｐ１を生成し、ＴＣＰヘッダの「シーケンス番号」フィールド（図９ではSequenceと表記）に初期値を格納する。送信側コンピュータは、更に、ＴＣＰヘッダの「拡張情報」フィールドにおいてＭＳＳ［Maximum Segment Size］（図９の例では、１４６０バイト）を指定し、このＳＹＮパケットＰ１をメッセージ送信先となる受信側コンピュータへ送信する。
【００４０】
すると、受信側コンピュータは、ＴＣＰに従って、ランダムな初期値（図９の例では、９０００）をシーケンス番号として決定する。続いて、受信側コンピュータは、ＴＣＰヘッダ内の制御ビットのＳＹＮフラグとＡＣＫフラグとがともに立ったパケット（以下、（ＳＹＮ＋ＡＣＫ）パケットと表記）Ｐ２を生成する。その後、受信側コンピュータは、送信側コンピュータがＳＹＮパケットＰ１において指定したシーケンス番号に１を加えたもの（図８の例では、１００１）を、ＴＣＰヘッダの「確認応答番号」フィールド（図９ではAck. No. と表記）に格納する。受信側コンピュータは、更に、この（ＳＹＮ＋ＡＣＫ
）パケットＰ２の「拡張情報」フィールドにおいてＭＳＳ（図９の例では、１４６０バイト）を指定し、この（ＳＹＮ＋ＡＣＫ）パケットＰ２を送信側コンピュータへ送信する。
【００４１】
これを受けて、送信側コンピュータは、ＡＣＫパケットＰ３を生成し、受信側コンピュータが（ＳＹＮ＋ＡＣＫ）パケットＰ２において指定した確認応答番号と同じもの（図９の例では、１００１）を、ＴＣＰヘッダの「シーケンス番号」フィールドに格納する。送信側コンピュータは、更に、受信側コンピュータが（ＳＹＮ＋ＡＣＫ）パケットＰ２において指定したシーケンス番号に１を加えたもの（図９の例では、９００１）を、ＴＣＰヘッダの「確認応答番号」フィールドに格納し、このＡＣＫパケットＰ３を受信側コンピュータに送信する。
【００４２】
以上に示したＳＹＮパケットＰ１と（ＳＹＮ＋ＡＣＫ）パケットＰ２とＡＣＫパケットＰ３との遣り取り（スリーウエイハンドシェイク）により、送信側コンピュータと受信側コンピュータとのＴＣＰコネクションが確立する。
【００４３】
その後、例えば、３５００バイトのメッセージが送信される場合、送信側コンピュータは、そのメッセージの先頭バイトからＭＳＳ（１４６０バイト）分を第１のセグメントとして切り出し、切り出した１４６０バイトの第１のセグメントを含むパケットＰ４を生成
する。続いて、送信側コンピュータは、このパケットＰ４の「シーケンス番号」フィールドに、受信側コンピュータが（ＳＹＮ＋ＡＣＫ）パケットＰ３において指定した確認応答番号と同じ１００１を格納する。そして、送信側コンピュータは、パケットＰ４の「確認応答番号」フィールドに、その（ＳＹＮ＋ＡＣＫ）パケットＰ３のシーケンス番号と同じ９００１を格納して、パケットＰ４を受信側コンピュータに送信する。受信側コンピュータは、このパケットＰ４の受信により第１のセグメントを取得し、ＡＣＫパケットＰ５を生成する。その後、受信側コンピュータは、ＡＣＫパケットＰ５の「シーケンス番号」フィールドに、パケットＰ４の確認応答番号と同じ９００１を格納する。更に、受信側コンピュータは、ＡＣＫパケットＰ５の「確認応答番号」フィールドに、パケットＰ４のシーケンス番号に第１のセグメント全体のバイト数（１４６０）と１とを加えた２４６１を、次に受信するパケットのシーケンス番号として期待される値として格納し、ＡＣＫパケットＰ５を送信側コンピュータに送信する。
【００４４】
また、送信側コンピュータは、送信すべき３５００バイトのメッセージのうち、１４６１バイト目からＭＳＳ（１４６０バイト）分を、第２のセグメントとして切り出し、切り出した１４６０バイトの第２のセグメントを含むパケットＰ６を生成する。続いて、送信側コンピュータは、このパケットＰ６の「シーケンス番号」フィールドに、直前に送ったパケットＰ４において指定したシーケンス番号にパケットＰ４内の第１のセグメント全体のバイト数を加えた２４６１を格納する。そして、送信側コンピュータは、パケットＰ６の「確認応答番号」フィールドに、パケットＰ４と同じ９００１を格納して、パケットＰ６を受信側コンピュータに送信する。受信側コンピュータは、このパケットＰ６の受信により第２のセグメントを取得し、ＡＣＫパケットＰ７を生成する。その後、受信側コンピュータは、ＡＣＫパケットＰ７の「シーケンス番号」フィールドに、パケットＰ６の確認応答番号と同じ９００１を格納する。更に、受信側コンピュータは、ＡＣＫパケットＰ７の「確認応答番号」フィールドに、パケットＰ６のシーケンス番号に第２のセグメント全体のバイト数と１とを加えた３９２１を、次に受信するパケットのシーケンス番号として期待される値として格納し、ＡＣＫパケットＰ７を送信側コンピュータに送信する。
【００４５】
更に、送信側コンピュータは、送信すべき３５００バイトのメッセージのうち、２９２１バイト目以降の５８０バイトを、第３のセグメントとし、５８０バイトの第３セグメントを含むパケットＰ８を生成する。続いて、送信側コンピュータは、このパケットＰ８の「シーケンス番号」フィールドに、直前に送ったパケットＰ６において指定したシーケンス番号にパケットＰ６内の第２のセグメント全体のバイト数を加えた３９２１を格納する。そして、送信側コンピュータは、パケットＰ８の「確認応答番号」フィールドに、パケットＰ６と同じ９００１を格納して、パケットＰ８を受信側コンピュータに送信する。受信側コンピュータは、このパケットＰ８の受信により第３のセグメントを取得し、ＡＣＫパケットＰ９を生成する。その後、受信側コンピュータは、ＡＣＫパケットＰ９の「シーケンス番号」フィールドに、パケットＰ８の確認応答番号と同じ９００１を格納する。更に、受信側コンピュータは、ＡＣＫパケットＰ９の「確認応答番号」フィールドに、パケットＰ８のシーケンス番号に第３のセグメント全体のバイト数と１とを加えた４５０１を、次に受信するパケットのシーケンス番号として期待される値として格納する。そして、受信側コンピュータは、ＡＣＫパケットＰ９を送信側コンピュータに送信する。
【００４６】
なお、ＴＣＰコネクションの切断に関しては、ＴＣＰヘッダ内の制御ビットのＦＩＮフラグが立ったパケットとＡＣＫパケットとの遣り取りが行われることとなるが、この説明は省略する。
【００４７】
ＴＣＰコネクションの確立後、以上に示したようにしてメッセージが送信側コンピュータから受信側コンピュータに送信される。このとき、送信側コンピュータが送信するパケットＰ４、Ｐ６、Ｐ８のシーケンス番号に着目してみると、パケットＰ４、Ｐ６、Ｐ８で
送信するセグメントのサイズをそのＡＣＫパケットのシーケンス番号に加算して得られる値が、次のＡＣＫパケットのシーケンス番号とされる。従って、受信側コンピュータにとってみれば、受信したパケットのシーケンス番号とセグメント長とが分かっていれば、次に受信すべきパケットのシーケンス番号が分かることとなる。また、受信したパケットのシーケンス番号が、その直前に受信したパケットのシーケンス番号とセグメント長とを足し合わせたものに一致しない場合には、受信側コンピュータは、パケットロスが発生したことが分かることとなる。後述のステップＳ１４１乃至Ｓ１４３は、この技術を利用したものである。
【００４８】
以上を踏まえて、メッセージ再組立部４２ａによる処理の内容について、説明する。
【００４９】
《処理》
図１０は、メッセージ再組立処理の流れを示す図である。
【００５０】
メッセージ再組立処理の開始後、最初のステップＳ１０１では、メッセージ再組立部４２ａは、レコードが１つも存在していない新規のワークテーブルを１個生成する。このワークテーブルは、通信状態可視化装置４０の監視対象の間において確立される複数のＴＣＰコネクションに関する情報を記録するためのテーブルである。
【００５１】
図１１は、ワークテーブル５１を模式的に示す図である。
【００５２】
ワークテーブル５１の各レコードは、「出所ＩＰアドレス」、「宛先ＩＰアドレス」、「出所ポート番号」、「宛先ポート番号」、「受信時刻」、「シーケンス番号」、「セグメント長」、「パケットロス」及び「残りメッセージ長」のフィールドを、有している。「出所ＩＰアドレス」及び「宛先ＩＰアドレス」の各フィールドは、パケットのＩＰヘッダ（図７参照）に格納されている出所ＩＰアドレス及び宛先ＩＰアドレスがそれぞれ記録されるフィールドである。「出所ポート番号」及び「宛先ポート番号」の各フィールドは、パケットのＴＣＰヘッダ（図８参照）に格納されている出所ポート番号及び宛先ポート番号がそれぞれ記録されるフィールドである。「受信時刻」フィールドは、監視対象のコンピュータ１０、２０間を流れるパケットの複製をＬＡＮスイッチ３０から通信状態可視化装置４０が受信した時刻が記録されるフィールドである。「シーケンス番号」フィールドは、パケットのＴＣＰヘッダに格納されているシーケンス番号が記録されるフィールドである。「セグメント長」フィールドは、パケットからＩＰヘッダとＴＣＰヘッダとを取り除いた残りのセグメント全体のサイズが記録されるフィールドである。「パケットロス」フィールドは、出所ＩＰアドレス、宛先ＩＰアドレス、出所ポート番号、及び、宛先ポート番号の組み合わせにより特定されるＴＣＰコネクションにおいてパケットロスが発生したか否かを示すパケットロスフラグが記録されるフィールドである。なお、本実施形態では、ＴＣＰコネクションにおいてパケットロスが発生すると、後述の判定処理部が、パケットロスフラグを「０」から「１」に切り替える。「残りメッセージ長」フィールドは、そのＴＣＰコネクションにおいて送信されるメッセージのうちの未送信部分のサイズが残りメッセージ長として記録されるフィールドである。
【００５３】
メッセージ再組立部４２ａは、図１１に示すようなフィールド構成を有する新規なワークテーブル５１を生成すると、図１０のステップＳ１０２へ処理を進める。
【００５４】
ステップＳ１０２では、メッセージ再組立部４２ａは、新規の度数テーブルを２個生成する。ここで生成される２個の度数テーブルは、何れも、同一のＴＣＰコネクションにおいて連続して受信されたパケット同士の受信時間間隔についての度数分布を記録するためのテーブルである。受信時間間隔は、連続変量であるため、度数分布は、その受信時間間隔が採り得る時間の範囲を均等分割して複数の階級（区間）を設定し、各階級に属する受
信時間間隔の度数（個数）を数え上げることにより、得られる。なお、１個目の度数テーブルは、同一のＴＣＰコネクションにおいて連続して受信された２個のパケットの中のセグメント同士がともに同一のメッセージを構成する場合におけるそれら２個のパケットの受信時間間隔の度数分布（第１の度数分布）を記録するためのテーブルである。以下、１個目の度数テーブルを、セグメント度数テーブル５２と表記する。２個目の度数テーブルは、同一のＴＣＰコネクションにおいて連続して受信された２個のパケットの中のセグメント同士が互いに異なるメッセージを構成する場合におけるそれら２個のパケットの受信時間間隔の度数分布（第２の度数分布）を記録するためのテーブルである。以下、２個目の度数テーブルを、メッセージ度数テーブル５３と表記する。セグメント度数テーブル５２は、全体の度数分布を得るためのものであるため、複数のＴＣＰコネクションに対して、１個生成される。同様に、メッセージ度数テーブル５３も、複数のＴＣＰコネクションに対して、１個生成される。
【００５５】
図１２は、度数テーブル５２（５３）を模式的に示す図である。
【００５６】
度数テーブル５２（５３）は、事前に設定された階級の個数と同数のレコードを、有している。図１２には、0.00msecから0.25msecまでの範囲を２５等分することによって0.01msecの時間幅を持つ複数の階級（区間）が設定された場合の例が、示されている。本実施形態では、受信時間間隔についての度数分布を得るために設定される階級は、何れの度数テーブル５２（５３）でも同じである。従って、セグメント度数テーブル５２とメッセージ度数テーブル５３は、互いに同じレコード数を有することになる。図１２に示すように、度数テーブル５２（５３）の各レコードは、「階級」及び「度数」のフィールドを、有している。「階級」フィールドは、その階級（区間）を特定する情報が格納されるフィールドである。図１２では、「0.00002sec - 0.00003sec」のように、その階級（区間）の
始点の時間と終点の時間とが、「階級」フィールドに格納されている。「度数」フィールドは、その階級に属する受信時間間隔の度数（個数）が格納されるフィールドである。なお、度数テーブル５２（５３）が生成された直後においては、「度数」フィールドの値は、どのレコードとも、初期値である「０」となっている。
【００５７】
メッセージ再組立部４２ａは、図１２に示すようなフィールド構成を有する２個の新規な度数テーブル５２（５３）を生成すると、図１０のステップＳ１０３へ処理を進める。
【００５８】
ステップＳ１０３では、メッセージ再組立部４２ａは、パケット受信サブルーチンを呼び出して実行する。パケット受信サブルーチンは、パケットを順次受信するための受信部である。
【００５９】
図１３は、パケット受信サブルーチンの流れを示す図である。
【００６０】
パケット受信サブルーチンの開始後、最初のステップＳ１３１では、受信部は、ＬＡＮスイッチ３０のポートミラーリング機能３２が複製したパケットを受信するまで、待機する（ステップＳ１３１；いいえ）。そして、パケットを受信すると（ステップＳ１０３；はい）、受信部は、ステップＳ１３２へ処理を進める。
【００６１】
ステップＳ１３２では、受信部は、ステップＳ１３１でパケットを受信した時刻を、取得する。
【００６２】
次のステップＳ１３３では、受信部は、ステップＳ１３１で受信したパケットのＩＰヘッダとＴＣＰヘッダとからコネクション特定情報を取得する。コネクション特定情報は、出所ＩＰアドレス、宛先ＩＰアドレス、出所ポート番号、及び、宛先ポート番号からなる情報である。受信部は、コネクション特定情報を取得すると、ステップＳ１３４へ処理を
進める。
【００６３】
ステップＳ１３４では、受信部は、ステップＳ１３４で取得したコネクション特定情報を検索条件として、図１１のワークテーブル５１を検索する。
【００６４】
次のステップＳ１３５では、受信部は、ステップＳ１３４での検索により、検索条件を満たすレコードが図１５のワークテーブル５１から検出できたか否かを、判別する。そして、検索条件を満たすレコードが図１５のワークテーブル５１から検出できなかった場合（ステップＳ１３５；いいえ）、受信部は、ステップＳ１３５からステップＳ１３６へ処理を分岐させる。
【００６５】
ステップＳ１３６では、受信部は、ステップＳ１３１で受信したパケットのＴＣＰヘッダからシーケンス番号を取得する。また、受信部は、当該パケットのＩＰヘッダから全長とヘッダ長を取得するとともに、ＴＣＰヘッダからヘッダ長を取得し、全長から両方のヘッダ長を差し引くことによって、セグメント長を取得する。
【００６６】
次のステップＳ１３７では、受信部は、ステップＳ１３１で受信したパケットからＩＰヘッダとＴＣＰヘッダとを取り除き、残りのセグメントを、セグメントを格納するために用意されている所定のバッファに、格納する。
【００６７】
次のステップＳ１３８では、受信部は、ステップＳ１３７で所定のバッファに格納したセグメントに含まれるメッセージヘッダを読み出し、読み出したメッセージヘッダの内容に基づいてメッセージ長を取得する。なお、アプリケーションレイヤのプロトコルによっては、メッセージヘッダに、メッセージ全体のサイズが格納されている。この場合、受信部は、メッセージヘッダからメッセージ全体のサイズを読み出すことにより、メッセージ長を取得することとなる。また、プロトコルによっては、メッセージヘッダに、メッセージ内容長とメッセージヘッダ長とが格納されている。この場合、受信部は、メッセージヘッダからメッセージ内容長とメッセージヘッダ長とを読み出し、これらを合算することによって、メッセージ長を取得することとなる。また、プロトコルによっては、メッセージ長が固定である。この場合、受信部は、そのメッセージ長をそのまま利用することとなる。
【００６８】
次のステップＳ１３９では、受信部は、図１１のワークテーブル５１に、ステップＳ１３２で取得した受信時刻、ステップＳ１３３で取得したコネクション特定情報、ステップＳ１３６で取得したシーケンス番号及びセグメント長、並びに、ステップＳ１３８で取得したメッセージ長を含むレコードを、追加する。なお、ステップＳ１３８で取得したメッセージ長は、「残りメッセージ長」フィールドに、残りメッセージ長として格納される。また、ここで追加されるレコードの「パケットロス」フィールドの値（パケットロスフラグ）は、「０（オフ）」となっている。受信部は、レコードの追加を終えると、ステップＳ１３１へ処理を戻し、ＬＡＮスイッチ３０のポートミラーリング機能３２が複製したパケットを受信するまで待機する状態に戻る。
【００６９】
一方、ステップＳ１３５での検索により、検索条件を満たすレコードが図１１のワークテーブル５１から検出できた場合（ステップＳ１３５；はい）、受信部は、図１３に係るパケット受信サブルーチンを終了させる。
【００７０】
パケット受信サブルーチンが終了すると、メッセージ再組立部４２ａは、図１０のメッセージ再組立処理に復帰し、ステップＳ１０４へ処理を進める。
【００７１】
ステップＳ１０４では、メッセージ再組立部４２ａは、パケットロス判定サブルーチン
を呼び出して実行する。パケットロス判定サブルーチンは、受信したパケットと同一のＴＣＰコネクションにおいてパケットロスが発生したか否かを判定するための判定部である。
【００７２】
図１４は、パケットロス判定サブルーチンの流れを示す図である。
【００７３】
パケットロス判定サブルーチンの開始後、最初のステップＳ１４１では、判定部は、図１３のステップＳ１３１で受信したパケットのＴＣＰヘッダからシーケンス番号を取得する。
【００７４】
次のステップＳ１４２では、判定部は、図１３のステップＳ１３４での検索により検出されたレコードからシーケンス番号とセグメント長とを読み出す。なお、ここで読み出されるシーケンス番号とセグメント長は、図１３のステップＳ１３１で受信したパケットと同一のＴＣＰコネクションにおいてそのパケットの直前に受信されたパケットに関するものである。続いて、判定部は、読み出したシーケンス番号とセグメント長とを合算することにより、合計値を取得する（図９参照）。
【００７５】
次のステップＳ１４３では、判定部は、ステップＳ１４１で取得したシーケンス番号とステップＳ１４２で取得した合計値とが一致するか否かを、判別する。なお、前述したように、このステップＳ１４３は、パケットロスが発生したか否かを判別する処理である。そして、ステップＳ１４１で取得したシーケンス番号とステップＳ１４２で取得した合計値とが一致していなかった場合（ステップＳ１４３；いいえ）、判定部は、パケットロスが発生したとして、ステップＳ１４３からステップＳ１４４へ処理を分岐させる。
【００７６】
ステップＳ１４４では、判定部は、図１３のステップＳ１３４での検索により検出されたレコードの「パケットロス」フィールドの値（パケットロスフラグ）を、「０（オフ）」から「１（オン）」に切り替える。
【００７７】
次のステップＳ１４５では、判定部は、図１３のステップＳ１３４での検索により検出されたレコードの「残りメッセージ長」フィールドの値（残りメッセージ長）をクリアする。
【００７８】
次のステップＳ１４６では、判定部は、通信アプリケーション（図４の４２ｂ）に引き渡すべきメッセージを構成する全てのセグメントの受信が完了していないものの、所定のバッファをクリアする。
【００７９】
次のステップＳ１４７では、判定部は、図１３のステップＳ１３１で受信したパケットのＩＰヘッダから全長とヘッダ長を取得するとともに、ＴＣＰヘッダからヘッダ長を取得し、全長から両方のヘッダ長を差し引くことによって、セグメント長を取得する。
【００８０】
次のステップＳ１４８では、判定部は、図１３のステップＳ１３４での検索により検出されたレコードの「受信時刻」、「シーケンス番号」及び「セグメント長」の各フィールドの値に、図１３のステップＳ１３２で取得した受信時刻、ステップＳ１４１で取得したシーケンス番号、及び、ステップＳ１４７で取得したセグメント長をそれぞれ上書きすることにより、当該レコードを更新する。
【００８１】
次のステップＳ１４９では、判定部は、図１３のステップＳ１３１で受信したパケット内のセグメントを所定のバッファに格納することなく、そのパケットを破棄する。その後、判定部は、図１４のパケットロス判定サブルーチンを離脱する。すると、ＣＰＵ４０ｇは、図１０のメッセージ再組立処理に復帰し、ステップＳ１０３へ処理を戻す。
【００８２】
一方、ステップＳ１４１で取得したシーケンス番号とステップＳ１４２で取得した合計値とが一致していた場合（ステップＳ１４３；はい）、判定部は、パケットロスが発生していなかったとして、図１４に係るパケットロス判定サブルーチンを終了させる。
【００８３】
パケットロス判定サブルーチンが終了すると、ＣＰＵ４０ｇは、図１０のメッセージ再組立処理に復帰し、ステップＳ１０５へ処理を進める。
【００８４】
ステップＳ１０５では、ＣＰＵ４０ｇは、図１３のステップＳ１３４での検索により検出されたレコードの「パケットロス」フィールドの値（パケットロスフラグ）が「０（オフ）」であるか「１（オン）」であるかを、判別する。そして、図１３のステップＳ１３４での検索により検出されたレコードの「パケットロス」フィールドの値（パケットロスフラグ）が「０（オフ）」であった場合、ＣＰＵ４０ｇは、図１３のステップＳ１３１で受信したパケットと同一のＴＣＰコネクションにおいてパケットロスが発生していないとして、ステップＳ１０５からステップＳ１０６へ処理を進める。
【００８５】
ステップＳ１０６では、メッセージ再組立部４２ａは、度数テーブル更新サブルーチンを呼び出して実行する。度数テーブル更新サブルーチンは、図１３のステップＳ１３１で受信したパケットと同一のＴＣＰコネクションにおいてそのパケットとそのパケットの直前に受信されたパケットとの受信時間間隔に基づいて、セグメント度数テーブル５２又はメッセージ度数テーブル５３を更新するための処理部である。
【００８６】
図１５は、度数テーブル更新サブルーチンの流れを示す図である。
【００８７】
ステップＳ１６１では、度数テーブル更新部は、図１３のステップＳ１３１で受信したパケットと同一のＴＣＰコネクションにおいて前回パケットを受信した時から今回パケットを受信したときまでの受信時間間隔を、直前の受信時間間隔として、取得する。具体的には、度数テーブル更新部は、まず、図１３のステップＳ１３４での検索により検出されたレコードの「受信時刻」フィールドから、同一のＴＣＰコネクションにおいて前回受信したパケットの受信時刻を読み出す。続いて、ＣＰＵ４０ｇは、図１３のステップＳ１３２で取得した受信時刻から、前回の受信時刻を差し引くことにより、受信時間間隔を取得する。
【００８８】
次のステップＳ１６２では、度数テーブル更新部は、図１３のステップＳ１３４での検索により検出されたレコードの「残りメッセージ長」フィールドの値（残りメッセージ長）を、取得する。
【００８９】
次のステップＳ１６３では、度数テーブル更新部は、ステップＳ１６２で取得した残りメッセージ長がゼロであるか否かを、判別する。そして、ステップＳ１６２で取得した残りメッセージ長がゼロでなかった場合（ステップＳ１６３；いいえ）、度数テーブル更新部は、図１３のステップＳ１３１で受信したパケットの中のセグメントが、同一のＴＣＰコネクションにおいて直前に受信されたパケット内のセグメントと同じメッセージを構成しているとして、ステップＳ１６３からステップＳ１６４へ処理を分岐させる。
【００９０】
ステップＳ１６４では、度数テーブル更新部は、図１２のセグメント度数テーブル５２において、ステップＳ１６１で取得した受信時間間隔が属する階級を特定し、その階級の度数を、１つ増やす。その後、度数テーブル更新部は、ステップＳ１６６へ処理を進める。
【００９１】
一方、ステップＳ１６２で取得した残りメッセージ長がゼロであった場合（ステップＳ
１６３；はい）、度数テーブル更新部は、図１３のステップＳ１３１で受信したパケットの中のセグメントが、同一のＴＣＰコネクションにおいて直前に受信されたパケット内のセグメントとは異なるメッセージを構成しているとして、ステップＳ１６３からステップＳ１６５へ処理を分岐させる。
【００９２】
ステップＳ１６５では、度数テーブル更新部は、図１２のメッセージ度数テーブル５３において、ステップＳ１６１で取得した受信時間間隔が属する階級を特定し、その階級の度数を、１つ増やす。その後、度数テーブル更新部は、ステップＳ１６６へ処理を進める。
【００９３】
ステップＳ１６６では、度数テーブル更新部は、閾値更新サブルーチンを呼び出して実行する。閾値更新サブルーチンは、セグメント度数テーブル５２とメッセージ度数テーブル５３とに基づいて閾値を更新するための処理部である。ここで、閾値とは、メッセージの先頭部分となるセグメントが含まれたパケットを他のパケットの中から特定するために後述のステップＳ１０９（図１０）において用いられるものである。
【００９４】
図１６及び図１７は、閾値更新サブルーチンの流れを示す図である。
【００９５】
ステップＳ６０１では、閾値更新部は、図１２のセグメント度数テーブル５２において、度数が１以上の階級のうち、階級値が最大の階級を特定し、その階級値を取得する。ここで階級値は、本実施形態においては、その階級（区間）の始点の時間と終点の時間との平均値となっている。例えば、階級が「0.00002sec - 0.00003sec」である場合には、階
級値は0.000025secである。なお、ここで取得された階級値は、セグメント度数テーブル
５２の内容（第１の度数分布）に基づくグラフであるヒストグラムにおける最大階級値となる。以下、このヒストグラムを、セグメント間隔ヒストグラムと表記する。
【００９６】
次のステップＳ６０２では、閾値更新部は、図１２のメッセージ度数テーブル５３において、度数が１以上の階級のうち、階級値が最小の階級を特定し、その階級値を取得する。なお、ここで取得された階級値は、メッセージ度数テーブル５３の内容（第２の度数分布）に基づくグラフであるヒストグラムにおける最小階級値となる。以下、このヒストグラムを、メッセージ間隔ヒストグラムと表記する。
【００９７】
次のステップＳ６０３では、閾値更新部は、ステップＳ６０１で特定した最大階級値が、ステップＳ６０２で特定した最小階級値以下であるか否かを、判別する。そして、ステップＳ６０１で特定した最大階級値が、ステップＳ６０２で特定した最小階級値以下であった場合（ステップＳ６０３；はい）、閾値更新部は、セグメント間隔ヒストグラムとメッセージ間隔ヒストグラムとをそれぞれ線グラフで表した場合の交点が存在しないとして、ステップＳ６０３からステップＳ６０４へ処理を進める。
【００９８】
ステップＳ６０４では、閾値更新部は、ステップＳ６０１で特定した最大階級値とステップＳ６０２で特定した最小階級値との中間値を算出する。そして、閾値更新部は、後述のステップＳ１０９（図１０）において用いられる閾値がその中間値と同じ値となるよう変更することにより、閾値を更新する。その後、閾値更新部は、図１６及び図１７に係る閾値更新サブルーチンを終了する。
【００９９】
一方、ステップＳ６０１で特定した最大階級値が、ステップＳ６０２で特定した最小階級値を上回っていた場合（ステップＳ６０３；いいえ）、閾値更新部は、セグメント間隔ヒストグラムとメッセージ間隔ヒストグラムとをそれぞれ線グラフで表した場合の交点が存在するとして、ステップＳ６０３から処理を分岐させ、図１７の第１の処理ループＬ１を実行する。
【０１００】
第１の処理ループＬ１では、閾値更新部は、２個の度数テーブル５２、５３に設定されている全ての階級を１つずつ順に処理対象として特定しながら、処理対象として特定した１つの階級について、ステップＳ６０５乃至Ｓ６０７からなる処理を実行する。
【０１０１】
ステップＳ６０５では、閾値更新部は、図１２のセグメント度数テーブル５２における処理対象階級のレコード内の度数を、変数Ｘに代入する。
【０１０２】
次のステップＳ６０６では、閾値更新部は、図１２のメッセージ度数テーブル５３における処理対象階級のレコード内の度数を、変数Ｙに代入する。
【０１０３】
次のステップＳ６０７では、閾値更新部は、変数Ｘの代入値が変数Ｙの代入値を上回っているか否かを、判別する。そして、変数Ｘの代入値が変数Ｙの代入値を上回っていた場合、閾値更新部は、横軸に階級値を持ち縦軸に度数を持つ座標系においてセグメント間隔ヒストグラムとメッセージ間隔ヒストグラムとをそれぞれ線グラフで表した場合の交点の階級値軸の座標値が、処理対象階級の階級値より大きいとして、第１の処理ループＬ１におけるこの処理対象の回を終了する。
【０１０４】
閾値更新部は、２個の度数テーブル５２、５３に設定されている全ての階級について、ステップＳ６０５乃至Ｓ６０７からなる処理を実行し終えると、第１の処理ループＬ１から離脱し、図１６及び図１７に係る閾値更新サブルーチンを終了させる。
【０１０５】
一方、何れかの階級が第１の処理ループＬ１の処理対象として特定されている場合に、変数Ｘの代入値が変数Ｙの代入値以下となったときには（ステップＳ６０７；いいえ）、閾値更新部は、横軸に階級値を持ち縦軸に度数を持つ座標系においてセグメント間隔ヒストグラムとメッセージ間隔ヒストグラムとをそれぞれ線グラフで表した場合の交点の階級値軸の座標値が、処理対象階級の階級値以下になったとして、ステップＳ６０７から処理を分岐させることによって、第１の処理ループＬ１から離脱する。閾値更新部は、第１の処理ループＬ１から離脱すると、ステップＳ６０８へ処理を進める。
【０１０６】
ステップＳ６０８では、閾値更新部は、後述のステップＳ１０９（図１０）において用いられる閾値が処理対象階級の階級値と同じ値となるよう変更することにより、閾値を更新する。その後、閾値更新部は、図１６及び図１７に係る閾値更新サブルーチンを終了させる。
【０１０７】
閾値更新サブルーチンが終了すると、度数テーブル更新部は、図１５の度数テーブル更新サブルーチンに復帰し、この度数テーブル更新サブルーチンを終了させる。
【０１０８】
度数テーブル更新サブルーチンが終了すると、メッセージ再組立部４２ａは、図１０のメッセージ再組立処理に復帰し、ステップＳ１０７へ処理を進める。
【０１０９】
ステップＳ１０７では、メッセージ再組立部４２ａは、メッセージ処理サブルーチンを呼び出して実行する。メッセージ処理サブルーチンは、通信部（図４の４２ｂ）に引き渡すべきメッセージを構成する全てのセグメントを受信し終えていた場合に、メッセージを生成して通信部に引き渡すための処理部である。
【０１１０】
図１８は、メッセージ処理サブルーチンの流れを示す図である。
【０１１１】
ステップＳ１７１では、メッセージ処理部は、図１３のステップＳ１３１で受信したパケットのＩＰヘッダから全長とヘッダ長を取得するとともに、ＴＣＰヘッダからヘッダ長
を取得し、全長から両方のヘッダ長を差し引くことによって、セグメント長を取得する。
【０１１２】
次のステップＳ１７２では、メッセージ処理部は、図１３のステップＳ１３１で受信したパケットからＩＰヘッダとＴＣＰヘッダとを取り除き、残りのセグメントを、セグメントを格納するために用意されている所定のバッファに、格納する。
【０１１３】
次のステップＳ１７３では、メッセージ処理部は、図１３のステップＳ１３４での検索により検出されたレコードの「受信時刻」、「シーケンス番号」及び「セグメント長」の各フィールドの値に、図１３のステップＳ１３２で取得した受信時刻、図１４のステップＳ１４１で取得したシーケンス番号、及び、ステップＳ１７３で取得したセグメント長をそれぞれ上書きすることにより、当該レコードを更新する。
【０１１４】
次のステップＳ１７４では、メッセージ処理部は、図１３のステップＳ１３４での検索により検出されたレコードの「残りメッセージ長」フィールドの値から、ステップＳ１７２で取得したセグメント長を差し引いて得られる値を算出し、算出した値を当該フィールドの値に上書きすることにより、残りメッセージ長を更新する。
【０１１５】
次のステップＳ１７５では、メッセージ処理部は、ステップＳ１７４での更新の結果、残りメッセージ長が０となったか否かを、判別する。そして、ステップＳ１７４での更新の結果、残りメッセージ長が０とならなかった場合、メッセージ処理部は、通信アプリケーション（図４の４２ｂ）に引き渡すべきメッセージを構成する全てのセグメントを受信し終えていないとして、ステップＳ１７５から処理を分岐させ、図１８に係るメッセージ処理サブルーチンを終了させる。一方、ステップＳ１７４での更新の結果、残りメッセージ長が０となった場合、メッセージ処理部は、ステップＳ１７５からステップＳ１７６へ処理を進める。
【０１１６】
ステップＳ１７６では、メッセージ処理部は、所定のバッファに格納されている全てのセグメントに基づいてメッセージの再組立を行う。
【０１１７】
次のステップＳ１７７では、メッセージ処理部は、ステップＳ１７６での再組立により生成されたメッセージを通信部（図４の４２ｂ）に引き渡す。
【０１１８】
次のステップＳ１７８では、メッセージ処理部は、次のメッセージの受信に備えるため、所定のバッファをクリアする。その後、図１８に係るメッセージ処理サブルーチンを終了させる。
【０１１９】
メッセージ処理サブルーチンが終了すると、メッセージ再組立部４２ａは、図１０のメッセージ再組立処理に復帰し、ステップＳ１０３へ処理を戻す。
【０１２０】
一方、図１３のステップＳ１３４での検索により検出されたレコードの「パケットロス」フィールドの値（パケットロスフラグ）が「１（オン）」であった場合（ステップＳ１０５；いいえ）、メッセージ再組立部４２ａは、図１３のステップＳ１３１で受信したパケットと同一のＴＣＰコネクションにおいてパケットロスの発生の影響によりメッセージの再組立が不能な状態にあるとして、ステップＳ１０５からステップＳ１０８へ処理を進める。
【０１２１】
ステップＳ１０８では、取得部は、図１３のステップＳ１３１で受信したパケットと同一のＴＣＰコネクションにおいて前回パケットを受信した時から今回パケットを受信したときまでの受信時間間隔を、直前の受信時間間隔として、取得する。具体的には、取得部は、まず、図１３のステップＳ１３４での検索により検出されたレコードの「受信時刻」
フィールドから、同一のＴＣＰコネクションにおいて前回受信したパケットの受信時刻を読み出す。続いて、取得部は、図１３のステップＳ１３２で取得した受信時刻から、前回の受信時刻を差し引くことにより、受信時間間隔を取得する。
【０１２２】
次のステップＳ１０９では、取得部は、先頭特定サブルーチンを呼び出して実行する。先頭特定サブルーチンは、順次受信するパケットの中から、１つのメッセージを構成する複数のセグメントのうちの先頭のセグメントが含まれるパケットを特定するための処理部（以下、特定部という）である。
【０１２３】
図１９は、先頭特定判定サブルーチンの流れを示す図である。
【０１２４】
ステップＳ１９１では、特定部は、図１０のステップＳ１０８で取得した受信時間間隔が、図１６のステップＳ６０４又は図１７のステップＳ６０８により求められている閾値以下であるか否かを、判別する。そして、図１０のステップＳ１０８で取得した受信時間間隔が、図１６のステップＳ６０４又は図１７のステップＳ６０８により求められている閾値以下であった場合（ステップＳ１９１；はい）、特定部は、図１３のステップＳ１３１で受信したパケットがメッセージの先頭セグメントを含むものではないとして、ステップＳ１９１からステップＳ１９２へ処理を進める。
【０１２５】
ステップＳ１９２では、特定部は、図１３のステップＳ１３１で受信したパケットのＩＰヘッダから全長とヘッダ長を取得するとともに、ＴＣＰヘッダからヘッダ長を取得し、全長から両方のヘッダ長を差し引くことによって、セグメント長を取得する。
【０１２６】
次のステップＳ１９３では、特定部は、図１３のステップＳ１３４での検索により検出されたレコードの「受信時刻」、「シーケンス番号」及び「セグメント長」の各フィールドの値に、図１３のステップＳ１３２で取得した受信時刻、図１４のステップＳ１４１で取得したシーケンス番号、及び、ステップＳ１９２で取得したセグメント長をそれぞれ上書きすることにより、当該レコードを更新する。
【０１２７】
次のステップＳ１９４では、特定部は、図１３のステップＳ１３１で受信したパケット内のセグメントを所定のバッファに格納することなく、そのパケットを破棄する。その後、特定部は、図１９に係る先頭特定サブルーチンを終了させる。
【０１２８】
一方、図１０のステップＳ１０８で取得した受信時間間隔が、図１６のステップＳ６０４又は図１７のステップＳ６０８により求められている閾値を上回っていた場合（ステップＳ１９１；いいえ）、特定部は、図１３のステップＳ１３１で受信したパケットがメッセージの先頭セグメントを含むものであるとして、ステップＳ１９１からステップＳ１９５へ処理を分岐させる。
【０１２９】
ステップＳ１９５では、特定部は、図１３のステップＳ１３４での検索により検出されたレコードの「パケットロス」フィールドの値（パケットロスフラグ）を、「１（オン）」から「０（オフ）」に切り替える。
【０１３０】
次のステップＳ１９６では、特定部は、図１３のステップＳ１３１で受信したパケットのＩＰヘッダから全長とヘッダ長を取得するとともに、ＴＣＰヘッダからヘッダ長を取得し、全長から両方のヘッダ長を差し引くことによって、セグメント長を取得する。
【０１３１】
次のステップＳ１９７では、特定部は、図１３のステップＳ１３１で受信したパケットからＩＰヘッダとＴＣＰヘッダとを取り除き、残りのセグメントを所定のバッファに格納する。
【０１３２】
次のステップＳ１９８では、特定部は、ステップＳ１９７でバッファに格納したセグメントに含まれるメッセージヘッダを読み出し、読み出したメッセージヘッダの内容に基づいてメッセージ長を取得する。前述したように、アプリケーションレイヤのプロトコルが、メッセージヘッダにメッセージ全体のサイズが格納されるプロトコルである場合、特定部は、メッセージヘッダからメッセージ全体のサイズを読み出す。また、アプリケーションレイヤのプロトコルが、メッセージヘッダにメッセージ内容長とメッセージヘッダ長とが格納されるプロトコルである場合、特定部は、メッセージヘッダからメッセージ内容長とメッセージヘッダ長とを読み出し、これらを合算する。また、アプリケーションレイヤのプロトコルが、メッセージ長が固定であるプロトコルである場合、特定部は、そのメッセージ長をそのまま利用する。
【０１３３】
次のステップＳ１９９では、特定部は、図１３のステップＳ１３４での検索により検出されたレコードの「受信時刻」、「シーケンス番号」、「セグメント長」及び「残りメッセージ長」の各フィールドの値に、図１３のステップＳ１３２で取得した受信時刻、図１４のステップＳ１４１で取得したシーケンス番号、ステップＳ１９６で取得したセグメント長、ステップＳ１９８で取得したメッセージ長をそれぞれ上書きすることにより、当該レコードを更新する。なお、ステップＳ１９８で取得したメッセージ長は、「残りメッセージ長」フィールドに、残りメッセージ長として上書きされる。また、この時点では、ステップＳ１９５を経ているため、「パケットロス」フィールドの値（パケットロスフラグ）は、「０（オフ）」となっている。特定部は、レコードの更新を終えると、図１９に係る先頭特定サブルーチンを終了させる。
【０１３４】
先頭特定サブルーチンが終了すると、メッセージ再組立部４２ａは、図１０のステップＳ１０３へ処理を戻す。
【０１３５】
《作用効果》
本実施形態の通信状態可視化装置４０は、通信状態可視化部４２が起動されている状態では、監視対象のコンピュータ１０、２０間を流れるパケットの複製をＬＡＮスイッチ３０から受信する毎に、そのパケットの所属するＴＣＰコネクションを特定し、そのＴＣＰコネクション内でのパケットロスの発生を確認する。
【０１３６】
そして、何れかのＴＣＰコネクションにおいてパケットロスの発生を確認すると、通信状態可視化装置４０は、メッセージを構成するセグメントのうちの先頭のセグメントが含まれると見積もられるパケットを受信するまで、そのＴＣＰコネクションに係るパケットを破棄し、先頭のセグメントが含まれると推定し得るパケットを受信すると、メッセージの再組立を再開することとなる。
【０１３７】
このように、本実施形態の通信状態可視化装置４０によれば、パケットロスが生じた後でも、先頭セグメントを含むパケットが特定できるようになり、メッセージの再組み立てが行えるようになる。
【０１３８】
なお、メッセージを構成するセグメントのうちの先頭のセグメントがパケットに含まれるか否かは、そのパケットと同一コネクションにおいてそのパケットとその直前に受信されたパケットとの受信時間間隔が所定の閾値を超えるか否かに基づいて、判別される。その閾値は、受信時間間隔の統計に基づいて更新されている。
【０１３９】
具体的には、通信状態可視化装置４０は、同一のメッセージに所属するセグメントを含み連続して受信された一対のパケットの受信時間間隔についてのセグメント度数テーブル５２、又は、異なるメッセージに所属するセグメントを含み連続して受信された一対のパ
ケットの受信時間間隔についてのメッセージ度数テーブル５３とを、パケットを受信する毎に更新し、パケットを受信する毎に閾値を更新している。
【０１４０】
その閾値は、セグメント度数テーブル５２の内容（第１の度数分布）に基づくグラフであるセグメント間隔ヒストグラムの最大階級値が、メッセージ度数テーブル５３の内容（第２の度数分布）に基づくグラフであるメッセージ間隔ヒストグラムの最小階級値よりも上回っている場合、図２０に示すように、セグメント間隔ヒストグラムの線グラフとメッセージ間隔ヒストグラムの線グラフとの交点の階級値軸の座標値を下回る中でこれに最も近い階級値（図１８では、0.07msec）となる。
【０１４１】
一方、セグメント間隔ヒストグラムの最大階級値が、メッセージ間隔ヒストグラムの最小階級値以下である場合、閾値は、図２１に示すように、セグメント間隔ヒストグラムの最大階級値とメッセージ間隔ヒストグラムの最小階級値との中間値（図１９では、0.04msec）となる。
【０１４２】
なお、通信アプリケーションが下位の通信レイヤにメッセージの送信を依頼した後、カーネル（オペレーティングシステム内のＴＣＰ／ＩＰスイート）ではなく、ハードウエアが、メッセージをセグメントに分割してパケットを生成する場合、そのセグメント分割及びパケット生成は、ワイヤースピード（理論的に最大の通信速度）程度にて行われるので、同一メッセージに所属するセグメントを含むパケットの送信間隔は、極端に短くなる。このため、セグメント間隔ヒストグラムの最大階級値がメッセージ間隔ヒストグラムの最小階級値以下になる場合（図１９参照）は、あり得る。
【０１４３】
前述した本実施形態に関し、更に、以下の付記を開示する。
【０１４４】
（付記１）
コンピュータを、
パケットを順次受信する受信手段、
前記受信手段がパケットを受信する毎に、その受信されたパケットと同一コネクションにおいてそのパケットとそのパケットの直前に受信されたパケットとの受信時間間隔を、取得する取得手段、及び、
前記取得手段が取得した受信時間間隔が所定の閾値を超えた場合に、前記受信手段が受信したパケットを、１つのメッセージを構成する複数のセグメントのうちの先頭のセグメントが含まれるパケットとして特定する特定手段
として機能させるためのパケット特定プログラム。
【０１４５】
（付記２）
前記コンピュータを、更に、
前記受信手段がパケットを受信する毎に、その受信されたパケットと同一のコネクションにおいてパケットロスが発生したか否かを判定する判定手段
として機能させ、
前記取得手段は、前記判定手段がパケットロスが発生したと判定すると、そのパケットロスが発生したコネクションに係るパケットを前記受信手段が受信する毎に、前記受信時間間隔を取得する
ことを特徴とする付記１記載のパケット特定プログラム。
【０１４６】
（付記３）
前記所定の閾値は、
同一のメッセージに所属するセグメントを含み連続して受信された一対のパケットの受信時間間隔についての第１の度数分布と、異なるメッセージに所属するセグメントを含み
連続して受信された一対のパケットの受信時間間隔についての第２の度数分布とに基づいて、決定されている
ことを特徴とする付記１又は２記載のパケット特定プログラム。
【０１４７】
（付記４）
前記所定の閾値は、
前記第１の度数分布の最大階級値が、前記第２の度数分布の最小階級値よりも大きい場合には、前記第１の度数分布の線グラフと前記第２の度数分布の線グラフとの交点に最も近い階級値である
ことを特徴とする付記３記載のパケット特定プログラム。
【０１４８】
（付記５）
前記所定の閾値は、
前記第１の度数分布の最大階級値が、前記第２の度数分布の最小階級値以下である場合には、その最大階級値と最小階級値との中間値である
ことを特徴とする付記３記載のパケット特定プログラム。
【０１４９】
（付記６）
前記受信手段は、監視対象の複数のコンピュータ間を流れるパケットの複製を行う中継機器から、複製されたパケットを順次受信する
ことを特徴とする付記１乃至５の何れかに記載のパケット特定プログラム。
【０１５０】
（付記７）
コンピュータが、
パケットを順次受信する受信手順、
前記受信手順でパケットを受信する毎に、その受信されたパケットと同一コネクションにおいてそのパケットとその直前に受信されたパケットとの受信時間間隔を、取得する取得手順、
前記取得手順で取得した受信時間間隔が所定の閾値を超えた場合に、前記受信手順で受信したパケットを、１つのメッセージを構成する複数のセグメントのうちの先頭のセグメントが含まれるパケットとして特定する特定手順
を実行する
ことを特徴とするパケット特定方法。
【０１５１】
（付記８）
前記コンピュータが、更に、
前記受信手順でパケットを受信する毎に、その受信されたパケットと同一のコネクションにおいてパケットロスが発生したか否かを判定する判定手順
を実行し、
前記判定手順でパケットロスが発生したと判定すると、前記取得手順においては、そのパケットロスが発生したコネクションに係るパケットを前記受信手順で受信する毎に、前記受信時間間隔を取得する
ことを特徴とする付記７記載のパケット特定方法。
【０１５２】
（付記９）
前記所定の閾値は、
同一のメッセージに所属するセグメントを含み連続して受信された一対のパケットの受信時間間隔についての第１の度数分布と、異なるメッセージに所属するセグメントを含み連続して受信された一対のパケットの受信時間間隔についての第２の度数分布とに基づいて、決定されている
ことを特徴とする付記７又は８記載のパケット特定方法。
【０１５３】
（付記１０）
前記所定の閾値は、
前記第１の度数分布の最大階級値が、前記第２の度数分布の最小階級値よりも大きい場合には、前記第１の度数分布の線グラフと前記第２の度数分布の線グラフとの交点に最も近い階級値である
ことを特徴とする付記９記載のパケット特定方法。
【０１５４】
（付記１１）
前記所定の閾値は、
前記第１の度数分布の最大階級値が、前記第２の度数分布の最小階級値以下である場合には、その最大階級値と最小階級値との中間値である
ことを特徴とする付記９記載のパケット特定方法。
【０１５５】
（付記１２）
前記コンピュータは、
前記受信手順においては、監視対象の複数のコンピュータ間を流れるパケットの複製を行う中継機器から、複製されたパケットを順次受信する
ことを特徴とする付記７乃至１１の何れかに記載のパケット特定方法。
【０１５６】
（付記１３）
パケットを順次受信する受信部、
前記受信部がパケットを受信する毎に、その受信されたパケットと同一コネクションにおいてそのパケットとその直前に受信されたパケットとの受信時間間隔を、取得する取得部、及び、
前記取得部が取得した受信時間間隔が所定の閾値を超えた場合に、前記受信部が受信したパケットを、１つのメッセージを構成する複数のセグメントのうちの先頭のセグメントが含まれるパケットとして特定する特定部
を備えることを特徴とするパケット特定装置。
【０１５７】
（付記１４）
前記受信部がパケットを受信する毎に、その受信されたパケットと同一のコネクションにおいてパケットロスが発生したか否かを判定する判定部
を更に備え、
前記取得部は、前記判定部がパケットロスが発生したと判定すると、そのパケットロスが発生したコネクションに係るパケットを前記受信部が受信する毎に、前記受信時間間隔を取得する
ことを特徴とする付記１３記載のパケット特定装置。
【０１５８】
（付記１５）
前記所定の閾値は、
同一のメッセージに所属するセグメントを含み連続して受信された一対のパケットの受信時間間隔についての第１の度数分布と、異なるメッセージに所属するセグメントを含み連続して受信された一対のパケットの受信時間間隔についての第２の度数分布とに基づいて、決定されている
ことを特徴とする付記１３又は１４記載のパケット特定装置。
【０１５９】
（付記１６）
前記所定の閾値は、
前記第１の度数分布の最大階級値が、前記第２の度数分布の最小階級値よりも大きい場合には、前記第１の度数分布の線グラフと前記第２の度数分布の線グラフとの交点に最も近い階級値である
ことを特徴とする付記１５記載のパケット特定装置。
【０１６０】
（付記１７）
前記所定の閾値は、
前記第１の度数分布の最大階級値が、前記第２の度数分布の最小階級値以下である場合には、その最大階級値と最小階級値との中間値である
ことを特徴とする付記１５記載のパケット特定装置。
【０１６１】
（付記１８）
前記受信部は、監視対象の複数のコンピュータ間を流れるパケットの複製を行う中継機器から、複製されたパケットを順次受信する
ことを特徴とする付記１３乃至１７の何れかに記載のパケット特定装置。
【図面の簡単な説明】
【０１６２】
【図１】本実施形態のコンピュータネットワークシステムの構成図
【図２】ＬＡＮスイッチの構成図
【図３】通信状態可視化装置の構成図
【図４】通信状態可視化部の構成図
【図５】一般的なメッセージの再組み立てについての説明図
【図６】一般的なメッセージの構成図
【図７】ＩＰヘッダフォーマットを示す図
【図８】ＴＣＰヘッダフォーマットを示す図
【図９】ＴＣＰコネクションのシーケンスの一例を示す図
【図１０】メッセージ再組立処理の流れを示す図
【図１１】ワークテーブルを模式的に示す図
【図１２】度数テーブルを模式的に示す図
【図１３】パケット受信サブルーチンの流れを示す図
【図１４】パケットロス判定サブルーチンの流れを示す図
【図１５】度数テーブル更新サブルーチンの流れを示す図
【図１６】閾値更新サブルーチンの流れを示す図
【図１７】閾値更新サブルーチンの流れを示す図
【図１８】メッセージ処理サブルーチンの流れを示す図
【図１９】先頭特定サブルーチンの流れを示す図
【図２０】セグメント間隔ヒストグラムとメッセージ間隔ヒストグラムの線グラフを示す図
【図２１】セグメント間隔ヒストグラムとメッセージ間隔ヒストグラムの線グラフを示す図
【符号の説明】
【０１６３】
３０    ＬＡＮスイッチ
３０ａ  通信ユニット
３１    通信ポート
３２    ポートミラーリング機能
３３    ミラーポート
４０    通信状態可視化装置
４０ｅ  通信ユニット
４０ｆ  ストレージユニット
４０ｇ  ＣＰＵ
４０ｈ  メインメモリユニット
４１    オペレーティングシステム
４１ａ  ドライバ
４２    通信状態可視化ソフトウエア
４２ａ  メッセージ再組立プログラム
４２ｂ  通信アプリケーション
５１    ワークテーブル
５２    度数テーブル
５３    度数テーブル
【図１】
2010081343.tif 000003
【図２】
2010081343.tif 000004
【図３】
2010081343.tif 000005
【図４】
2010081343.tif 000006
【図５】
2010081343.tif 000007
【図６】
2010081343.tif 000008
【図７】
2010081343.tif 000009
【図８】
2010081343.tif 000010
【図９】
2010081343.tif 000011
【図１０】
2010081343.tif 000012
【図１１】
2010081343.tif 000013
【図１２】
2010081343.tif 000014
【図１３】
2010081343.tif 000015
【図１４】
2010081343.tif 000016
【図１５】
2010081343.tif 000017
【図１６】
2010081343.tif 000018
【図１７】
2010081343.tif 000019
【図１８】
2010081343.tif 000020
【図１９】
2010081343.tif 000021
【図２０】
2010081343.tif 000022
【図２１】
2010081343.tif 000023