(57)【特許請求の範囲】
【請求項１】
自装置と他の通信装置との通信に利用する通信規約に規定されたヘッダ名と同一の文字列を記憶する第１記憶部と、
前記通信規約に規定されたヘッダ名を小文字若しくは大文字に変換した文字列を記憶する第２記憶部と、
過去に受信した信号から抽出したヘッダ名であって、前記通信規約に規定された文字列ではあるが前記同一の文字列とは異なる文字列を記憶する第３記憶部と、
前記他の通信装置から受信した受信信号に含まれるヘッダ名と同じ文字列が前記第１記憶部に記憶されているか否かを判定し、記憶されている場合に、当該ヘッダ名に対応するヘッダ値を受信信号から抽出する第１抽出部と、
前記第１抽出部によって前記第１記憶部に記憶されていないと判定されると、前記受信信号に含まれるヘッダ名と同じ文字列が前記第３記憶部に記憶されているか否かを判定し、記憶されている場合に、当該ヘッダ名に対応するヘッダ値を受信信号から抽出する第２抽出部と、
前記第２抽出部によって前記第３記憶部に記憶されていないと判定されると、前記受信信号に含まれるヘッダ名の文字列を大文字若しくは小文字に変換し、変換したヘッダ名の文字列と同じ文字列が前記第２記憶部に記憶されているか否かを判定し、記憶されている場合に、当該ヘッダ名に対応するヘッダ値を受信信号から抽出する第３抽出部と、
を有することを特徴とする情報処理装置。
【請求項２】
前記第３抽出部は、前記受信信号に含まれるヘッダ名の文字列を大文字若しくは小文字に変換し、変換したヘッダ名の文字列と同じ文字列が前記第２記憶部に記憶されていると判定した場合に、当該ヘッダ名を前記第３記憶部に格納することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記第３記憶部は、自装置との間で通信を行った通信装置ごとに、過去に受信した信号から抽出したヘッダ名であって、前記通信規約に規定された文字列ではあるが前記同一の文字列とは異なる文字列を記憶することを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記第３抽出部は、前記他の通信装置との通信が切断された場合に、前記第３記憶部を前記第１記憶部および前記第２記憶部とが記憶される領域とは異なる記憶領域に移動させることを特徴とする請求項１に記載の情報処理装置。
【請求項５】
自装置と他の通信装置との通信に利用する通信規約に規定されたヘッダ名と同一の文字列を記憶する第１記憶部と、
前記通信規約に規定されたヘッダ名を小文字若しくは大文字に変換した文字列を記憶する第２記憶部と、
過去に受信した信号から抽出したヘッダ名であって、前記通信規約に規定された文字列ではあるが前記同一の文字列とは異なる文字列を記憶する第３記憶部と、
前記他の通信装置から受信した受信信号に含まれるヘッダ名と同じ文字列が前記第１記憶部に記憶されているか否かを判定し、記憶されている場合に、当該ヘッダ名に対応するヘッダ値を受信信号から抽出する第１抽出ステップと、
前記第１抽出ステップによって前記第１記憶部に記憶されていないと判定されると、前記受信信号に含まれるヘッダ名と同じ文字列が前記第３記憶部に記憶されているか否かを判定し、記憶されている場合に、当該ヘッダ名に対応するヘッダ値を受信信号から抽出する第２抽出ステップと、
前記第２抽出ステップによって前記第３記憶部に記憶されていないと判定されると、前記受信信号に含まれるヘッダ名の文字列を大文字若しくは小文字に変換し、変換したヘッダ名の文字列と同じ文字列が前記第２記憶部に記憶されているか否かを判定し、記憶されている場合に、当該ヘッダ名に対応するヘッダ値を受信信号から抽出する第３抽出ステップと、
を有することを特徴とする情報処理方法。
【請求項６】
自装置と他の通信装置との通信に利用する通信規約に規定されたヘッダ名と同一の文字列を記憶する第１記憶部と、
前記通信規約に規定されたヘッダ名を小文字若しくは大文字に変換した文字列を記憶する第２記憶部と、
過去に受信した信号から抽出したヘッダ名であって、前記通信規約に規定された文字列ではあるが前記同一の文字列とは異なる文字列を記憶する第３記憶部と、
前記他の通信装置から受信した受信信号に含まれるヘッダ名と同じ文字列が前記第１記憶部に記憶されているか否かを判定し、記憶されている場合に、当該ヘッダ名に対応するヘッダ値を受信信号から抽出する第１抽出手順と、
前記第１抽出手順によって前記第１記憶部に記憶されていないと判定されると、前記受信信号に含まれるヘッダ名と同じ文字列が前記第３記憶部に記憶されているか否かを判定し、記憶されている場合に、当該ヘッダ名に対応するヘッダ値を受信信号から抽出する第２抽出手順と、
前記第２抽出手順によって前記第３記憶部に記憶されていないと判定されると、前記受信信号に含まれるヘッダ名の文字列を大文字若しくは小文字に変換し、変換したヘッダ名の文字列と同じ文字列が前記第２記憶部に記憶されているか否かを判定し、記憶されている場合に、当該ヘッダ名に対応するヘッダ値を受信信号から抽出する第３抽出手順と、
をコンピュータに実行させることを特徴とする情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法、情報処理プログラムに関する。
【背景技術】
【０００２】
従来、ＩＰ（Internet Protocol）ネットワーク上で端末間をＳＩＰ（Session Initiation Protocol）を利用して接続するＳＩＰサーバが利用される。また、ＳＩＰサーバには、接続が確立した後の端末間に対して、音声や動画通信などの処理を実行するアプリケーションが実装される。このようなＳＩＰサーバは、受信したＳＩＰ信号を解析した結果に基づいて呼制御する。また、ＳＩＰサーバ上のアプリケーションは、ＳＩＰサーバがＳＩＰ信号を解析した結果に基づいて処理を実行する。
【０００３】
ここで、図１６を用いてＳＩＰサーバが実行するＳＩＰ信号の解析処理の一例を説明する。図１６は、ＳＩＰサーバが受信するＳＩＰ信号の一例を示す図である。ＳＩＰ信号の解析処理は、ヘッダ名とヘッダ値とを有するヘッダから任意の値を抽出する処理である。ヘッダ名は、図１６に示す「Ｆｒｏｍ」、「Ｖｉａ」、「Ｍａｘ−Ｆｏｒｗａｒｄｓ」などであり、各ヘッダ名の「：」以降がヘッダ値である。
【０００４】
例えば、ＳＩＰサーバは、図１６に示すヘッダ名「Ｆｒｏｍ」に対応するヘッダ値として「"abc"  <sip:abc@sipas.fujitsu.com>;tag=1838-a7-2e-8f-cd361869」を抽出する。そして、ＳＩＰサーバは、抽出したヘッダ値「"abc"  <sip:abc@sipas.fujitsu.com>;tag=1838-a7-2e-8f-cd361869」をヘッダ名「Ｆｒｏｍ」と対応付けた解析結果オブジェクトを作成する。
【０００５】
ＳＩＰ信号の解析処理において、解析対象となるヘッダ名の文字列は、ＳＩＰ規約にしたがって大文字・小文字を区別して規定される。ところが、送信元端末は、規約に関係なく独自に生成した文字列をヘッダ名とするＳＩＰ信号を送信する。つまり、ＳＩＰサーバは、ＳＩＰ規約にしたがって規定されたヘッダ名の文字列とは大文字・小文字の区別が異なる文字列のヘッダ名を受信する場合がある。
【０００６】
例えば、ＳＩＰ規約にしたがって規定されたヘッダ名の文字列が「Ｆｒｏｍ」であるにもかかわらず、ＳＩＰサーバは、ヘッダ名の文字列が「ｆｒｏＭ」であるＳＩＰ信号を受信する場合がある。かかる場合、ＳＩＰサーバは、「ｆｒｏＭ」が「Ｆｒｏｍ」に該当すると判定するのに複雑な処理が必要である。具体的に例を挙げると、ＳＩＰサーバは、規定された文字列「Ｆｒｏｍ」として認識可能な全ての文字列の組み合わせに関する情報を記憶し、記憶した情報の中から「ｆｒｏＭ」を検索する必要がある。
【０００７】
このようにＳＩＰ信号の解析処理が複雑化するのを防止する手法として、ＳＩＰサーバは、受信したＳＩＰ信号に含まれるヘッダ名を強制的に大文字又は小文字に変換する手法が知られている。
【０００８】
ここで、図１７を用いてＳＩＰ信号に含まれるヘッダ名を強制的に大文字又は小文字に変換する手法を説明する。図１７は、ＳＩＰ信号に含まれるヘッダ名を強制的に小文字に変換する手法の一例を示す図である。図１７に示すように、例えば、ＳＩＰサーバは、ヘッダ名が「ｆｒｏＭ」であるＳＩＰ信号を受信した場合、ヘッダ名の文字列を小文字の「ｆｒｏｍ」に変換する。また、ＳＩＰサーバは、規定のヘッダ名の文字列「Ｆｒｏｍ」を小文字の「ｆｒｏｍ」に変換する。ＳＩＰサーバは、「ｆｒｏＭ」を小文字に変換した「ｆｒｏｍ」と一致するヘッダ名を検索する。そして、規定のヘッダ名の文字列「Ｆｒｏｍ」を小文字に変換した「ｆｒｏｍ」と一致すると判定する。すなわち、ＳＩＰサーバは、受信したヘッダ名の「ｆｒｏＭ」が「Ｆｒｏｍ」に該当すると判定する。そして、ＳＩＰサーバは、ＳＩＰ信号のヘッダ名「ｆｒｏＭ」から抽出したヘッダ値「"abc"  <sip:abc@sipas.fujitsu.com>;tag=1838-a7-2e-8f-cd361869」と小文字に変換したヘッダ名「ｆｒｏｍ」とを対応付けた解析結果オブジェクトを作成する。ＳＩＰ信号に含まれるヘッダ名を強制的に大文字に変換する手法も上記と同様である。
【０００９】
同様に、ＳＩＰサーバは、ヘッダ名に対応するヘッダ値の取得をＳＩＰサーバ上に存在するアプリケーションから要求された場合には、ヘッダ名を強制的に大文字又は小文字に変換することによって処理が複雑化するのを防止する。図１７に示すように、例えば、ＳＩＰサーバは、ヘッダ名「ＦＲＯＭ」に対応するヘッダ値の取得をアプリケーションから要求された場合、「ＦＲＯＭ」の文字列を「ｆｒｏｍ」に変換する。そして、ＳＩＰサーバは、「ＦＲＯＭ」の文字列を小文字に変換した「ｆｒｏｍ」と一致するヘッダ名を解析結果オブジェクトから検索する。そして、ＳＩＰサーバは、解析結果オブジェクトから「ｆｒｏｍ」に対応するヘッダ値「"abc"  <sip:abc@sipas.fujitsu.com>;tag=1838-a7-2e-8f-cd361869」を抽出し、アプリケーションへ通知する。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００３−２３４７５０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかしながら、上述した従来の技術では、受信信号の解析処理を効率的に実行することができないという課題があった。
【００１２】
具体的には、ＳＩＰサーバが受信するＳＩＰ信号は、多数のヘッダ名とヘッダ値とのペアを有するので、ＳＩＰサーバは、信号を受信する度に、多数のヘッダ名の文字列を大文字又は小文字に変換しなければならない。また、ＳＩＰサーバは、特定の端末から繰り返し信号を受信する場合、一度変換した文字列のヘッダ名と同じ信号を受信することになる。すなわち、ＳＩＰサーバは、信号を受信する度に、一度変換した文字列のヘッダ名を再度変換しなければならない。
【００１３】
また、ＳＩＰサーバは、例えば、端末間の接続を要求する要求信号を接続元端末から受信し、受信した要求信号を接続先端末へ転送する。そして、ＳＩＰサーバは、接続先端末から要求に対する応答信号を受信し、受信した応答信号を接続元端末へ転送する。このとき、ＳＩＰサーバは、要求信号のヘッダをコピーして生成された応答信号を受信する場合が多い。この結果、ＳＩＰサーバは、応答信号を受信する場合にも、要求信号の解析で変換した文字列のヘッダ名と同じ文字列の信号を受信する場合がある。すなわち、ＳＩＰサーバは、応答信号を受信する度に、一度変換した文字列のヘッダ名を変換しなければならない。
【００１４】
また、ＳＩＰサーバは、ＳＩＰサーバ上に存在するアプリケーションからヘッダ名に対応するヘッダ値の取得を依頼されると、ヘッダ名の文字列を変換し、対応するヘッダ値を検索する。そして、ＳＩＰサーバは、アプリケーションから通常複数回に及びヘッダ値の取得を依頼される場合があり、以前変換した文字列のヘッダ名であっても、ヘッダ値の取得を依頼される度にヘッダ名の文字列を変換しなければならない。したがって、ＳＩＰサーバは、ＳＩＰ信号の解析処理を効率的に実行できない。
【００１５】
開示の技術は、上記に鑑みてなされたものであって、受信信号の解析処理を効率的に実行することが可能である情報処理装置、情報処理方法、情報処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１６】
本願の開示する情報処理装置の第１記憶部は、自装置と他の通信装置との通信に利用する通信規約に規定されたヘッダ名と同一の文字列を記憶する。第２記憶部は、通信規約に規定されたヘッダ名を小文字若しくは大文字に変換した文字列を記憶する。第３記憶部は、過去に受信した信号から抽出したヘッダ名であって、通信規約に規定された文字列ではあるが同一の文字列とは異なる文字列を記憶する。情報処理装置は、他の通信装置から受信した受信信号に含まれるヘッダ名と同じ文字列が第１記憶部に記憶されているか否かを判定する。他の通信装置から受信した受信信号に含まれるヘッダ名と同じ文字列が第１記憶部に記憶されている場合に、情報処理装置は当該ヘッダ名に対応するヘッダ値を受信信号から抽出する。他の通信装置から受信した受信信号に含まれるヘッダ名と同じ文字列が第１記憶部に記憶されていないと判定されると、受信信号に含まれるヘッダ名と同じ文字列が第３記憶部に記憶されているか否かを判定する。他の通信装置から受信した受信信号に含まれるヘッダ名と同じ文字列が第３記憶部に記憶されている場合に、情報処理装置は当該ヘッダ名に対応するヘッダ値を受信信号から抽出する。他の通信装置から受信した受信信号に含まれるヘッダ名と同じ文字列が第３記憶部に記憶されていないと判定されると、情報処理装置は受信信号に含まれるヘッダ名の文字列を大文字若しくは小文字に変換し、変換したヘッダ名の文字列と同じ文字列が第２記憶部に記憶されているか否かを判定する。変換したヘッダ名の文字列と同じ文字列が第２記憶部に記憶されている場合に、情報処理装置は当該ヘッダ名に対応するヘッダ値を受信信号から抽出する。
【発明の効果】
【００１７】
本願の開示する情報処理装置、情報処理方法、情報処理プログラムの一つの態様によれば、受信信号の解析処理を効率的に実行することができるという効果を奏する。
【図面の簡単な説明】
【００１８】
【図１】図１は、実施例１に係るＳＩＰサーバのネットワーク構成を示す図である。
【図２】図２は、実施例１に係るＳＩＰサーバの構成を示すブロック図である。
【図３】図３は、信号受信部が受信するＳＩＰ信号の一例を示す図である。
【図４】図４は、第１のテーブルが記憶する情報の一例を示す図である。
【図５】図５は、第２のテーブルが記憶する情報の一例を示す図である。
【図６】図６は、第３のテーブルが記憶する情報の一例を示す図である。
【図７】図７は、ヘッダ管理テーブルが記憶する解析結果オブジェクトの一例を示す図である。
【図８】図８は、トランザクション管理テーブルが記憶する情報の一例を示す図である。
【図９】図９は、ダイアログ管理テーブルが記憶する情報の一例を示す図である。
【図１０】図１０は、信号解析部が解析するＳＩＰ信号の一例を示す図である。
【図１１】図１１は、信号解析部が第３のテーブルへ格納する情報の一例を示す図である。
【図１２】図１２は、信号解析部が作成する解析結果オブジェクトの一例を示す図である。
【図１３】図１３は、ＳＩＰ信号を受信した場合の信号解析部によるＳＩＰ信号解析処理の処理手順を示すフローチャートである。
【図１４】図１４は、アプリケーション実行部から指定されたヘッダ名に対応するヘッダ値の取得を要求された場合の信号解析部によるヘッダ値取得処理の処理手順を示すフローチャートである。
【図１５】図１５は、信号解析プログラムを実行するコンピュータシステムを示す図である。
【図１６】図１６は、ＳＩＰサーバが受信するＳＩＰ信号の一例を示す図である。
【図１７】図１７は、ＳＩＰ信号に含まれるヘッダ名を強制的に大文字又は小文字に変換する手法の一例を示す図である。
【発明を実施するための形態】
【００１９】
以下に、本願の開示する情報処理装置、情報処理方法、情報処理プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例１】
【００２０】
[ＳＩＰサーバのネットワーク構成]
図１は、実施例１に係るＳＩＰサーバ１００のネットワーク構成を示す図である。図１に示すように、実施例１に係るＳＩＰサーバ１００は、クライアント端末２００とクライアント端末３００とをＳＩＰ網４００を介して接続する。
【００２１】
[ＳＩＰサーバの構成]
図２を用いて実施例１に係るＳＩＰサーバ１００の構成を説明する。図２は、実施例１に係るＳＩＰサーバの構成を示すブロック図である。図２に示すように、実施例１に係るＳＩＰサーバ１００は、信号受信部１１０と信号送信部１２０とタイマ管理部１３０と記憶部１４０と制御部１５０とを有する。
【００２２】
信号受信部１１０は、クライアント端末２００及び３００からＳＩＰ信号を受信し、受信したＳＩＰ信号を信号解析部１５１へ転送する制御部である。ここで、信号受信部１１０が受信する信号の一例を説明する。図３は、信号受信部１１０が受信するＳＩＰ信号の一例を示す図である。図３に示すように、信号受信部１１０が受信するＳＩＰ信号は、リクエストライン３００１とヘッダ３００２とを有する。
【００２３】
リクエストライン３００１は、受信した信号の種別を示し、例えば、図３に示す受信信号の場合は、ＳＩＰサーバ１００へのＩＰアドレス登録を申請する信号であることを示す「ＲＥＧＩＳＴＥＲ」である。また、ヘッダ３００２は、ヘッダ名とヘッダ値とを有し、信号が要求する内容の実行に必要な機能を指定する。例えば、図３に示す受信信号の場合は、ヘッダ名として「Ｆｒｏｍ」と「Ｖｉａ」と「Ｍａｘ−Ｆｏｒｗａｒｄｓ」と「Ｔｏ」と「ＣＳｅｑ」と「Ｃａｌｌ−Ｉｄ」と「Ｃｏｎｔｅｎｔ−Ｌｅｎｇｔｈ」と「Ｃｏｎｔａｃｔ」とを有する。
【００２４】
ヘッダ名「Ｆｒｏｍ」は、リクエストの生成元の論理的なアドレスを示す。また、ヘッダ名「Ｖｉａ」は、リクエストの生成元が応答の受信を望むアドレスに関する情報を示し、これを参照することで、リクエスト生成元にレスポンスを返信することができる。また、ヘッダ名「Ｍａｘ−Ｆｏｒｗａｒｄｓ」は、ホップ数の上限に関する情報を示す。また、ヘッダ名「Ｔｏ」は、リクエストの論理的な宛先を示す。また、ヘッダ名「ＣＳｅｑ」は、新しいトランザクションと、再送を区別するためのインクリメント値に関する情報を示す。また、ヘッダ名「Ｃａｌｌ−Ｉｄ」は、「呼」を識別する固有のＩＤに関する情報を示す。また、ヘッダ名「Ｃｏｎｔｅｎｔ−Ｌｅｎｇｔｈ」は、ヘッダのボディの長さに関する情報を示す。また、ヘッダ名「Ｃｏｎｔａｃｔ」は、リクエストを次にどこへ送信するかを示す。
【００２５】
例えば、図３の場合、ヘッダ名「Ｆｒｏｍ」に対応するヘッダ値は「"abc" <sip:abc@sipas.fujitsu.com>;tag=1838-a7-2e-8f-cd361869」である。また、ヘッダ名「Ｖｉａ」に対応するヘッダ値は、「SIP/2.0/UDP 123.456.789.012:35070;branch=z9hG4bK-07d902120e270600f0-16」である。また、ヘッダ名「Ｍａｘ−Ｆｏｒｗａｒｄｓ」に対応するヘッダ値は「70」である。ヘッダ名「Ｔｏ」に対応するヘッダ値は「<sip:abc@sipas.fujitsu.com>」である。また、ヘッダ名「ＣＳｅｑ」に対応するヘッダ値は「16  REGISTER」である。また、ヘッダ名「Ｃａｌｌ−Ｉｄ」に対応するヘッダ値は「07d902120e270600f0@123.456.789.012」である。また、ヘッダ名「Ｃｏｎｔｅｎｔ−Ｌｅｎｇｔｈ」に対応するヘッダ値は「0」である。また、ヘッダ名「Ｃｏｎｔａｃｔ」に対応するヘッダ値は「<sip:abc@123.456.789.012:35070>」である。
【００２６】
信号送信部１２０は、クライアント端末２００又は３００へＳＩＰ信号を送信する制御部である。例えば、信号送信部１２０は、後述する信号生成部１５５が生成したＳＩＰ信号を受信すると、受信したＳＩＰ信号のヘッダから送信先を特定し、特定した送信先へＳＩＰ信号を送信する。
【００２７】
タイマ管理部１３０は、ＳＩＰサーバにおける各種タイマを監視し、必要な処理を行う制御部である。例えば、タイマ管理部１３０は、信号を受信した時間を記録し、トランザクション管理部１５２に通知する。また、タイマ管理部１３０は、端末間の接続時間を計測し、計測した接続時間をダイアログ管理部１５３に通知する。
【００２８】
記憶部１４０は、第１のテーブル１４０ａと第２のテーブル１４０ｂと第３のテーブル１４０ｃとヘッダ管理テーブル１４０ｄとトランザクション管理テーブル１４０ｅとダイアログ管理テーブル１４０ｆとを有する。例えば、記憶部１４０は、半導体メモリ素子、又はハードディスクなどの記憶装置である。
【００２９】
第１のテーブル１４０ａは、自装置と他の通信装置との通信に利用する通信規約に規定されたヘッダ名と同一の文字列を記憶する。言い換えると、第１のテーブル１４０ａは、ＳＩＰ規約で規定された文字列のヘッダ名を記憶する。例えば、第１のテーブル１４０ａは、図４に示すように、「キー、規定ヘッダ名」として「Ｆｒｏｍ、Ｆｒｏｍ」、「Ｖｉａ、Ｖｉａ」、「Ｍａｘ−Ｆｏｒｗａｒｄｓ、Ｍａｘ−Ｆｏｒｗａｒｄｓ」、「Ｔｏ、Ｔｏ」、「ＣＳｅｑ、ＣＳｅｑ」を記憶する。また、第１のテーブル１４０ａは、「キー、規定ヘッダ名」として「Ｃａｌｌ−Ｉｄ、Ｃａｌｌ−Ｉｄ」、「Ｃｏｎｔｅｎｔ−Ｌｅｎｇｔｈ、Ｃｏｎｔｅｎｔ−Ｌｅｎｇｔｈ」、「Ｃｏｎｔａｃｔ、Ｃｏｎｔａｃｔ」を記憶する。
【００３０】
ここで、「キー」には、ＳＩＰ規約に規定されている文字列のヘッダ名が格納され、「規定ヘッダ名」には、ＳＩＰ規約に規定されている文字列のヘッダ名が格納される。つまり、第１のテーブル１４０ａは、ＳＩＰ規約で規定された文字列のヘッダ名を記憶する。なお、図４は、第１のテーブル１４０ａが記憶する情報の一例を示す図である。また、第１のテーブル１４０ａは、サーバ起動時に生成された以降、サーバ稼働中は同一の内容を記憶する。第１のテーブル１４０ａは、ＳＩＰサーバ１００内に一つ存在する。
【００３１】
第２のテーブル１４０ｂは、前記通信規約に規定されたヘッダ名を小文字若しくは大文字に変換した文字列を記憶する。言い換えると、第２のテーブル１４０ｂは、ＳＩＰ規約で規定された文字列を小文字に変換したヘッダ名を記憶する。例えば、第２のテーブル１４０ｂは、図５に示すように、「キー、規定ヘッダ名」として「ｆｒｏｍ、Ｆｒｏｍ」、「ｖｉａ、Ｖｉａ」、「ｍａｘ−ｆｏｗａｒｄｓ、Ｍａｘ−Ｆｏｒｗａｒｄｓ」、「ｔｏ、Ｔｏ」、「ｃｓｅｑ、ＣＳｅｑ」を記憶する。また、第２のテーブル１４０ｂは、「キー、規定ヘッダ名」として「ｃａｌｌ−ｉｄ、Ｃａｌｌ−Ｉｄ」、「ｃｏｎｔｅｎｔ−ｌｅｎｇｔｈ、Ｃｏｎｔｅｎｔ−Ｌｅｎｇｔｈ」、「ｃｏｎｔａｃｔ、Ｃｏｎｔａｃｔ」を記憶する。
【００３２】
ここで、「キー」には、ＳＩＰ規約に規定されている文字列のヘッダ名が小文字に変換して格納され、「規定ヘッダ名」には、ＳＩＰ規約に規定されている文字列のヘッダ名が格納される。つまり、第２のテーブル１４０ｂは、ＳＩＰ規約で規定された文字列を小文字に変換したヘッダ名を記憶する。なお、図５は、第２のテーブル１４０ｂが記憶する情報の一例を示す図である。また、第２のテーブル１４０ｂは、サーバ起動時に生成された以降、サーバ稼働中は同一の内容を記憶する。第２のテーブル１４０ｂは、ＳＩＰサーバ１００内に一つ存在する。
【００３３】
第３のテーブル１４０ｃは、自装置との間で通信を行った通信装置ごとに、過去に受信した信号から抽出したヘッダ名であって、通信規約に規定された文字列ではあるが同一の文字列とは異なる文字列を記憶する。言い換えると、第３のテーブル１４０ｃは、ＳＩＰ規約に規定されている形とは異なる形で信号に現れたヘッダ名を記憶する。例えば、第３のテーブル１４０ｃは、第１のテーブル及び第２のテーブルの「キー」に該当しない文字列のヘッダ名を「規定ヘッダ名」と対応付けて記憶する。第３のテーブル１４０ｃは、ＳＩＰ規約で規定された文字列ではなく、文字列を小文字に変換すると第２のテーブルの「キー」と同一となる文字列のヘッダ名を記憶する。例えば、第３のテーブル１４０ｃは、図６に示すように、「キー、規定ヘッダ名」として「ＶｉＡ、Ｖｉａ」を記憶する。ここで、第３のテーブル１４０ｃの「キー」には、受信したＳＩＰ信号に用いられた文字列のヘッダ名が格納され、「規定ヘッダ名」には、ＳＩＰ規約に規定されている文字列のヘッダ名が格納される。なお、図６は、第３のテーブル１４０ｃが記憶する情報の一例を示す図である。また、第３のテーブル１４０ｃは、初期状態においては空である。また、第３のテーブル１４０ｃは、送信元端末ごとに生成される。
【００３４】
また、第３のテーブル１４０ｃは、関連する通信終了時などの適当な時点で、後述する第２の信号解析部１５１ｂによって、二次記憶装置に退避され、退避された情報を再利用可能な状態にしてもよい。例えば、二次記憶装置は、ＳＩＰサーバ１００に挿入される、例えば、フレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＭＯディスク、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」であってもよい。
【００３５】
ヘッダ管理テーブル１４０ｄは、解析結果オブジェクトを記憶する。例えば、ヘッダ管理テーブル１４０ｄは、図７に示すように、「ヘッダ名」と「ヘッダ値」とを対応付けて記憶する。具体的には、ヘッダ名「Ｆｒｏｍ」に対応するヘッダ値は、「"abc" <sip:abc@sipas.fujitsu.com>;tag=1838-a7-2e-8f-cd361869」である。また、ヘッダ名「Ｖｉａ」に対応するヘッダ値は、「SIP/2.0/UDP 123.456.789.012:35070;branch=z9hG4bK-07d902120e270600f0-16」である。また、ヘッダ名「Ｍａｘ−Ｆｏｒｗａｒｄｓ」に対応するヘッダ値は、「70」である。なお、図７は、ヘッダ管理テーブル１４０ｄが記憶する解析結果オブジェクトの一例を示す図である。
【００３６】
トランザクション管理テーブル１４０ｅは、トランザクション管理部１５２によって作成されたＳＩＰトランザクション処理の状態情報を記憶する。例えば、トランザクション管理テーブル１４０ｅは、図８に示すように、「トランザクションＩＤ」と「トランザクションタイプ」と「セッション開始時間」と「状態」とを関連付けて記憶する。なお、図８は、トランザクション管理テーブル１４０ｅが記憶する情報の一例を示す図である。
【００３７】
ここで記憶される「トランザクションＩＤ」には、トランザクションを一意に識別する識別子が格納される。また、「トランザクションタイプ」には、受信した要求信号の種類として、例えば、セッションの確立を要求する信号である「ＩＮＶＩＴＥ」やＩＰアドレスの登録を要求する信号である「ＲＥＧＩＳＴＥＲ」が格納される。また、「セッション開始時間」には、要求信号を最初に受信した時間が格納される。また、「状態」には、例えば、セッションが終了した場合には「終了」、セッションが進行中の場合には「暫定応答」や「成功応答」など送受信した最新の信号の種類を示す情報が格納される。
【００３８】
図８に示したように「トランザクションＩＤ」が「０００１」であるトランザクションは、２０１０年３月３日１４時５０分０３秒に「ＩＮＶＩＴＥ」信号を受信し、現在、セッションが終了したことを示す。また、「トランザクションＩＤ」が「０００２」であるトランザクションは、２０１０年３月３日１４時５２分０１秒に「ＲＥＧＩＳＴＥＲ」信号を受信し、セッションが終了したことを示す。また、「トランザクションＩＤ」が「０００３」であるトランザクションは、２０１０年３月３日１４時５２分４５秒に「ＩＮＶＩＴＥ」信号を受信し、暫定応答が送信されたことを示す。
【００３９】
ダイアログ管理テーブル１４０ｆは、ダイアログ管理部１５３によって作成されたダイアログに関する情報を記憶する。例えば、ダイアログ管理テーブル１４０ｆは、図９に示すように、「ダイアログＩＤ」と「「Ｃａｌｌ−Ｉｄ」と「Ｆｒｏｍ」と「Ｔｏ」と「通話情報」とを関連付けて記憶する。なお、図９は、ダイアログ管理テーブル１４０ｆが記憶する情報の一例を示す図である。また、ダイアログ管理テーブル１４０ｆは、一般的には、ダイアログごとに個別に生成される。
【００４０】
図９に示すように、「ダイアログＩＤ」には、ダイアログを一意に識別する識別子が格納され「Ｃａｌｌ−Ｉｄ」には「呼」を識別する固有のＩＤに関する情報が格納される。また、「Ｆｒｏｍ」にはダイアログにおける接続元アドレスが格納され、「Ｔｏ」にはダイアログにおける接続先アドレスが格納され、「通話情報」には通話の開始時刻及び通話の終了時刻を示す情報が格納される。
【００４１】
例えば、「ダイアログＩＤ」が「ａａａａａ」であるダイアログは、「Ｃａｌｌ−Ｉｄ」が「ａ−１１１１１」で識別される「００１０００１」と「００２０００１」との接続を示す。そして、この通話は、２０１０年３月３日１４時５０分１７秒から開始し、２０１０年３月３日１４時５５分２３秒に終了したことを示す。また、「ダイアログＩＤ」が「ｂｂｂｂｂ」であるダイアログは、「Ｃａｌｌ−Ｉｄ」が「ｂ−１１１１１」で識別される「００１００１０」と「００２００１０」との接続を示す。そして、この通話は、２０１０年３月３日１４時５８分０３秒から通話が開始し、現在通話中であることを示す。
【００４２】
制御部１５０は、制御プログラム、各種の処理手順などを規定したプログラムおよび所要データを格納するための内部メモリを有する。制御部１５０は、信号解析部１５１とトランザクション管理部１５２とダイアログ管理部１５３とアプリケーション実行部１５４と信号生成部１５５とを有する。例えば、制御部１５０は、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）などの集積回路、又は、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）などの電子回路である。
【００４３】
信号解析部１５１は、信号を解析して解析結果オブジェクトを生成する制御部であり、第１の信号解析部１５１ａと、第２の信号解析部１５１ｂと、第３の信号解析部１５１ｃとを有する。また、信号解析部１５１は、アプリケーション実行部１５４から指定されたヘッダ名に対して、解析結果オブジェクトから対応するヘッダ値を抽出し、抽出したヘッダ値をアプリケーション実行部１５４へ送信する。
【００４４】
第１の信号解析部１５１ａは、他の通信装置から受信した受信信号に含まれるヘッダ名と同じ文字列が第１のテーブル１４０ａに記憶されているか否かを判定し、記憶されている場合に、当該ヘッダ名に対応するヘッダ値を受信信号から抽出する。言い換えると、第１の信号解析部１５１ａは、信号受信部１１０によって受信されたＳＩＰ信号からヘッダ名を抽出し、抽出したヘッダ名が第１のテーブル１４０ａに存在するか否かを判定する制御部である。例えば、第１の信号解析部１５１ａは、抽出したヘッダ名が第１のテーブル１４０ａに存在すると判定した場合に、当該抽出したヘッダ名から対応するヘッダ値を抽出して解析結果オブジェクトを作成する。また、第１の信号解析部１５１ａは、抽出したヘッダ名が第１のテーブル１４０ａに存在しないと判定した場合には、受信したＳＩＰ信号を第２の信号解析部１５１ｂに転送する。
【００４５】
具体的な例を挙げて説明すると、信号受信部１１０によって図１０に示したＳＩＰ信号が受信された場合、第１の信号解析部１５１ａは、ヘッダ名「Ｆｒｏｍ」を抽出する。第１の信号解析部１５１ａは、図４に示した第１のテーブル１４０ａの「キー」の項目を検索し、抽出したヘッダ名「Ｆｒｏｍ」と同じ文字列のヘッダ名が存在するか否かを判定する。そして、第１の信号解析部１５１ａは、第１のテーブル１４０ａの「キー」の項目「Ｆｒｏｍ」と抽出したヘッダ名「Ｆｒｏｍ」とが同一の文字列であると判定する。なお、図１０は、信号解析部１５１が解析するＳＩＰ信号の一例を示す図である。
【００４６】
続いて、第１の信号解析部１５１ａは、第１のテーブル１４０ａの「Ｆｒｏｍ」の項目「Ｆｒｏｍ」に対応する「規定ヘッダ名」の項目から規定のヘッダ名「Ｆｒｏｍ」を抽出する。続いて、第１の信号解析部１５１ａは、受信信号から、抽出ヘッダ名「Ｆｒｏｍ」に対応するヘッダ値「"abc" <sip:abc@sipas.fujitsu.com>;tag=1838-a7-2e-8f-cd361869」を抽出する。そして、第１の信号解析部１５１ａは、規定ヘッダ名「Ｆｒｏｍ」とヘッダ値「"abc" <sip:abc@sipas.fujitsu.com>;tag=1838-a7-2e-8f-cd361869」とを対応付けて解析結果オブジェクトへ格納する。
【００４７】
続いて、第１の信号解析部１５１ａは、受信したＳＩＰ信号からヘッダ名「ＶｉＡ」を抽出する。そして、第１の信号解析部１５１ａは、第１のテーブル１４０ａの「キー」の項目を検索し、抽出したヘッダ名「ＶｉＡ」と同じ文字列のヘッダ名が第１のテーブル１４０ａの「キー」の項目には存在しないと判定する。
【００４８】
同様に、第１の信号解析部１５１ａは、￥「Ｍａｘ−Ｆｏｒｗａｒｄｓ」と「Ｔｏ」と「ＣＳｅｑ」のそれぞれが第１のテーブル１４０ａに存在すると判定する。この結果、第１の信号解析部１５１ａは、規定ヘッダ名「Ｍａｘ−Ｆｏｒｗａｒｄｓ」とヘッダ値「７０」とを対応付けて解析結果オブジェクトへ格納する。また、第１の信号解析部１５１ａは、規定ヘッダ名「Ｔｏ」とヘッダ値「<sip:abc@sipas.fujitsu.com>」とを対応付けて解析結果オブジェクトへ格納する。また、第１の信号解析部１５１ａは、規定ヘッダ名「ＣＳｅｑ」とヘッダ値「16  REGISTER」とを対応付けて解析結果オブジェクトへ格納する。
【００４９】
また、同様に、第１の信号解析部１５１ａは、「Ｃａｌｌ−ＩＤＮｏ」が第１のテーブル１４０ａに存在しないと判定する。また、同様に、第１の信号解析部１５１ａは、「Ｃｏｎｔｅｎｔ−Ｌｅｎｇｔｈ」が第１のテーブル１４０ａに存在すると判定する。この結果、第１の信号解析部１５１ａは、規定ヘッダ名「Ｃｏｎｔｅｎｔ−Ｌｅｎｇｔｈ」とヘッダ値「０」とを対応付けて解析結果オブジェクトへ格納する。
【００５０】
また、同様に、第１の信号解析部１５１ａは、「ｃｏｎＴａｃｔ」が第１のテーブル１４０ａに存在しないと判定する。第１の信号解析部１５１ａは、受信したＳＩＰ信号を第２の信号解析部１５１ｂへ転送する。
【００５１】
つまり、第１の信号解析部１５１ａは、「Ｆｒｏｍ」と「Ｍａｘ−Ｆｏｒｗａｒｄｓ」と「Ｔｏ」と「ＣＳｅｑ」と「Ｃｏｎｔｅｎｔ−Ｌｅｎｇｔｈ」とが第１のテーブル１４０ａに存在すると判定する。この結果、第１の信号解析部１５１ａは、「Ｆｒｏｍ」と「Ｍａｘ−Ｆｏｒｗａｒｄｓ」と「Ｔｏ」と「ＣＳｅｑ」と「Ｃｏｎｔｅｎｔ−Ｌｅｎｇｔｈ」の解析結果オブジェクトを作成する。また、第１の信号解析部１５１ａは、受信したＳＩＰ信号を第２の信号解析部１５１ｂへ転送する。
【００５２】
また、第１の信号解析部１５１ａは、アプリケーション実行部１５４からヘッダ名を指定された場合には、指定されたヘッダ名が第１のテーブル１４０ａに存在するか否かを判定する制御部である。例えば、第１の信号解析部１５１ａは、指定されたヘッダ名が第１のテーブル１４０ａに存在すると判定した場合に、当該指定されたヘッダ名に対応するヘッダ値を解析結果オブジェクトから抽出し、抽出したヘッダ値をアプリケーション実行部１５４に送信する。また、第１の信号解析部１５１ａは、指定されたヘッダ名が第１のテーブル１４０ａに存在しないと判定した場合には、当該指定されたヘッダ名を第２の信号解析部１５１ｂに転送する。
【００５３】
第２の信号解析部１５１ｂは、第１の信号解析部１５１ａによって第１のテーブル１４０ａに記憶されていないと判定されると、受信信号に含まれるヘッダ名と同じ文字列が第３のテーブル１４０ｃに記憶されているか否かを判定する。記憶されている場合に、第２の信号解析部１５１ｂは、当該ヘッダ名に対応するヘッダ値を受信信号から抽出する。言い換えると、第２の信号解析部１５１ｂは、受信したＳＩＰ信号から抽出したヘッダ名が第３のテーブル１４０ｃに存在するか否かを判定する制御部である。例えば、第２の信号解析部１５１ｂは、抽出したヘッダ名が第３のテーブル１４０ｃに存在すると判定した場合に、当該抽出したヘッダ名から対応するヘッダ値を抽出して解析結果オブジェクトを作成する。また、第２の信号解析部１５１ｂは、抽出したヘッダ名が第３のテーブル１４０ｃに存在しないと判定した場合には、受信信号を第３の信号解析部１５１ｃに転送する。なお、第２の信号解析部１５１ｂは、解析結果オブジェクトを検索することでヘッダ名の解析が終了したか否かを判定することができる。したがって、第２の信号解析部１５１ｂは、解析が終了していないヘッダ名を抽出し、抽出したヘッダ名を解析することができる。
【００５４】
具体的には、第２の信号解析部１５１ｂは、解析結果オブジェクトを検索し、第１のテーブル１４０ａに記憶されていないと判定されたヘッダ名「ＶｉＡ」と「Ｃａｌｌ−ＩＤＮｏ」と「ｃｏｎＴａｃｔ」とを受信したＳＩＰ信号から抽出する。第２の信号解析部１５１ｂは、信号を受信した場合、送信元に該当する第３のテーブル１４０ｃが存在するか否かを判定する。
【００５５】
例えば、第２の信号解析部１５１ｂは、送信元に該当する第３のテーブル１４０ｃが存在すると判定した場合には、図６に示した第３のテーブル１４０ｃの「キー」の項目を検索し、抽出したヘッダ名「ＶｉＡ」と同じ文字列のヘッダ名が存在するか否かを判定する。そして、第２の信号解析部１５１ｂは、第３のテーブル１４０ｃの「キー」の項目「ＶｉＡ」と抽出したヘッダ名「ＶｉＡ」とが同一の文字列であると判定する。
【００５６】
続いて、第２の信号解析部１５１ｂは、第３のテーブル１４０ｃの「キー」の項目「ＶｉＡ」に対応する「規定ヘッダ名」の項目から規定のヘッダ名「Ｖｉａ」を抽出する。続いて、第２の信号解析部１５１ｂは、受信信号から、抽出ヘッダ名「ＶｉＡ」に対応するヘッダ値「SIP/2.0/UDP 123.456.789.012:35070;branch=z9hG4bK-07d902120e270600f0-16」を抽出する。そして、第２の信号解析部１５１ｂは、規定ヘッダ名「Ｖｉａ」とヘッダ値「SIP/2.0/UDP 123.456.789.012:35070;branch=z9hG4bK-07d902120e270600f0-16」とを対応付けて解析結果オブジェクトへ格納する。
【００５７】
また、第２の信号解析部１５１ｂは、第３のテーブル１４０ｃの「キー」の項目を検索し、抽出したヘッダ名「Ｃａｌｌ−ＩＤＮｏ」と同じ文字列のヘッダ名が存在するか否かを判定する。そして、第２の信号解析部１５１ｂは、第３のテーブル１４０ｃの「キー」の項目には抽出したヘッダ名「Ｃａｌｌ−ＩＤＮｏ」と同一の文字列が存在しないと判定する。また、同様に、第２の信号解析部１５１ｂは、「ｃｏｎＴａｃｔ」が第３のテーブル１４０ｃに存在しないと判定する。続いて、第２の信号解析部１５１ｂは、受信したＳＩＰ信号を第３の信号解析部１５１ｃへ転送する。
【００５８】
また、第２の信号解析部１５１ｂは、送信元に該当する第３のテーブル１４０ｃが存在しないと判定した場合には、受信したＳＩＰ信号を第３の信号解析部１５１ｃに転送する。
【００５９】
また、第２の信号解析部１５１ｂは、アプリケーション実行部１５４に指定されたヘッダ名が第１の信号解析部１５１ａによって第１のテーブル１４０ａに存在しないと判定された場合に、当該指定されたヘッダ名が第３のテーブル１４０ｃに存在するか否かを判定する制御部である。例えば、第２の信号解析部１５１ｂは、指定されたヘッダ名が第３のテーブル１４０ｃに存在すると判定した場合に、当該指定されたヘッダ名に対応するヘッダ値を解析結果オブジェクトから抽出し、抽出したヘッダ値をアプリケーション実行部１５４に送信する。また、第２の信号解析部１５１ｂは、指定されたヘッダ名が第３のテーブル１４０ｃに存在しないと判定した場合には、当該ヘッダ名を第３の信号解析部１５１ｃに転送する。
【００６０】
なお、第２の信号解析部１５１ｂは、送信元に該当する第３のテーブル１４０ｃがファイルなどの二次記憶装置に格納されている場合には、二次記憶装置から送信元に該当する第３のテーブル１４０ｃを読み出してもよい。
【００６１】
第３の信号解析部１５１ｃは、第２の信号解析部１５１ｂによって第３のテーブル１４０ｃに記憶されていないと判定されると、受信信号に含まれるヘッダ名の文字列を大文字若しくは小文字に変換する。第３の信号解析部１５１ｃは、変換したヘッダ名と同じ文字列が第２のテーブル１４０ｂに記憶されているか否かを判定する。記憶されている場合に、第３の信号解析部１５１ｃは、当該ヘッダ名に対応するヘッダ値を受信信号から抽出する。言い換えると、第３の信号解析部１５１ｃは、抽出したヘッダ名の文字列を小文字若しくは大文字に変換し、当該抽出したヘッダ名が第２のテーブル１４０ｂに存在するか否かを判定する制御部である。例えば、第３の信号解析部１５１ｃは、受信したヘッダ名の文字列を小文字に変換し、変換した文字列のヘッダ名が第２のテーブル１４０ｂに存在するか否かを判定する。
【００６２】
第３の信号解析部１５１ｃは、変換した文字列のヘッダ名が第２のテーブル１４０ｂに存在しないと判定した場合には、当該文字列のヘッダ名から対応するヘッダ値を抽出し解析結果オブジェクトを作成する。一方、第３の信号解析部１５１ｃは、受信信号に含まれるヘッダ名と同じ文字列が第２のテーブル１４０ｂに記憶されていると判定した場合に、当該ヘッダ名を第３のテーブル１４０ｃに格納する。なお、第３の信号解析部１５１ｃは、解析結果オブジェクトを検索することでヘッダ名の解析が終了したか否かを判定することができる。したがって、第３の信号解析部１５１ｃは、解析が終了していないヘッダ名を抽出し、抽出したヘッダ名を解析することができる。
【００６３】
具体的には、第３の信号解析部１５１ｃは、解析結果オブジェクトを検索し、第１のテーブル１４０ａ及び第３のテーブル１４０ｃに記憶されていないと判定されたヘッダ名「Ｃａｌｌ−ＩＤＮｏ」と「ｃｏｎＴａｃｔ」とを抽出する。
【００６４】
第３の信号解析部１５１ｃは、抽出したヘッダ名「Ｃａｌｌ−ＩＤＮｏ」の文字列を「ｃａｌｌ−ｉｄｎｏ」に変換する。第３の信号解析部１５１ｃは、第２のテーブル１４０ｂの「キー」の項目を検索し、文字列を変換したヘッダ名「ｃａｌｌ−ｉｄｎｏ」と同じ文字列のヘッダ名が存在するか否かを判定する。そして、第３の信号解析部１５１ｃは、第２のテーブル１４０ｂの「キー」の項目には文字列を変換したヘッダ名「ｃａｌｌ−ｉｄｎｏ」と同一の文字列が存在しないと判定する。かかる場合、第３の信号解析部１５１ｃは、「ｃａｌｌ−ｉｄｎｏ」について、受信信号から、対応するヘッダ値「07d902120e270600f0@123.456.789.012」を抽出する。そして、第３の信号解析部１５１ｃは、ヘッダ名を小文字の文字列に変換した「ｃａｌｌ−ｉｄｎｏ」とヘッダ値「07d902120e270600f0@123.456.789.012」とを対応付けて解析結果オブジェクトへ格納する。
【００６５】
また、第３の信号解析部１５１ｃは、抽出したヘッダ名「ｃｏｎＴａｃｔ」の文字列を「ｃｏｎｔａｃｔ」に変換する。第３の信号解析部１５１ｃは、第２のテーブル１４０ｂの「キー」の項目を検索し、文字列を変換したヘッダ名「ｃｏｎｔａｃｔ」と同じ文字列のヘッダ名が存在するか否かを判定する。そして、第３の信号解析部１５１ｃは、第２のテーブル１４０ｂの「キー」の項目「ｃｏｎｔａｃｔ」と文字列変換したヘッダ名「ｃｏｎｔａｃｔ」とが同一の文字列であると判定する。
【００６６】
続いて、第３の信号解析部１５１ｃは、第２のテーブル１４０ｂの「キー」の項目「ｃｏｎｔａｃｔ」に対応する「規定ヘッダ名」の項目から規定のヘッダ名「Ｃｏｎｔａｃｔ」を抽出する。続いて、第３の信号解析部１５１ｃは、受信信号から、抽出したヘッダ名「ｃｏｎＴａｃｔ」に対応するヘッダ値「<sip:abc@123.456.789.012:35070>」を抽出する。そして、第３の信号解析部１５１ｂは、規定ヘッダ名「Ｃｏｎｔａｃｔ」とヘッダ値「<sip:abc@123.456.789.012:35070>」とを対応付けて解析結果オブジェクトへ格納する。第３の信号解析部１５１ｃが格納した後に作成される解析結果オブジェクトを図１２に示す。なお、図１２は、信号解析部１５１が作成する解析結果オブジェクトの一例を示す図である。また、第３の信号解析部１５１ｃは、図１１のように、受信したＳＩＰ信号のヘッダ名「ｃｏｎＴａｃｔ」と規定の文字列のヘッダ名「Ｃｏｎｔａｃｔ」とを対応付けた情報を第３のテーブル１４０ｃに格納する。なお、図１１は、信号解析部が第３のテーブルへ格納する情報の一例を示す図である。
【００６７】
また、第３の信号解析部１５１ｃは、指定されたヘッダ名の文字列を小文字若しくは大文字に変換し、当該指定されたヘッダ名が第２のテーブル１４０ｂに存在するか否かを判定する。例えば、第３の信号解析部１５１ｃは、指定されたヘッダ名の文字列を小文字に変換し、変換した文字列のヘッダ名が第２のテーブル１４０ｂに存在するか否かを判定する。第３の信号解析部１５１ｃは、変換した文字列のヘッダ名が第２のテーブル１４０ｂに存在すると判定した場合には、当該指定されたヘッダ名に対応する規定のヘッダ名を抽出する。そして、第３の信号解析部１５１ｃは、規定のヘッダ名に対応するヘッダ値を解析結果オブジェクトから抽出し、抽出したヘッダ値をアプリケーション実行部１５４に送信する。一方、第３の信号解析部１５１ｃは、変換した文字列のヘッダ名が第２のテーブル１４０ｂに存在しないと判定した場合には、当該変換した文字列のヘッダ名に対応するヘッダ値を解析結果オブジェクトから抽出する。そして、第３の信号解析部１５１ｃは、抽出したヘッダ値をアプリケーション実行部１５４に送信する。
【００６８】
なお、第３の信号解析部１５１ｃは、関連する通信終了時などの適当な時点で第３のテーブル１４０ｃを二次記憶装置に退避するようにしてもよい。例えば、二次記憶装置は、ＳＩＰサーバ１００に挿入される、例えば、フレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＭＯディスク、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」であってもよい。
【００６９】
トランザクション管理部１５２は、トランザクションの処理状態を管理する制御部である。例えば、トランザクション管理部１５２は、処理を要求するリクエスト信号とこれに対する回答であるレスポンス信号から「トランザクションタイプ」と「セッション開始時間」と「状態」とを抽出して、トランザクション管理テーブル１４０ｅに書き込む。
【００７０】
ダイアログ管理部１５３は、接続された端末間の接続関係を管理する制御部であり、例えば、クライアント端末２００とクライアント端末３００との通話状態に関する情報を管理する。例えば、ダイアログ管理部１５３は、信号が有するヘッダから「Ｃａｌｌ−Ｉｄ」と「Ｆｒｏｍ」と「Ｔｏ」とに関する情報を抽出し、ダイアログ管理テーブル１４０ｆを生成する。
【００７１】
アプリケーション実行部１５４は、接続が確立されたクライアント端末２００とクライアント端末３００に対してアプリケーションを実行する制御部である。例えば、アプリケーション実行部１５４は、記憶部１４０に格納されたアプリケーションを読み出し、接続が確立されたクライアント端末間にアプリケーションで規定された処理を実行する。また、アプリケーション実行部１５４は、ＡＰＩを使うことで信号解析部１５１へヘッダ名を指定し、指定したヘッダ名に対応するヘッダ値を取得する。
【００７２】
信号生成部１５５は、信号を生成し、生成した信号を信号送信部１２０へ転送する制御部である。例えば、信号生成部１５５は、受信したＳＩＰ信号について、信号のヘッダを更新することで新たな信号を生成する。また、信号生成部１５５は、アプリケーション実行部１５４が実行した処理から新たな信号を生成する。
【００７３】
[ＳＩＰサーバ１００によるＳＩＰ信号のヘッダ処理の処理手順]
図１３を用いて、ＳＩＰサーバ１００によるヘッダ処理の処理手順を説明する。図１３は、ＳＩＰ信号を受信した場合の信号解析部によるＳＩＰ信号解析処理の処理手順を示すフローチャートである。図１３に示すように、ＳＩＰサーバ１００において、信号受信部１１０は、ＳＩＰ信号を受信したと判定した場合には（ステップＳ１０１、Ｙｅｓ）、受信したＳＩＰ信号を第１の信号解析部１５１ａへ転送する。第１の信号解析部１５１ａは、受信したＳＩＰ信号からヘッダ名を抽出し（ステップＳ１０２）、抽出したヘッダ名が第１のテーブル１４０ａに存在するか否かを判定する（ステップＳ１０３）。第１の信号解析部１５１ａは、抽出したヘッダ名が第１のテーブル１４０ａに存在すると判定した場合には（ステップＳ１０３、Ｙｅｓ）、ヘッダ名に対応するヘッダ値を解析する（ステップＳ１０４）。続いて、第１の信号解析部１５１ａは、解析結果オブジェクトに解析結果を格納する（ステップＳ１０５）。
【００７４】
一方、第１の信号解析部１５１ａは、抽出したヘッダ名が第１のテーブル１４０ａに存在しないと判定した場合には（ステップＳ１０３、Ｎｏ）、受信したＳＩＰ信号を第２の信号解析部１５１ｂへ転送する。第２の信号解析部１５１ｂは、ＳＩＰ信号から送信元を特定し（ステップＳ１０６）、特定した送信元に対応する第３のテーブル１４０ｃが二次記憶装置上に存在するか否かを判定する（ステップＳ１０７）。第２の信号解析部１５１ｂは、送信元に対応する第３のテーブル１４０ｃが二次記憶装置上に存在しないと判定した場合（ステップＳ１０７、Ｎｏ）、受信したＳＩＰ信号を第３の信号解析部１５１ｃへ転送する。第３の信号解析部１５１ｃは、受信したＳＩＰ信号からヘッダ名を抽出し、抽出したヘッダ名の文字列を小文字に変換する（ステップＳ１１２）。
【００７５】
第２の信号解析部１５１ｂは、特定した送信元に対応する第３のテーブル１４０ｃが二次記憶装置上に存在すると判定した場合には（ステップＳ１０７、Ｙｅｓ）、第３のテーブル１４０ｃの情報をメモリに読み込む（ステップＳ１０８）。続いて、第２の信号解析部１５１ｂは、受信したＳＩＰ信号からヘッダ名を抽出し、抽出したヘッダ名が第３のテーブル１４０ｃに存在するか否かを判定する（ステップＳ１０９）。ここで、第２の信号解析部１５１ｂは、抽出したヘッダ名が第３のテーブル１４０ｃに存在すると判定した場合には（ステップＳ１０９、Ｙｅｓ）、ヘッダ名に対応するヘッダ値を解析する（ステップＳ１１０）。続いて、第２の信号解析部１５１ｂは、解析結果オブジェクトに解析結果を格納する（ステップＳ１１１）。
【００７６】
一方、第２の信号解析部１５１ｂは、抽出したヘッダ名が第３のテーブル１４０ｃに存在しないと判定した場合（ステップＳ１０９、Ｎｏ）、受信したＳＩＰ信号を第３の信号解析部１５１ｃへ転送する。第３の信号解析部１５１ｃは、受信したＳＩＰ信号からヘッダ名を抽出し、抽出したヘッダ名の文字列を小文字に変換する（ステップＳ１１２）。
【００７７】
第３の信号解析部１５１ｃは、文字列を小文字に変換したヘッダ名が第２のテーブル１４０ｂに存在するか否かを判定する（ステップＳ１１３）。ここで、第３の信号解析部１５１ｃは、該当するヘッダ名が第２のテーブル１４０ｂに存在しないと判定した場合には（ステップＳ１１３、Ｎｏ）、解析結果オブジェクトに解析結果を格納する（ステップＳ１１４）。
【００７８】
一方、第３の信号解析部１５１ｃは、文字列を小文字に変換したヘッダ名が第２のテーブル１４０ｂに存在すると判定した場合には（ステップＳ１１３、Ｙｅｓ）、対応するヘッダ値を抽出し（ステップＳ１１５）、解析結果オブジェクトに解析結果を格納する（ステップＳ１１６）。続いて、第３の信号解析部１５１ｃは、第３のテーブル１４０ｃに受信したＳＩＰ信号のヘッダから抽出した文字列のヘッダ名と、第２のテーブル１４０ｂから抽出した規定の文字列のヘッダ名とを格納する（ステップＳ１１７）。
【００７９】
[ＳＩＰサーバ１００によるアプリケーション実行部１５４からのヘッダ値取得要求に対する処理の処理手順]
図１４を用いて、ＳＩＰサーバ１００によるアプリケーション実行部１５４からのヘッダ値取得要求に対する処理の処理手順を説明する。図１４は、ＳＩＰサーバ１００によるアプリケーション実行部１５４からのヘッダ値取得要求に対する処理の処理手順を説明する図である。図１４に示すように、第１の信号解析部１５１ａは、アプリケーション実行部１５４からヘッダ名を指定された場合（ステップＳ２０１、Ｙｅｓ）、指定されたヘッダ名が第１のテーブル１４０ａに存在するか否かを判定する（ステップＳ２０２）。第１の信号解析部１５１ａは、指定されたヘッダ名が第１のテーブル１４０ａに存在すると判定した場合には（ステップＳ２０２、Ｙｅｓ）、対応するヘッダ値を解析結果オブジェクトから抽出し、アプリケーション実行部１５４へ送信する（ステップＳ２０３）。
【００８０】
一方、第１の信号解析部１５１ａは、指定されたヘッダ名が第１のテーブルに存在しないと判定した場合には（ステップＳ２０２、Ｎｏ）、指定されたヘッダ名を第２の信号解析部１５１ｂへ転送する。第２の信号解析部１５１ｂは、通話先を特定し（ステップＳ２０４）、特定した通話先に対応する第３のテーブル１４０ｃが二次記憶装置に存在するか否かを判定する（ステップＳ２０５）。第２の信号解析部１５１ｂは、通話先に対応する第３のテーブル１４０ｃが二次記憶装置に存在しないと判定した場合（ステップＳ２０５、Ｎｏ）、指定されたヘッダ名を第３の信号解析部１５１ｃへ転送する。そして、第３の信号解析部１５１ｃは、指定されたヘッダ名の文字列を小文字に変換する（ステップＳ２０９）。
【００８１】
第２の信号解析部１５１ｂは、特定した通話先に対応する第３のテーブル１４０ｃが二次記憶装置に存在すると判定した場合には（ステップＳ２０５、Ｙｅｓ）、第３のテーブル１４０ｃの情報をメモリに読み込む（ステップＳ２０６）。続いて、第２の信号解析部１５１ｂは、指定されたヘッダ名が第３のテーブル１４０ｃに存在するか否かを判定する（ステップＳ２０７）。第２の信号解析部１５１ｂは、指定されたヘッダ名が第３のテーブル１４０ｃに存在すると判定した場合には（ステップＳ２０７、Ｙｅｓ）、対応するヘッダ値を解析結果オブジェクトから抽出し、アプリケーション実行部１５４へ送信する（ステップＳ２０８）。
【００８２】
一方、第２の信号解析部１５１ｂは、指定されたヘッダ名が第３のテーブル１４０ｃに存在しないと判定した場合（ステップＳ２０７、Ｎｏ）、指定されたヘッダ名を第３の信号解析部１５１ｃへ転送する。そして、第３の信号解析部１５１ｃは、指定されたヘッダ名の文字列を小文字に変換する（ステップＳ２０９）。
【００８３】
第３の信号解析部１５１ｃは、文字列を小文字に変換したヘッダ名が第２のテーブル１４０ｂに存在するか否かを判定する（ステップＳ２１０）。ここで、第３の信号解析部１５１ｃは、該当するヘッダ名が第２のテーブル１４０ｂに存在しないと判定した場合には（ステップＳ２１０、Ｎｏ）、小文字に変換した文字列のヘッダ名に対応するヘッダ値を解析結果オブジェクトから抽出する。そして、第３の信号解析部１５１ｃは、抽出したヘッダ値をアプリケーション実行部１５４へ送信する（ステップＳ２１１）。
【００８４】
一方、第３の信号解析部１５１ｃは、文字列を小文字に変換したヘッダ名が第２のテーブルに存在すると判定した場合には（ステップＳ２１０、Ｙｅｓ）、対応するヘッダ値を解析結果オブジェクトから抽出する。そして、第３の信号解析部１５１ｃは、抽出したヘッダ値をアプリケーション実行部１５４へ送信する（ステップＳ２１２）。
【００８５】
[実施例１の効果]
上述してきたように、本実施例１では、第１の信号解析部１５１ａは、信号受信部１１０が受信したＳＩＰ信号からヘッダ名を抽出し、抽出したヘッダ名が第１のテーブル１４０ａに存在するか否かを判定する。第１の信号解析部１５１ａは、抽出したヘッダ名が第１のテーブル１４０ａに存在しないと判定した場合、受信したＳＩＰ信号を第２の信号解析部１５１ｂへ転送する。第２の信号解析部１５１ｂは、受信したＳＩＰ信号からヘッダ名を抽出し、抽出したヘッダ名が第３のテーブル１４０ｃに存在するか否かを判定する。第２の信号解析部１５１ｂは、抽出したヘッダ名が第３のテーブル１４０ｃに存在しないと判定した場合、受信したＳＩＰ信号を第３の信号解析部１５１ｃへ転送する。第３の信号解析部１５１ｃは、受信したＳＩＰ信号からヘッダ名を抽出し、抽出したヘッダ名の文字列を小文字に変換する。第３の信号解析部１５１ｃは、小文字に変換したヘッダ名の文字列が第２のテーブル１４０ｂに存在するか否かを判定する。第３の信号解析部１５１ｃは、小文字に変換したヘッダ名の文字列が第２のテーブル１４０ｂに存在すると判定した場合、第２のテーブル１４０ｂから抽出した規定のヘッダ名の文字列と受信信号のヘッダ名の文字列とを対応付けて第３のテーブル１４０ｃに記録する。
【００８６】
すなわち、実施例にかかるＳＩＰサーバ１００は、ＳＩＰ規約に規定された文字列とは異なるヘッダ名を第３のテーブル１４０ｃに記憶する。したがって、ＳＩＰサーバ１００は、ＳＩＰ規約に規定された文字列とは異なるヘッダ名を有するＳＩＰ信号を受信した場合、一度変換した文字列のヘッダ名については第３のテーブル１４０ｃを検索することで、規定された文字列のヘッダ名を抽出できる。この結果、ＳＩＰサーバ１００は、効率的に信号のヘッダ解析処理が実行できる。
【００８７】
また、実施例にかかるＳＩＰサーバ１００は、一度変換した文字列のヘッダ名については再度文字列を変換する必要がないので、Ｊａｖａ（登録商標）言語を実装する場合、使い捨ての文字列オブジェクトの発生を減らすことができる。この結果、ＳＩＰサーバ１００は、ガベージコレクションの発生頻度を低下できるので、ＳＩＰサーバの処理性能を向上することができる。
【００８８】
また、実施例にかかるＳＩＰサーバ１００は、送信元ごとに作成した第３のテーブル１４０ｃを二次記憶装置へ格納することができるためメモリリークを回避することができる。また、この結果、ＳＩＰサーバ１００は、メモリ利用効率を向上することができる。
【実施例２】
【００８９】
ところで、本願の開示するＳＩＰサーバは、上述した実施例以外にも、種々の異なる形態にて実施されてよい。そこで、実施例２では、本願の開示する情報処理装置の他の実施例について説明する。
【００９０】
（システム構成等）
本実施例において説明した各処理のうち自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともできる。あるいは、手動的に行われるものとして説明した処理の全部又は一部を公知の方法で自動的に行うこともできる。この他、上記文章中や図面中で示した処理手順、制御手順、具体的名称については、特記する場合を除いて任意に変更することができる。
【００９１】
また、図示した各構成部は、機能概念的なものであり、必ずしも物理的に図示のごとく構成されていることを要しない。例えば、信号受信部１１０と第１の信号解析部１５１ａとが統合されてもよい。さらに、各装置にて行われる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。また、図示した記憶部が格納する情報は一例に過ぎず、必ずしも図示のごとく情報が格納される必要はない。
【００９２】
また、本実施例においてサーバは、ＳＩＰサーバとして説明したが、ＳＩＰサーバに限定されない。例えば、サーバは、パケットに付与されたヘッダ解析処理を行うサーバであれば、ＨＴＴＰ（Hyper  Text  Transfer  Protocol）サーバであってもよい。
【００９３】
（プログラム）
ところで、上記実施例で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することができる。そこで、以下では、上記実施例と同様の機能を有するプログラムを実行するコンピュータシステムの一例を説明する。
【００９４】
図１５は、信号解析プログラムを実行するコンピュータシステムを示す図である。図１５に示すように、コンピュータシステム５００は、ＲＡＭ５１０と、ＲＯＭ５３０と、ＣＰＵ５２０とを有する。ここで、ＲＯＭ５３０には、上記実施例と同様の機能を発揮するプログラムを予め記憶されている。つまり、図１５に示すように、ＲＯＭ５３０には、第１の信号解析プログラム５３１と第２の信号解析プログラム５３２と第３の信号解析プログラム５３３とが予め記憶されている。
【００９５】
そして、ＣＰＵ５２０には、これらのプログラム５３１〜５３３を読み出してＲＡＭ５１０に展開する。そして、ＣＰＵ５２０は、第１の信号解析プログラム５３１を第１の信号解析プロセス５２１として実行する。またＣＰＵ５２０は、第２の信号解析プログラム５３２を第２の信号解析プロセス５２２として実行し、第３の信号解析プログラム５３３を第３の信号解析プロセス５２３として実行する。なお、第１の信号解析プロセス５２１は、図２に示した第１の信号解析部に対応する。同様に、第２の信号解析プロセス５２２は、第２の信号解析部に対応する。また、第３の信号解析プロセス５２３は、第３の信号解析部に対応する。
【００９６】
ところで、上記したプログラム５３１〜５３３は、必ずしもＲＯＭ５３０に記憶させておく必要はない。例えば、コンピュータシステム５００に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＭＯディスク、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」に記憶させておくようにしてもよい。また、コンピュータシステム５００の内外に備えられるハードディスクドライブ（ＨＤＤ）などの「固定用の物理媒体」に記憶させておいてもよい。さらに、公衆回線、インターネット、ＬＡＮ（Local  Area  Network）、ＷＡＮ（Wide  Area  Network）などを介してコンピュータシステム５００に接続される「他のコンピュータシステム」に記憶させておいてもよい。そして、コンピュータシステム５００がこれらからプログラムを読み出して実行するようにしてもよい。
【００９７】
すなわち、この他の実施例でいうプログラムは、上記した「可搬用の物理媒体」、「固定用の物理媒体」、「通信媒体」などの記録媒体に、コンピュータ読み取り可能に記憶されるものである。そして、コンピュータシステム５００は、このような記録媒体からプログラムを読み出して実行することで上記した実施例と同様の機能を実現する。なお、この他の実施例でいうプログラムは、コンピュータシステム５００によって実行されることに限定されるものではない。例えば、他のコンピュータシステムまたはサーバがプログラムを実行する場合や、これらが協働してプログラムを実行するような場合にも、本発明を同様に適用することができる。
【符号の説明】
【００９８】
１００  ＳＩＰサーバ
１１０  信号受信部
１２０  信号送信部
１３０  タイマ管理部
１４０  記憶部
１４０ａ  第１のテーブル
１４０ｂ  第２のテーブル
１４０ｃ  第３のテーブル
１４０ｄ  ヘッダ情報管理テーブル
１４０ｅ  トランザクション管理テーブル
１４０ｆ  ダイアログ管理テーブル
１５０  制御部
１５１  信号解析部
１５１ａ  第１の信号解析部
１５１ｂ  第２の信号解析部
１５１ｃ  第３の信号解析部
１５２  トランザクション管理部
１５３  ダイアログ管理部
１５４  アプリケーション実行部
１５５  信号生成部
２００  クライアント端末
３００  クライアント端末
４００  ＳＩＰ網
５００  コンピュータシステム
５１０  ＲＡＭ
５２０  ＣＰＵ
５３０  ＲＯＭ
【図１】
0005488267.tif 000002
【図２】
0005488267.tif 000003
【図３】
0005488267.tif 000004
【図４】
0005488267.tif 000005
【図５】
0005488267.tif 000006
【図６】
0005488267.tif 000007
【図７】
0005488267.tif 000008
【図８】
0005488267.tif 000009
【図９】
0005488267.tif 000010
【図１０】
0005488267.tif 000011
【図１１】
0005488267.tif 000012
【図１２】
0005488267.tif 000013
【図１３】
0005488267.tif 000014
【図１４】
0005488267.tif 000015
【図１５】
0005488267.tif 000016
【図１６】
0005488267.tif 000017
【図１７】
0005488267.tif 000018