Information processing apparatus, method, and program

An information processing apparatus includes: a memory configured to store a first group of character strings each of which corresponds to a header name defined in accordance with a communication protocol for communication, a second group of character strings each of which corresponds to a character string that is obtained by converting the character strings of the first group into lower case letters or upper case letters, and a third group of character strings each of which is not identical to any of the character strings of the first group, the character strings of the third group being extracted from a signal received; an extracting unit configured to extract a header value from another signal received from the other communication apparatus when a header name included in the other signal is identical to any character string of the first group, or the third group, or the second group.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is based upon and claims the benefit of priority of the prior Japanese Patent Application No. 2010-150425, filed on Jun. 30, 2010, the entire contents of which are incorporated herein by reference.

FIELD

The present invention relates to information processing apparatuses, information processing methods, and information processing programs.

BACKGROUND

Hitherto, a SIP server has been used which connects between terminals over an IP (Internet Protocol) network by using SIP (Session Initiation Protocol). In the SIP server, an application is implemented which performs processing of sound and/or moving picture communication between the connected terminals. The SIP server performs call control on the basis of the result of analysis on a received SIP signal. The application on the SIP server performs processing on the basis of the result of analysis on a SIP signal by the SIP server.

With reference toFIG. 16, an example of analysis processing on a SIP signal to be performed by the SIP server will be described.FIG. 16illustrates an example of a SIP signal to be received by a SIP server. The analysis processing on a SIP signal extracts an arbitrary value from a header having a header name and a header value. The header name may be “From”, “Via”, “Max-Forwards” or the like as illustrated inFIG. 16, and “:” after each header name is followed by a header value.

For example, a SIP server extracts “‘abc’ <sip:abc@sipas.fujitsu.com>;tag=1838-a7-2e-8f-cd361869” as the header value corresponding to the header name “From” illustrated inFIG. 16. The SIP server creates an analysis result object having correspondence between the extracted header value “‘abc’ <sip:abc@sipas.fujitsu.com>;tag=1838-a7-2e-8f-cd361869” and the header name “From”.

The SIP signal analysis processing defines the character string of the header name to be analyzed dependent on uppercase letters and lowercase letters under SIP. However, a source terminal transmits a SIP signal having a header name containing a character string generated originally by the terminal independent of the protocol. In other words, a SIP server may receive a header name containing a character string having different sensitivity to uppercase letters and lowercase letters from those of a character string of a header name defined under the SIP protocol.

For example, though the character string of a header name defined under the SIP protocol is “From”, a SIP server may receive a SIP signal having “froM” as the character string of the header name. In this case, the SIP server may be required to perform complicated processing for determining that “froM” corresponds to “From”. More specifically, the SIP server may be required to store information on a combination of all character strings which can be recognized as the defined character string “From” and search “froM” from the stored information.

In this way, in order to prevent the complicated analysis processing on a SIP signal, a well known method has been implemented in which a SIP server coercively converts a header name contained in a received SIP signal to uppercase letters or lowercase letters.

With reference toFIG. 17, there will be described the method which coercively converts a header name contained in a SIP signal to uppercase letters or lowercase letters.FIG. 17illustrates an example of the method which coercively converts a header name contained in a SIP signal to uppercase letters or lowercase letters. As illustrated inFIG. 17, for example, when a SIP server receives a SIP signal having a header name “froM”, the SIP server may convert the character string of the header name to lowercase letters “from”. The SIP server may convert the character string “From” of the defined header name to lowercase letters “from”. The SIP server may search the header name which is matched with lowercase letters “from” converted from “froM”. The SIP server may determine that the character string “From” of the defined header name is matched with the converted lowercase letters “from”. In other words, the SIP server may determine that the received header name “froM” corresponds to “From”. The SIP server may then create an analysis result object having correspondence between the header value “‘abc’ <sip:abc@sipas.fujitsu.com>;tag=1838-a7-2e-8f-cd361869” extracted from the header name “froM” of the SIP signal and the header name “from” as a result of the conversion to lowercase letters. The same is true in the method which coercively converts the header name contained in a SIP signal to uppercase letters.

Similarly, the complicated processing can be prevented by coercively converting a header name to uppercase letters or lowercase letters by a SIP server if the acquisition of a header value corresponding to the header name is requested from an application present on the SIP server. As illustrated inFIG. 17, for example, if the SIP server is requested to acquire the header value corresponding to the header name “FROM” by an application, the SIP server converts the character string “FROM” to “from”. The SIP server then searches the header name matched with “from” as a result of conversion of the character string “FROM” to lowercase letters from the analysis result object. The SIP server extracts the header value “‘abc’ <sip:abc@sipas.fujitsu.com>;tag=1838-a7-2e-8f-cd361869” corresponding to “from” from the analysis result object and notifies it to the application.

SUMMARY

According to an aspect of the embodiment, an information processing apparatus includes: a memory configured to store a first group of one or more character strings each of which corresponds to a header name defined in accordance with a communication protocol for communication between the information processing apparatus and another communication processing apparatus, a second group of one or more character strings each of which corresponds to a character string that is obtained by converting the one or more character strings of the first group into lower case letters or upper case letters, and a third group of one or more character strings each of which is not identical to any of the one or more character strings of the first group, the one or more character strings of the third group being extracted from a signal received; an extracting unit configured to extract a header value from another signal received from the other communication apparatus when a header name included in the other signal is determined to be identical to any character string of the first group, or when the header name included in the other signal is not determined to be identical to any character string of the first group but determined to be identical to any character string of the third group, or when the header name included in the other signal is not determined to be identical to any character string of the first and third groups and a character string obtained by converting the header name in the other signal into lower case letters or upper case letters is identical to any character string of the second group, the determination of the first to third groups being performed in order of the first group to the third group to the second group.

DESCRIPTION OF EMBODIMENTS

The aforementioned art in the past has a problem that it is difficult to efficiently perform analysis processing on a received signal.

More specifically, because a SIP signal received by a SIP server has many pairs of a header name and a header value, the SIP server is required to convert the character strings of many header names to uppercase letters or lowercase letters every time the SIP server receives a signal. Furthermore, when a SIP server receives a signal repeatedly from a specific terminal, the SIP server receives signals having the same header name as the one having the character string converted once. In other words, every time a SIP server receives a signal, the SIP server must convert again the header name having the character string converted once.

A SIP server may receive a request signal which requests connection between terminals, for example, from a connection source terminal and transfers the received request signal to a connection destination terminal. The SIP server receives a response signal to the request from the connection destination terminal and transfers the received response signal to the connection source terminal. In this case, the SIP server may often receive a response signal generated by copying the header of the request signal. As a result, the SIP server may receive a response signal having the same character string as the character string of the header name converted in analysis on the request signal. In other words, every time the SIP server receives a response signal, the SIP server must convert again the header name having the character string converted once.

When a SIP server is requested to acquire the header value corresponding to the header name from an application present on the SIP server, the SIP server converts the character string of the header name and searches the corresponding header value. A SIP server may be requested the header value acquisition normally over a plurality of number of times from an application. Thus, the SIP server must convert the character strings of the header names even if they are the header name having the character string converted before every time the acquisition of the header value is requested. As a result, it may be difficult for the SIP server to perform efficient SIP signal analysis processing.

Hereinafter, embodiments of an information processing apparatus, information processing method, and information processing program disclosed by the subject application will be described in detail with reference to drawings. Those embodiments do not limit the present invention.

First Embodiment

Network Configuration of SIP Server

FIG. 1illustrates a network configuration of a SIP server100according to a first embodiment. As illustrated inFIG. 1, the SIP server100according to the first embodiment connects a client terminal200and a client terminal300through a SIP network400.

With reference toFIG. 2, a configuration of the SIP server100according to the first embodiment will be described.FIG. 2is a block diagram illustrating a configuration of a SIP server according to the first embodiment. As illustrated inFIG. 2, the SIP server100according to the first embodiment includes a signal receiving unit110, a signal transmitting unit120, a timer control unit130, a storage unit140and a control unit150.

The signal receiving unit110is a control unit which receives a SIP signal from the client terminals200and300and transfers the received SIP signal to the signal analyzing unit151. There will be described an example of a signal received by the signal receiving unit110.FIG. 3illustrates an example of the SIP signal received by the signal receiving unit110. As illustrated inFIG. 3, a SIP signal to be received by the signal receiving unit110has a request line3001and a header3002.

The request line3001indicates the type of the received signal, and the received signal inFIG. 3has “REGISTER” indicating that the signal is for applying IP address registration to the SIP server100, for example. The header3002has a header name and a header value and designates the function required for implementing the content requested by the signal. For example, the received signal illustrated inFIG. 3has header names “From”, “Via”, “Max-Forwards”, “To”, “CSeq”, “Call-Id”, “Content-Length”, and “Contact”.

The header name “From” indicates the logical address of the source of a request. The header name “Via” indicates information on the address at which the source of the request requests to receive a response. With reference to this, a response can be returned to the request source. The header name “Max-Forwards” indicates information on an upper limit of the number of hops. The header name “To” indicates the logical destination of the request. The header name “CSeq” indicates information on an increment value for distinction between a new transaction and a retransmission. The header name “Call-Id” indicates information on a unique ID with which a “call” is identifiable. The header name “Content-Length” indicates information on the length of the body of the header. The header name “Contact” indicates to where the request is to be transmitted next.

For example, as illustrated inFIG. 4, these kinds of information are stored in the form of “key, defined header name” such as “From, From”, “Via, Via”, “Max-Forwards, Max-Forwards”, “To, To”, and “CSeq, CSeq”. A first table140astores information in the form of “key, defined header name” as “Call-Id, Call-Id”, “Content-Length, Content-Length”, and “Contact, Contact”.

Here, the “key” stores a header name having a character string defined under the SIP protocol, and the “defined header name” stores a header name having a character string defined under the SIP protocol. In other words, the first table140astores a header name having a character string defined under the SIP protocol.FIG. 4illustrates an example of information stored in the first table140a. The first table140akeeps the same content while the server is operating after the content is created upon start. One first table140aexists within the SIP server100.

A second table140bstores a character string as a result of the conversion of a header name under the communication protocol to lowercase letters or uppercase letters. In other words, the second table140bstores a header name as a result of conversion of a character string under the SIP protocol to lowercase letters. For example, the second table140bstores information in the form of “key, defined header name” such as “from, From”, “via, Via”, “max-forwards, Max-Forwards”, “to, To”, and “cseq, CSeq” as illustrated inFIG. 5. The second table140bfurther stores information in the form of “key, defined header name” such as “call-id, Call-Id”, “content-length, Content-Length”, and “contact, Contact”.

Here, the “key” stores a result of conversion of a header name having a character string defined under SIP protocol to lowercase letters, and the “defined header name” stores a header name having a character string defined under the SIP protocol. In other words, the second table140bstores a header name as a result of conversion of a character string defined under the SIP protocol to lowercase letters.FIG. 5illustrates an example of information stored in the second table140b. The second table140bkeeps the same content while the server is operating after the content is created upon start. One second table140bexists within the SIP server100.

A third table140cstores a header name extracted from a signal received in the past for each communication apparatus which has communicated with the terminal it belongs to. In this case, the header name has a character string which is defined under a communication protocol but is different from the identical character string. In other words, the third table140cstores a header name appearing in a signal in a different form from the form defined under the SIP protocol. For example, the third table140cstores a header name having a character string not corresponding to the “key” in the first table and second table in association with the “defined header name”. The third table140cstores a header name of a character string which is identical to that of the “key” in the second table as a result of the conversion of the character string to lowercase letters, instead of a character string under the SIP protocol. For example, the third table140cstores “ViA, Via” as “key, defined header name” as illustrated inFIG. 6. Here, the “key” in the third table140cstores a header name having a character string used in a received SIP signal, and the “defined header name” stores a header name having a character string under the SIP protocol.FIG. 6illustrates an example of information stored in the third table140c. The third table140cis initially blank. The third table140cis created for each source terminal.

The third table140cmay be saved in a secondary storage device by a second signal analyzing unit151b, which will be described below, at a proper time such as the end of related communication, and the saved information may be made available for reuse. For example, the secondary storage device may be a “portable physical medium” such as a flexible disk (FD), a CD-ROM, an MO disk, a DVD disk, magneto-optical disk, and an IC card to be inserted to the SIP server100.

A header management table140dstores an analysis result object. For example, the header management table140dstores a “header name” and a “header value” in association, as illustrated inFIG. 7. More specifically, the header value corresponding to the header name “From” is “‘abc’ <sip:abc@sipas.fujitsu.com>;tag=1838-a7-2e-8f-cd361869”. The header value corresponding to the header name “Via” is “SIP/2.0/UDP 123.456.789.012:35070; branch=z9hG4bK-07d902120e270600f0-16”. The header value corresponding to the header name “Max-Forwards” is “70”.FIG. 7illustrates an example of an analysis result object stored in the header management table140d.

A transaction management table140estores state information on SIP transaction processing created by the transaction management unit152. For example, the transaction management table140estores a “transaction ID”, a “transaction type”, a “session start time”, and a “state” in association, as illustrated inFIG. 8.FIG. 8illustrates an example of information stored in the transaction management table140e.

The “transaction ID” to be stored here stores an identifier for uniquely identifying a transaction. The “transaction type” stores a type of a received request signal such as “INVITE” which is a signal that requests to establish a session and “REGISTER” which is a signal that requests to register an IP address. The “session start time” stores the time when a request signal is received first. The “state” stores information describing the type of the signal transmitted or received last such as “END” when the session ends and “TEMPORARY RESPONSE” or “SUCCESSFUL RESPONSE” while the session is in progress.

FIG. 8illustrates that a transaction having “0001” as the “transaction ID” has received the “INVITE” signal at 14:50:03 on March 3, 2010 and the session has been finished at present.FIG. 8further illustrates that a transaction having “0002” as the “transaction ID” has received the “REGISTER” signal at 14:52:01 on March 3, 2010 and the session has been finished.FIG. 8further illustrates that a transaction having “0003” as the “transaction ID” has received the “INVITE” signal at 14:52:45 on March 3, 2010 and a temporary response has been transmitted.

A dialog management table140fstores information on a dialog created by the dialog management unit153. For example, the dialog management table140fstores a “dialog ID”, a “Call-Id”, a “From”, a “To”, and “call information” in association, as illustrated inFIG. 9.FIG. 9illustrates an example of information stored in the dialog management table140f. The dialog management table140fis generally created separately for each dialog.

As illustrated inFIG. 9, the “dialog ID” stores an identifier for uniquely identifying a dialog, and the “Call-Id” stores information on a unique ID for identifying a “call”. The “From” stores a connection source address of a dialog. The “To” stores a connection destination address of a dialog. The “call information” stores information describing a call start time and a call finish time.

For example, a dialog having “aaaaa” as a “dialog ID” involves the connection between “0010001” and “0020001” which is identified with “a-11111” as “Call-Id”. The information describes that the call has started from 14:50:17 on March 3, 2010 and has ended at 14:55:23 on March 3, 2010. A dialog having “bbbbb” as a “dialog ID” involves the connection between “0010010” and “0020010” which is identified with “b-11111” as “Call-Id”. The information describes that the call has started from 14:58:03 on March 3, 2010 and is currently being continued.

The control unit150includes an internal memory for storing a control program, a program which defines a processing routine, and necessary data. The control unit150further includes a signal analyzing unit151, a transaction management unit152, a dialog management unit153, an application executing unit154and a signal generating unit155. For example, the control unit150may be an integrated circuit such as an ASIC (Application Specific Integrated Circuit) and an FPGA (Field Programmable Gate Array) or an electronic circuit such as a CPU (Central Processing Unit) and an MPU (Micro Processing Unit).

The signal analyzing unit151is a control unit which analyzes a signal and generates an analysis result object and includes a first signal analyzing unit151a, a second signal analyzing unit151b, and a third signal analyzing unit151c. The signal analyzing unit151extracts the corresponding header value from an analysis result object for the header name designated from the application executing unit154and transmits the extracted header value to the application executing unit154.

The first signal analyzing unit151adetermines whether the identical character string to that of a header name contained in a received signal from another communication apparatus is stored in the first table140aor not. If so, the first signal analyzing unit151aextracts the header value corresponding to the header name from the received signal. In other words, the first signal analyzing unit151ais a control unit which extracts a header name from a SIP signal received by the signal receiving unit110and determines whether the extracted header name exists in the first table140aor not. For example, if the first signal analyzing unit151adetermines that the extracted header name exists in the first table140a, the first signal analyzing unit151aextracts the corresponding header value from the extracted header name and creates the analysis result object. If the first signal analyzing unit151adetermines that the extracted header name does not exist in the first table140a, the first signal analyzing unit151atransfers the received SIP signal to the second signal analyzing unit151b.

More specifically, for example, when a SIP signal illustrated inFIG. 10is received by the signal receiving unit110, the first signal analyzing unit151aextracts the header name “From”. The first signal analyzing unit151asearches through items of the “key” in the first table140aillustrated inFIG. 4and determines whether any header name having the identical character string to the extracted header name “From” exists therein or not. The first signal analyzing unit151adetermines the item “From” of the “key” in the first table140aand the extracted header name “From” have the identical character string.FIG. 10illustrates an example of a SIP signal to be analyzed by the signal analyzing unit151.

Next, the first signal analyzing unit151aextracts the defined header name “From” from items of the “defined header name” corresponding to the item “From” of “From” in the first table140a. The first signal analyzing unit151athen extracts from the received signal the header value “‘abc’ <sip:abc@sipas.fujitsu.com>;tag=1838-a7-2e-8f-cd361869” corresponding to the extracted header name “From”. The first signal analyzing unit151athen stores the defined header name “From” and the header value “‘abc’ <sip:abc@sipas.fujitsu.com>;tag=1838-a7-2e-8f-cd361869” in association to the analysis result object.

Then, the first signal analyzing unit151aextracts the header name “ViA” from the received SIP signal. The first signal analyzing unit151asearches through items of the “key” in the first table140aand may determine that no header name having the identical character string to that of the extracted header name “ViA” exists in the items of the “key” in the first table140a.

In the same manner, the first signal analyzing unit151amay determine that “Max-Forwards”, “To” and “CSeq” exist in the first table140a. AS the result, the first signal analyzing unit151astores the defined header name “Max-Forwards” and a header value “70” in association to the analysis result object. The first signal analyzing unit151afurther stores the defined header name “To” and the header value “<sip:abc@sipas.fujitsu.com>” in association to the analysis result object. The first signal analyzing unit151astores the defined header name “CSeq” and a header value “16 REGISTER” in association to the analysis result object.

In the same manner, the first signal analyzing unit151amay determine no “Call-ID No” exists in the first table140a. The first signal analyzing unit151amay further determine that “Content-Length” exists in the first table140a. As a result, the first signal analyzing unit151astores the defined header name “Content-Length” and a header value “0” in association to the analysis result object.

In the same manner, the first signal analyzing unit151amay determine that no “conTact” exists in the first table140a. The first signal analyzing unit151atransfers the received SIP signal to the second signal analyzing unit151b.

In other words, the first signal analyzing unit151adetermines that “From”, “Max-Forwards”, “To”, “CSeq” and “Content-Length” exist in the first table140a. As a result, the first signal analyzing unit151acreates analysis result objects for “From”, “Max-Forwards”, “To”, “CSeq” and “Content-Length”. The first signal analyzing unit151atransfers the received SIP signal to the second signal analyzing unit151b.

If the application executing unit154designates a header name, the first signal analyzing unit151ais a control unit which determines whether the designated header name exists in the first table140aor not. For example, if the first signal analyzing unit151adetermines that the designated header name exists in the first table140a, the first signal analyzing unit151aextracts the header value corresponding to the designated header name from the analysis result object and transmits the extracted header value to the application executing unit154. If the first signal analyzing unit151adetermines that the designated header name does not exist in the first table140a, the first signal analyzing unit151atransfers the designated header name to the second signal analyzing unit151b.

If the first signal analyzing unit151adetermines that the first table140adoes not store it, the second signal analyzing unit151bdetermines whether the identical character string to that of the header name contained in the received signal is stored in the third table140cor not. If so, the second signal analyzing unit151bextracts the header value corresponding to the header name from the received signal. In other words, the second signal analyzing unit151bis a control unit which determines whether the header name extracted from a received SIP signal exists in the third table140cor not. For example, if the second signal analyzing unit151bdetermines that the extracted header name exists in the third table140c, the second signal analyzing unit151bextracts the header value corresponding to the extracted header name and creates an analysis result object. If the second signal analyzing unit151bdetermines that the extracted header name does not exist in the third table140c, the second signal analyzing unit151btransfers the received signal to the third signal analyzing unit151c. The second signal analyzing unit151bcan determine whether the header name analysis has finished or not by searching the corresponding analysis result object. Thus, the second signal analyzing unit151bcan extract the header name which has not undergone the analysis and analyzes the extracted header name.

More specifically, the second signal analyzing unit151bsearches through analysis result objects and extracts header names “ViA”, “Call-ID No” and “conTact” which are determined as not being stored in the first table140afrom the received SIP signal. If the second signal analyzing unit151breceives a signal, the second signal analyzing unit151bdetermines whether the source has the corresponding third table140cor not.

For example, the second signal analyzing unit151bmay determine that the source has the corresponding third table140c, the second signal analyzing unit151bsearches through items of the “key” in the third table140cillustrated inFIG. 6and determines whether the header name having the identical character string to that of the extracted header name “ViA” exists therein or not. The second signal analyzing unit151bmay determine that the item “ViA” of the “key” in the third table140cand the extracted header name “ViA” have the identical character string.

Next, the second signal analyzing unit151bextracts the defined header name “Via” from items of the “defined header name” corresponding to the item “VIA” of the “key” in the third table140c. The second signal analyzing unit151bthen extracts the header value “SIP/2.0/UDP 123.456.789.012:35070; branch=z9hG4bK-07d902120e270600f0-16” corresponding to the extracted header name “ViA” from the received signal. The second signal analyzing unit151bstores the defined header name “Via” and the header value “SIP/2.0/UDP 123.456.789.012:35070; branch=z9hG4bK-07d902120e270600f0-16” in association to the analysis result object.

The second signal analyzing unit151bsearches through items of the “key” in the third table140cand determines whether any header name exists which has the identical character string to that of the extracted header name “Call-ID No” or not. The second signal analyzing unit151bmay determine that the identical character string to that of the extracted header name “Call-ID No” does not exist in the items of the “key” in the third table140c. In the same manner, the second signal analyzing unit151bmay determine that “conTact” does not exist in the third table140c. The second signal analyzing unit151bthen transfers the received SIP signal to the third signal analyzing unit151c.

If the second signal analyzing unit151bdetermines that the source does not have the corresponding third table140c, the second signal analyzing unit151btransfers the received SIP signal to the third signal analyzing unit151c.

The second signal analyzing unit151bis a control unit which determines whether the designated header name exists in the third table140cor not if the first signal analyzing unit151adetermines that the header name designated by the application executing unit154does not exist in the first table140a. For example, if the second signal analyzing unit151bdetermines that the designated header name exists in the third table140c, the second signal analyzing unit151bextracts the header value corresponding to the designated header name from the analysis result object and transmits the extracted header value to the application executing unit154. If the second signal analyzing unit151bdetermines that the designated header name does not exist in the third table140c, the second signal analyzing unit151btransfers the header name to the third signal analyzing unit151c.

If the source stores the corresponding third table140cin a secondary storage device such as a file, the second signal analyzing unit151bmay read the corresponding third table140cfrom the secondary storage device to the source.

If the second signal analyzing unit151bdetermines that the header name is not stored in the third table140c, the third signal analyzing unit151cconverts the character string of the header name contained in the received signal to uppercase letters or lowercase letters. The third signal analyzing unit151cdetermines whether the identical character string to that of the converted header name is stored in the second table140bor not. If so, the third signal analyzing unit151cextracts the header value corresponding to the header name from the received signal. In other words, the third signal analyzing unit151cis a control unit which converts the character string of the extracted header name to lowercase letters or uppercase letters and determine whether the extracted header name exists in the second table140bor not. For example, the third signal analyzing unit151cmay convert the character string of the received header name to lowercase letters and determines whether the header name of the converted character string exists in the second table140bor not.

If the third signal analyzing unit151cdetermines that the header name having the converted character string does not exist in the second table140b, the third signal analyzing unit151cextracts the corresponding header value from the header name of the character string and creates an analysis result object. On the other hand, if the third signal analyzing unit151cdetermines that the identical character string to that of the header name contained in the received signal is stored in the second table140b, the third signal analyzing unit151cstores the header name to the third table140c. The third signal analyzing unit151cmay search through the analysis result objects to determine whether the header name analysis has finished or not. Thus, the third signal analyzing unit151cmay extract the header name which has not been analyzed yet and analyze the extracted header name.

More specifically, the third signal analyzing unit151cmay search through analysis result objects and extracts the header names “Call-ID No” and “conTact” which are determined as not being stored in the first table140aand third table140c.

The third signal analyzing unit151cconverts the character string of the extracted header name “Call-ID No” to “call-id no”. The third signal analyzing unit151csearches through items of the “key” in the second table140band determines whether any header name having the identical character string to that of the header name having the converted character string “call-id no” exists or not. The third signal analyzing unit151cmay determine that the items of the “key” in the second table140bdo not include the identical character string to the converted character string “call-id no” of the header name. In this case, for “call-id no”, the third signal analyzing unit151cextracts the corresponding header value “07d902120e270600f0@123.456.789.012” from the received signal. The third signal analyzing unit151cstores the header name “call-id no” resulting from the conversion of the character string to lowercase letters and the header value “07d902120e270600f0@123.456.789.012” in association to the analysis result object.

The third signal analyzing unit151cfurther converts the character string of the extracted header name “conTact” to “contact”. The third signal analyzing unit151csearches through items of the “key” in the second table140band determines whether any header name having the identical character string to the converted character string “contact” of the header name exists or not. The third signal analyzing unit151cmay then determine that the item “contact” of the “key” in the second table140band the header name “contact” having the converted character string have the identical character string.

Next, the third signal analyzing unit151cextracts a defined header name “Contact” from the items of the “defined header name” corresponding to the item “contact” of the “key” in the second table140b. The third signal analyzing unit151cthen extracts from the received signal the header value “<sip:abc@123.456.789.012:35070>” corresponding to the extracted header name “conTact”. The third signal analyzing unit151bstores the defined header name “Contact” and the header value “<sip:abc@123.456.789.012:35070>” in association to the analysis result object. The analysis result object created after the storage by the third signal analyzing unit151cis illustrated inFIG. 12.FIG. 12illustrates an example of the analysis result object created by the signal analyzing unit151. The third signal analyzing unit151cstores, as illustrated inFIG. 11, information having correspondence between the header name “conTact” of a received SIP signal and the header name “Contact” of the defined character string to the third table140c.FIG. 11illustrates an example of information stored in the third table by the signal analyzing unit.

The third signal analyzing unit151cconverts the character string of a designated header name to lowercase letters or uppercase letters and determines whether the designated header name exists in the second table140bor not. For example, the third signal analyzing unit151cmay convert the character string of a designated header name to lowercase letters and determine whether the header name having the converted character string exists in the second table140bor not. If the third signal analyzing unit151cdetermines that the header name having the converted character string exists in the second table140b, the third signal analyzing unit151cextracts the defined header name corresponding to the designated header name. The third signal analyzing unit151cextracts the header value corresponding to the defined header name from the analysis result object and transmits the extracted header value to the application executing unit154. On the other hand, if the third signal analyzing unit151cdetermines that the header name having the converted character string does not exist in the second table140b, the third signal analyzing unit151cextracts the header value corresponding to the header name having the converted character string from the analysis result object. The third signal analyzing unit151cthen transmits the extracted header value to the application executing unit154.

The third signal analyzing unit151cmay save the third table140cto a secondary storage device at a proper time such as the end of related communication. For example, the secondary storage device may be a “portable physical medium” to be inserted to the SIP server100, such as a flexible disk (FD), a CD-ROM, an MO disk, a DVD disk, a magneto-optical disk, and an IC card.

The transaction management unit152is a control unit which manages a processing state of a transaction. For example, the transaction management unit152extracts a “transaction type”, a “session start time” and a “state” from a request signal which requests a process and a response signal which responds thereto and writes them to the transaction management table140e.

The dialog management unit153is a control unit which manages the connection relationship between connected terminals and may manage information on, for example, a call state between the client terminal200and the client terminal300. For example, the dialog management unit153may extract information on the “Call-Id”, “From” and “To” from headers contained in the signal and creates a dialog management table140f.

The application executing unit154is a control unit which executes an application on the connected client terminal200and client terminal300. For example, the application executing unit154reads an application stored in the storage unit140and executes a process defined by the application on the connected client terminals. The application executing unit154further uses an API to designate a header name to the signal analyzing unit151and acquires the header value corresponding to the designated header name.

The signal generating unit155is a control unit which generates a signal and transfers the generated signal to the signal transmitting unit120. For example, the signal generating unit155may generate a new signal by updating the header of a received SIP signal. The signal generating unit155generates a new signal from the process executed by the application executing unit154.

[Processing Routine of Header Processing on SIP Signal by SIP Server100]

With reference toFIG. 13, a processing routine of header processing by the SIP server100will be described.FIG. 13is a flowchart illustrating a processing routine of SIP signal analysis processing by the signal analyzing unit when a SIP signal is received. As illustrated inFIG. 13, in the SIP server100, if the signal receiving unit110determines that a SIP signal is received (step S101, Yes), the signal receiving unit110transfers the received SIP signal to the first signal analyzing unit151a. The first signal analyzing unit151aextracts a header name from the received SIP signal (step S102) and determines whether the extracted header name exists in the first table140aor not (step S103). If the first signal analyzing unit151adetermines that the extracted header name exists in the first table140a(step S103, Yes), the first signal analyzing unit151aanalyzes the header value corresponding to the header name (step S104). The first signal analyzing unit151athen stores the analysis result to the analysis result object (step S105).

On the other hand, if the first signal analyzing unit151adetermines that the extracted header name does not exist in the first table140a(step S103, No), the first signal analyzing unit151atransfers the received SIP signal to the second signal analyzing unit151b. The second signal analyzing unit151bidentifies the source from the SIP signal (step S106) and determines whether the third table140ccorresponding to the identified source exists in the secondary storage device or not (step S107). If the second signal analyzing unit151bdetermines that the third table140ccorresponding to the source does not exist in the secondary storage device (step S107, No), the second signal analyzing unit151btransfers the received SIP signal to the third signal analyzing unit151c. The third signal analyzing unit151cextracts a header name from the received SIP signal and converts the character string of the extracted header name to lowercase letters (step S112).

If the second signal analyzing unit151bdetermines that the third table140ccorresponding to the identified source exist on the secondary storage device (step S107, Yes), the second signal analyzing unit151breads the information in the third table140cto memory (step S108). The second signal analyzing unit151bthen extracts a header name from the received SIP signal and determines whether the extracted header name exists in the third table140cor not (step S109). If the second signal analyzing unit151bdetermines here that the extracted header name exists in the third table140c(step S109, Yes), the second signal analyzing unit151banalyzes the header value corresponding to the header name (step S110). The second signal analyzing unit151bthen stores the analysis result to the analysis result object (step S111).

On the other hand, if the second signal analyzing unit151bdetermines that the extracted header name does not exist in the third table140c(step S109, No), the second signal analyzing unit151btransfers the received SIP signal to the third signal analyzing unit151c. The third signal analyzing unit151cextracts the header name from the received SIP signal and converts the character string of the extracted header name to lowercase letters (step S112).

The third signal analyzing unit151cdetermines whether the header name having the character string converted to lowercase letters exists in the second table140bor not (step S113). If the third signal analyzing unit151cdetermines here that the corresponding header name exists in the second table140b(step S113, No), the third signal analyzing unit151cstores the analysis result to the analysis result object (step S114).

On the other hand, if the third signal analyzing unit151cdetermines that the header name having the character string converted to lowercase letters exists in the second table140b(step S113, Yes), the third signal analyzing unit151cextracts the corresponding header value (step S115) and stores the analysis result to the analysis result object (step S116). The third signal analyzing unit151cthen stores in the third table140cthe header name having the character string extracted from the header of the received SIP signal and the header name having the defined character string extracted from the second table140b(step S117).

[Processing Routine of Processing on Header Value Acquisition Request from Application Executing Unit154by SIP Server100]

With reference toFIG. 14, there will be described a processing routine of processing on a header value acquisition request from the application executing unit154by the SIP server100.FIG. 14illustrates a processing routine of processing on header value acquisition request from the application executing unit154by the SIP server100. As illustrated inFIG. 14, if the application executing unit154designates a header name (step S201, Yes), the first signal analyzing unit151adetermines whether the designated header name exists in the first table140aor not (step S202). If the first signal analyzing unit151adetermines that the designated header name exists in the first table140a(step S202, Yes), the first signal analyzing unit151aextracts the corresponding header value from the analysis result object and transmits it to the application executing unit154(step S203).

On the other hand, if the first signal analyzing unit151adetermines that the designated header name does not exist in the first table (step S202, No), the first signal analyzing unit151atransfers the designated header name to the second signal analyzing unit151b. The second signal analyzing unit151bidentifies the called party (step S204) and determines whether the third table140ccorresponding to the identified called party exists in the secondary storage device or not (step S205). If the second signal analyzing unit151bdetermines that the third table140ccorresponding to the called party does not exist in the secondary storage device (step S205, No), the second signal analyzing unit151btransfers the designated header name to the third signal analyzing unit151c. The third signal analyzing unit151cthen converts the character string of the designated header name to lowercase letters (step S209).

If the second signal analyzing unit151bdetermines that the third table140ccorresponding to the identified called party exists in the secondary storage device (step S205, Yes), the second signal analyzing unit151breads information in the third table140cto memory (step S206). The second signal analyzing unit151bthen determines whether the designated header name exists in the third table140cor not (step S207). If the second signal analyzing unit151bdetermines that the designated header name exists in the third table140c(step S207, Yes), the second signal analyzing unit151bextracts the corresponding header value from the analysis result object and transmits it to the application executing unit154(step S208).

On the other hand, if the second signal analyzing unit151bdetermines that the designated header name does not exist in the third table140c(step S207, No), the second signal analyzing unit151btransfers the designated header name to the third signal analyzing unit151c. The third signal analyzing unit151cconverts the character string of the designated header name to lowercase letters (step S209).

The third signal analyzing unit151cdetermines whether the header name having the character string converted to lowercase letters exists in the second table140bor not (step S210). If the third signal analyzing unit151chere determines that the corresponding header name does not exist in the second table140b(step S210, No), the third signal analyzing unit151cextracts the header value corresponding to the header name having the character string converted to lowercase letters from the analysis result object. The third signal analyzing unit151ctransmits the extracted header value to the application executing unit154(step S211).

On the other hand, if the third signal analyzing unit151cdetermines that the header name having the character string converted to lowercase letters exists in the second table (step S210, Yes), the third signal analyzing unit151cextracts the corresponding header value from the analysis result object. The third signal analyzing unit151ctransmits the extracted header value to the application executing unit154(step S212).

Effects of First Embodiment

As described above, according to the first embodiment, the first signal analyzing unit151aextracts a header name from the SIP signal received by the signal receiving unit110and determines whether the extracted header name exists in the first table140aor not. If the first signal analyzing unit151adetermines that the extracted header name does not exist in the first table140a, the first signal analyzing unit151atransfers the received SIP signal to the second signal analyzing unit151b. The second signal analyzing unit151bextracts the header name from the received SIP signal and determines whether the extracted header name exists in the third table140cor not. If the second signal analyzing unit151bdetermines that the extracted header name does not exist in the third table140c, the second signal analyzing unit151btransfers the received SIP signal to the third signal analyzing unit151c. The third signal analyzing unit151cextracts the header name from the received SIP signal and converts the character string of the extracted header name to lowercase letters. The third signal analyzing unit151cdetermines whether the character string converted to lowercase letters of the header name exists in the second table140bor not. If the third signal analyzing unit151cdetermines that the character string converted to lowercase letters of the header name exists in the second table140b, the third signal analyzing unit151cstores the character string of the defined header name extracted from the second table140band the character string of the header name of the received signal in association to the third table140c.

In other words, the SIP server100according to the embodiment stores a header name having a character string which is different from the character string under the SIP protocol in the third table140c. Thus, if the SIP server100receives SIP signal containing a header name having a character string which is different from the character string under the SIP protocol, the SIP server100may search through the third table140cfor a header name having a character string converted once to extract the header name having the defined character string. As a result, the SIP server100can efficiently perform signal header analysis processing.

Because the SIP server100according to the embodiment is not required to re-convert the character string converted once of a header name, the frequency of occurrence of a throw-away character string object can be reduced when Java (registered trademark) language is implemented. As a result, because the SIP server100can reduce the frequency of occurrence of garbage collection, the processing performance of the SIP server can be improved.

The SIP server100according to the embodiment can store a third table140ccreated for each source to a secondary storage device. Thus, the memory leak can be avoided. As a result, the SIP server100can improve the efficiency of use of memory.

Other Embodiments

A SIP server disclosed by the subject application may be implemented in various different forms alternatively to the aforementioned embodiment. An information processing apparatus disclosed by the subject application according to other embodiments will be described.

All or a part of processes described as being performed automatically of processes according to the aforementioned embodiment may also be performed manually. Alternatively, all or a part of processes described as being performed manually may be performed automatically by a publicly known method. In addition, the described and/or illustrated processing routines, control routines, and/or specific names may be changed arbitrarily unless otherwise indicated.

The illustrated components are functional and conceptual and may not typically be required to configure physically as illustrated. For example, the signal receiving unit110and the first signal analyzing unit151amay be integrated. All or an arbitrary part of processing functions to be performed in apparatuses may be implemented by a CPU or a program to be analyzed and executed by the CPU or may be implemented by hardware with a wired logic. The information stored in the illustrated storage units are given for illustration purpose only, and the information is not typically required to store as illustrated.

Having described according to the aforementioned embodiment that the server is a SIP server, the server is not limited to a SIP server. For example, the server may be an HTTP (Hyper Text Transfer Protocol) server if it performs analysis processing on a header given to a packet.

The processes described according to the aforementioned embodiment may be implemented by causing a computer system such as a personal computer and a workstation to execute a prepared program. Hereinafter, there will be described an example of the computer system which executes a program having the same function as that of the aforementioned embodiment.

FIG. 15illustrates a computer system which executes a signal analysis program. As illustrated inFIG. 15, a computer system500includes a RAM510, a ROM530, and a CPU520. The ROM530prestores a program which implements the same function as that of the aforementioned embodiment. In other words, as illustrated inFIG. 15, the ROM530prestores a first signal analysis program531, a second signal analysis program532, and a third signal analysis program533.

The CPU520reads the program531to533and expands them to the RAM510. The CPU520executes the first signal analysis program531as a first signal analysis process521. The CPU520executes the second signal analysis program532as a second signal analysis process522and executes the third signal analysis program533as a third signal analysis process523. The first signal analysis process521corresponds to the first signal analyzing unit illustrated inFIG. 2. The second signal analysis process522corresponds to the second signal analyzing unit. The third signal analysis process523corresponds to the third signal analyzing unit.

The programs531to533may not typically be required to store in the ROM530. For example, they may be stored in a “portable physical medium” to be inserted to the computer system500, such as a flexible disk (FD), a CD-ROM, an MO disk, a DVD disk, a magneto-optical disk, and an IC card. Alternatively, they may be stored in a “fixed physical medium” to be provided internally or externally to the computer system500such as a hard disk drive (HDD). They may be stored in “other computer systems” connected to the computer system500through a public switched line, the Internet, a LAN (Local Area Network), and a WAN (Wide Area Network). The computer system500then may read and execute the programs.

In other words, programs according to other embodiments may be stored in a computer-readable manner in a recording medium such as a “portable physical medium”, a “fixed physical medium”, and a “communication medium” as described above. The computer system500may implement the same functions as those of the aforementioned embodiments by reading and executing programs from a recording medium as described above. The programs according to other embodiments are not limited to those to be executed by the computer system500. For example, the present invention is also applicable to cases where another computer system or server executes a program or a combination of them execute a program.