Patent Document

CROSS-REFERENCE TO RELATED APPLICATION 
       [0001]    This application is based upon and claims the benefit of priority of the prior Japanese Patent Application No. 2016-072321, filed on Mar. 31, 2016, the entire contents of which are incorporated herein by reference. 
       FIELD 
       [0002]    A certain aspect of embodiments described herein relates to a non-transitory computer readable recording medium, a communication method and a communication device. 
       BACKGROUND 
       [0003]    Recently, as a result that wireless access points (hereinafter referred to as “AP”) have been spread, it is natural that the terminals such as smartphones communicate with the other parties while changing the wireless APs and wide area wireless connection of a communication carrier. In such an environment, a communication condition is influenced by the connection number of terminals using a same wireless medium and a neighboring radio wave circumstance, so that a communication quality varies according to a place and time, and the communication becomes intermittent. 
         [0004]    For example, when a user&#39;s terminal communicates with a server on the internet while changing an AP to be linked during the movement, if there is a large amount of data of the communication and a staying time of the terminal within a link available range of the AP is short, the communication during the connection is disconnected on the way and hence retrial of the communication is needed after re-link with another AP. 
         [0005]    In contrast, it is considered to provide an application of the terminal with a resistance to delay and disruption of the communication (see e.g. Patent Document 1: Japanese National Publication of International Patent Application No. 2015-528222). There is known a Delay/Disruption Tolerant Networking (DTN) as a technique enabling smooth communication in the environment where the communication becomes intermittent. The standardization of this technique is promoted by IETF (The Internet Engineering Task Force), and a bundle protocol to be applied to the DTN is specified in RFC (Request For Comments) 5050, for example. 
       SUMMARY 
       [0006]    According to an aspect of the present invention, there is provided a non-transitory computer readable recording medium storing therein a communication program, the communication program relaying communication from an application operating on a terminal to a communication destination and causing a computer to execute a process, the process including: switching a communication protocol for the communication from a first protocol to a Delay/Disruption Tolerant Networking (DTN) protocol in accordance with a connection condition with the communication destination for the communication; and notifying the terminal of a failure of a specific communication in cases when the specific communication has been notified to the application as completed and the specific communication in the DTN protocol results in failure. 
         [0007]    The object and advantages of the invention will be realized and attained by means of the elements and combinations particularly pointed out in the claims. It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory and are not restrictive of the invention, as claimed. 
     
    
     
       BRIEF DESCRIPTION OF DRAWINGS 
         [0008]      FIG. 1  is a block diagram illustrating an example of a terminal; 
           [0009]      FIG. 2  is a block diagram illustrating an example of a server; 
           [0010]      FIG. 3  is a block diagram illustrating an example of each functional configuration of the terminal and the server; 
           [0011]      FIG. 4A  is a diagram illustrating a format of a primary bundle block included in a bundle; 
           [0012]      FIG. 4B  is a diagram illustrating a format of a bundle payload block included in the bundle; 
           [0013]      FIG. 5A  is a diagram illustrating an example of a connection list; 
           [0014]      FIG. 5B  is a diagram illustrating an example of a filter table; 
           [0015]      FIG. 5C  is a diagram illustrating an example of a bundle buffer; 
           [0016]      FIG. 6  is a diagram illustrating an example of protocol conversion; 
           [0017]      FIG. 7  is a flowchart illustrating an example of data transmission processing by a client application; 
           [0018]      FIG. 8  is a flowchart illustrating an example of transmission processing of the bundle; 
           [0019]      FIG. 9  is a flowchart illustrating an example of reception processing of the bundle; 
           [0020]      FIG. 10  is a flowchart illustrating an example of switching processing of application of a bundle protocol; 
           [0021]      FIG. 11A  is a diagram illustrating a bundle communication using a plurality of communication lines according to a comparative example; 
           [0022]      FIG. 11B  is a diagram illustrating the bundle communication using the plurality of communication lines according to an embodiment; 
           [0023]      FIG. 12  is a flowchart illustrating an example of optimization processing of the bundle communication; 
           [0024]      FIG. 13  is a flowchart illustrating an example of notification processing; 
           [0025]      FIGS. 14A and 14C  are diagrams illustrating initial setting files of a communication operation example 1; 
           [0026]      FIGS. 14B and 14D  are diagrams illustrating route tables of the communication operation example 1; 
           [0027]      FIG. 15  is a diagram illustrating the communication operation example 1; 
           [0028]      FIG. 16  is a diagram illustrating the communication operation example 1; 
           [0029]      FIG. 17  is a diagram illustrating the communication operation example 1; 
           [0030]      FIG. 18  is a diagram illustrating the communication operation example 1; 
           [0031]      FIG. 19  is a diagram illustrating the communication operation example 1; 
           [0032]      FIG. 20  is a diagram illustrating a use example of a forwarding notification; 
           [0033]      FIGS. 21A and 21C  are diagrams illustrating initial setting files of a communication operation example 2; 
           [0034]      FIGS. 21B and 21D  are diagrams illustrating route tables of the communication operation example 2; 
           [0035]      FIG. 22  is a diagram illustrating the communication operation example 2; and 
           [0036]      FIGS. 23A to 23C  are diagrams illustrating examples of a screen of a web browser. 
       
    
    
     DESCRIPTION OF EMBODIMENTS 
       [0037]    The bundle protocol is assumed to be applied to the communication having no real time as premises for the delay, like a communication under a special environment such as an outer space and an ocean essentially. Therefore, it is difficult to directly use the bundle protocol for a general application. Accordingly, to use the bundle protocol in the communication of the general application, it is considered to use a proxy function communicating based on the bundle protocol. 
         [0038]    However, when the proxy function is used, even if the data transmission fails on the bundle protocol, the proxy function causes the application to recognize the failure of the data transmission as having succeeded in communication, and hence it is difficult for the user to grasp a communication result. Moreover, since a timer expiration time for judging the communication propriety is longer than other protocols in the bundle protocol, it is difficult to use a normal error detection means. 
         [0039]      FIG. 1  is a block diagram illustrating an example of a terminal. A communication device such as a smartphone and a personal computer is referred to as a terminal  1 , for example, but the terminal  1  is not limited to this. 
         [0040]    The terminal  1  includes a CPU (Central Processing Unit)  10 , a ROM (Read Only Memory)  11 , a RAM (Random Access Memory)  12 , a storage unit  13  such as a HDD (Hard Disk Drive) and a memory, a wireless LAN (Local Area Network) module  14 , an input unit  15 , and a display unit  16 . The CPU  10  is connected to the ROM  11 , the RAM  12 , the storage unit  13 , the wireless LAN module  14 , the input unit  15  and the display unit  16  via a bus  19  so as to be capable of inputting and outputting signals each other. 
         [0041]    A program for driving the CPU  10  is stored into the ROM  11 . A communication program executing a communication method of the embodiment is included in programs in the ROM  11 . 
         [0042]    The RAM  12  functions as a working memory of the CPU  10 . Various information that is used for the execution of the program is stored into the storage unit  13 . The wireless LAN module  14  communicates with a server on an internet by performing link-up with an AP (Access Point) connected to an access system network, for example. The wireless LAN module  14  can perform the link-up with the AP by using a plurality of communication lines. 
         [0043]    The input unit  15  inputs information to the terminal  1 . A keyboard, a mouse, a touch panel or the like is referred to as the input unit  15 , for example. The input unit  15  outputs input information to the CPU  10  via the bus  19 . 
         [0044]    The display unit  16  outputs information of the terminal  1 . A display, a touch panel, a printer or the like is referred to as the display unit  16 , for example. The display unit  16  acquires information from the CPU  10  via the bus  19  to display the acquired information. A status and a result of the communication of a client application in the terminal  1  described later are displayed on the display unit  16 . 
         [0045]    When the CPU  10  reads the program from the ROM  11 , various functions for executing the communication method are formed. The CPU  10  is an example of a computer executing the program. Here, a functional configuration of the terminal  1  is described later. 
         [0046]      FIG. 2  is a block diagram illustrating an example of a server  2 . The server  2  is a communication device that is connected to the internet, and provides a predetermined service by communicating with the terminal  1 , for example. 
         [0047]    The server  2  includes a CPU  20 , a ROM  21 , a RAM  22 , a HDD  23  and a communication port  24 . The CPU  20  is connected to the ROM  21 , the RAM  22 , the HDD  23  and the communication port  24  via a bus  29  so as to be capable of inputting and outputting signals each other. 
         [0048]    A program for driving the CPU  20  is stored into the ROM  21 . The RAM  22  functions as a working memory of the CPU  20 . The communication port  24  is a NIC (Network Interface Card), for example, and communicates with the terminal  1  via the internet. 
         [0049]    When the CPU  20  reads the program from the ROM  21 , various functions are formed. 
         [0050]      FIG. 3  is a block diagram illustrating an example of each functional configuration of the terminal  1  and the server  2 . The terminal  1  and the server  2  are connected to each other via a network NW. 
         [0051]    The terminal  1  includes an application function unit  100 , a proxy protocol function unit  110 , a bundle controlling unit  120 , a condition notification unit  121 , a bundle buffer  122 , and a route table (route TBL)  123 . 
         [0052]    The application function unit  100  includes a client application (ARLc)  101  and a TCP (Transmission Control Protocol) processing unit  102 . The proxy protocol function unit  110  includes a proxy controlling unit  111 , a connection monitoring unit  112 , an address conversion unit  113 , a transmission and reception controlling unit  114 , a response controlling unit  115 , a connection list  116 , an initial setting file  117 , and a filter table (filter TBL)  118 . 
         [0053]    The client application  101 , the TCP processing unit  102 , the proxy controlling unit  111 , the connection monitoring unit  112 , the address conversion unit  113 , the transmission and reception controlling unit  114 , the response controlling unit  115 , the bundle controlling unit  120  and the condition notification unit  121  are functions formed in the CPU  10  of the terminal  1 . Then, the connection list  116 , the initial setting file  117 , the filter TBL  118 , the bundle buffer  122  and the route TBL  123  are stored into the storage unit  13 . 
         [0054]    Parts other than the application function unit  100  in the functional configuration of the terminal  1  illustrated in  FIG. 3  serve as a communication device and a communication program of the embodiment, and relay communication from the client application  101  to a communication destination. The communication device and the communication program of the embodiment may be provided inside the terminal  1  as illustrated in  FIG. 3 , but may be provided in a device other than the terminal  1 . 
         [0055]    On the other hand, the server  2  includes an application function unit  200 , a proxy protocol function unit  210 , a bundle controlling unit  220 , a condition notification unit  221 , a bundle buffer  222  and a route TBL  223 . 
         [0056]    The application function unit  200  includes a server application (ARLs)  201  and a TCP (Transmission Control Protocol) processing unit  202 . The proxy protocol function unit  210  includes a proxy controlling unit  211 , a connection monitoring unit  212 , an address conversion unit  213 , a transmission and reception controlling unit  214 , a response controlling unit  215 , a connection list  216 , an initial setting file  217 , and a filter TBL  218 . 
         [0057]    The server application  201 , the TCP processing unit  202 , the proxy controlling unit  211 , the connection monitoring unit  212 , the address conversion unit  213 , the transmission and reception controlling unit  214 , the response controlling unit  215 , the bundle controlling unit  220  and the condition notification unit  221  are functions formed in the CPU  20  of the server  2 . Then, the connection list  216 , the initial setting file  217 , the filter TBL  218 , the bundle buffer  222  and the route TBL  223  are stored into the HDD  23 . 
         [0058]    The server application  201  and the client application  101  cooperate and offer predetermined functions by communicating by the TCP processing units  102  and  202 . A file transfer function, a web browser function and so on are referred to as the functions of the server application  201  and the client application  101 , but the functions of the server application  201  and the client application  101  are not limited to the above-mentioned functions. Here, the client application  101  is an example of an application executed in the terminal  1 . 
         [0059]    Each of the TCP processing units  102  and  202  includes a communication function of a TCP/IP (Internet Protocol) that is offered by a driver of an OS (Operating System), for example. The TCP processing unit  102  of the terminal  1  controls the wireless LAN module  14  to transmit and receive packets. The TCP processing unit  202  of the server  2  controls the communication port  24  to transmit and receive packets. Here, the TCP/IP is an example of a first protocol. 
         [0060]    The server application  201  and the client application  101  directly perform communication based on the TCP/IP via the network NW. However, in an environment where the communication becomes intermittent, the bundle controlling units  120  and  220  perform communication based on a bundle protocol of DTN (Delay/Disruption Tolerant Networking) as substitute for communication based on the TCP/IP. 
         [0061]    The bundle controlling unit  120  switches a communication protocol between the client application  101  and the communication destination from the TCP/IP to the bundle protocol of the DTN in accordance with a connection condition with the communication destination. At this time, the connection monitoring unit  112  monitors the connection condition with the communication destination, and controls the address conversion unit  113  in accordance with the connection condition. 
         [0062]    Thereby, the connection monitoring unit  112  switches the communication protocol of the client application  101  with the communication destination from the TCP/IP to the bundle protocol of the DTN, as an example of a switch processor. Therefore, the communication protocol of the client application  101  is switched from the TCP/IP by the TCP processing unit  102  to the bundle protocol by the bundle controlling unit  120 . 
         [0063]    Moreover, the bundle controlling unit  220  switches the communication protocol between the server application  201  and the communication destination from the TCP/IP to the bundle protocol of the DTN in accordance with the connection condition with the communication destination. At this time, the connection monitoring unit  212  monitors the connection condition with the communication destination, and controls the address conversion unit  213  in accordance with the connection condition. 
         [0064]    Thereby, the connection monitoring unit  212  switches the communication protocol of the server application  201  with the communication destination from the TCP/IP to the bundle protocol of the DTN. Therefore, the communication protocol of the server application  201  is switched from the TCP/IP by the TCP processing unit  202  to the bundle protocol by the bundle controlling unit  220 . 
         [0065]    The bundle controlling units  120  and  220  perform the communication based on the bundle protocol according to a rule of RFC5050, for example. The bundle controlling units  120  and  220  accommodate transmission object data of the client application  101  and the server application  201  into a payload part of a data message called a bundle to transmit the data message. Here, the bundle controlling unit  120  is an example of a communication unit that communicates with the communication destination by the bundle protocol. 
         [0066]      FIG. 4A  illustrates a format of a primary bundle block included in the bundle, and  FIG. 4B  illustrates a format of a bundle payload block included in the bundle. The bundle includes the primary bundle block and the bundle payload block. Included in the primary bundle block are information on a transmission source and a destination, a life time (“Lifetime”) indicating a time before the deletion of the bundle and so on. A payload (“Bundle Payload”) accommodating data is included in the bundle payload block. Each field in the bundle is defined in the RFC5050. 
         [0067]    When each of the bundle controlling units  120  and  220  transmits the bundle, each of the bundle controlling units  120  and  220  acquires a destination IP address on the TCP/IP corresponding to an EID (Endpoint ID) indicating a destination in the bundle protocol, and a TCP port number (hereinafter referred to as “a port number”) with reference to the corresponding route TBL  123  or  223 . When the connection with the destination, i.e., the connection between the terminal  1  and the server  2  is disconnected, each of the bundle controlling units  120  and  220  stores the bundle into the corresponding bundle buffer  122  or  222 . When the disconnected connection is reconnected, each of the bundle controlling units  120  and  220  reads the bundle from the bundle buffer  122  or  222  to transmit the bundle to the destination. Thereby, the communication based on the DTN is performed. In the case of the terminal  1 , the bundle controlling unit  120  transmits and receives the bundle by controlling the wireless LAN module  14 . In the case of the server  2 , the bundle controlling unit  220  transmits and receives the bundle by controlling the communication port  24 . 
         [0068]      FIG. 5C  illustrates an example of the bundle buffers  122  and  222 . The bundle buffers  122  and  222  are storage domains of the bundle. The bundle is stored into the bundle buffer  122  or  222  along with a bundle ID identifying the bundle. Each of the bundle controlling units  120  and  220  stores the bundle into the corresponding bundle buffer  122  or  222  at the time of not only the transmission but also the reception of the bundle. 
         [0069]    Referring to  FIG. 3  again, each of the proxy protocol function units  110  and  210  converts the communication of the client application  101  and the server application  201  from the communication of the TCP to the communication of the bundle protocol. At this time, each of the proxy protocol function units  110  and  210  performs setting and control to the corresponding bundle controlling unit  120  or  220  by a bundle API (Application Programing Interface), so that even a general application can use the DTN. Hereinafter, a description will be given of the proxy protocol function units  110  and  210  in detail. 
         [0070]    The address conversion units  113  and  213  convert the destinations of the communication of the client application  101  and the server application  201  into the destinations of the transmission and reception controlling units  114  and  214 , respectively. For example, in the terminal  1 , the address conversion unit  113  converts the destination IP address and the port number of the packet to be transmitted to the server  2  into the destination IP address and the port number of a TCP socket (hereinafter referred to as “a socket”) set in the transmission and reception controlling unit  114 . 
         [0071]    Therefore, the proxy protocol function units  110  and  210  can receive the packet transmitted from the client application  101  and the server application  201  to the communication destination, respectively. For example, when Windows is used as the OS, the address conversion units  113  and  213  are realized by a WFP (Windows Filtering Platform). When Linux is used as the OS, the address conversion units  113  and  213  are realized by “iptables”. 
         [0072]    Each of the transmission and reception controlling units  114  and  214  terminates socket communication of the TCP of the client application  101  and the server application  201 . Each of the transmission and reception controlling units  114  and  214  establishes local loop-back connection in the device. 
         [0073]    The transmission and reception controlling unit  114  monitors connection of the socket from the client application  101 , establishes the socket for the server application  201  in accordance with an instruction from the proxy controlling unit  111 , and transmits data to the instructed socket. 
         [0074]    The transmission and reception controlling units  114  and  214  divide the packet received from the client application  101  and the server application  201  through the socket into a designated size in accordance with a policy (an algorithm, a processing policy) set by a user or an operator, and output divided data to the proxy controlling units  111  and  211 , respectively. A division size is a size of data received from the open of the socket to the close thereof, a received size of the packet, or a predetermined value, for example. 
         [0075]    The proxy controlling units  111  and  211  accommodate data of the packet received by the transmission and reception controlling units  114  and  214  into the payload of a proxy message, and output the proxy message to the bundle controlling units  120  and  220  by the bundle API, respectively. Thereby, the proxy controlling units  111  and  211  request the transmission of the bundle to the bundle controlling units  120  and  220 , respectively. 
         [0076]    Each of the proxy controlling units  111  and  211  manages the proxy message according to a connection number corresponding to the destination. Whenever the socket is opened by the transmission and reception controlling units  114  and  214 , the proxy controlling units  111  and  211  register a new connection number into the connection lists  116  and  216 , respectively. 
         [0077]      FIG. 5A  illustrates an example of the connection lists  116  and  216 . The connection number, a socket channel ID and a destination EID are associated with each other and registered into the connection lists  116  and  216 . The socket channel ID is an identifier of the socket of the transmission and reception controlling units  114  and  214 . 
         [0078]    The proxy controlling units  111  and  211  add the connection number corresponding to the socket channel ID of the socket in a reception source of the packet to the proxy message, and output the proxy message with the connection number to the bundle controlling units  120  and  220 , respectively. The proxy controlling units  111  and  211  request the transmission of the bundle for the corresponding destination EID to the bundle controlling units  120  and  220 , respectively. Therefore, the EID of the server  2  is registered into the destination EID of the connection list  116  of the terminal  1 , and the EID of the terminal  1  is registered into the destination EID of the connection list  216  of the server  2 . The proxy controlling units  111  and  211  acquire information necessary for the communication such as the EID of its own device and the EID of the communication destination by reading the initial setting files  117  and  217 , respectively. 
         [0079]    The proxy controlling units  111  and  211  receive the proxy message from the bundle controlling units  120  and  220 , respectively. When the connection number of the received proxy message is not registered into the connection lists  116  and  216 , the proxy controlling units  111  and  211  instruct the transmission and reception controlling units  114  and  214  to open the new socket, and begin the communication with the use of the new socket, respectively. 
         [0080]    When data is not accommodated into the received proxy message, the proxy controlling units  111  and  211  search the socket channel ID corresponding to the connection number from the connection lists  116  and  216 , respectively. The proxy controlling units  111  and  211  instruct the transmission and reception controlling units  114  and  214  to delete the socket corresponding to the searched socket channel ID, respectively. 
         [0081]    Thus, the socket and the EID are associated with each other and managed by the connection lists  116  and  126 . Therefore, the communication of the TCP/IP using the socket can be performed based on the bundle protocol. 
         [0082]    The bundle controlling units  120  and  220  transmit the bundle in accordance with a transmission request of the bundle from the proxy controlling units  111  and  211 , respectively. Therefore, the bundle controlling units  120  and  220  can perform the communication from the client application  101  and the server application  201  to the communication destination based on a protocol of the DTN. 
         [0083]    When the communication from the client application  101  and the server application  201  requests a response, the response controlling units  115  and  215  generate the response to output the response to the client application  101  and the server application  201 , respectively. Therefore, even when the communication with the communication destination is disrupted due to the disconnection of the connection, the client application  101  and the server application  201  operate without knowing the disruption of the communication. Accordingly, the retrial of the communication is not needed after reconnection of the connection. 
         [0084]    For example, in the terminal  1 , when the proxy controlling unit  111  performs the communication of the client application  101 , the response controlling unit  115  outputs the response to the communication to the client application  101 . When a file is divided and divided file data is transferred from the client application  101  to the server application  201 , the response controlling unit  115  of the terminal  1  prompts the client application  101  to transmit next file data instead of the server application  201 , as a response. 
         [0085]    That is, the response controlling units  115  and  215  notify the client application  101  and the server application  201  of the completion of the communication, respectively. For this reason, the client application  101  and the server application  201  recognize that the communication has succeeded without knowing a result of the communication based on the bundle protocol of the bundle controlling units  120  and  220 . 
         [0086]    Therefore, the condition notification units  121  and  221  notify the user of communication information on the condition and the result of the communication by pop-up display to the screen and logs, for example. More specifically, the condition notification unit  121  of the terminal  1  outputs the communication information to the display unit  16  or writes into the storage unit  13  a log file in which the communication information is recorded. The condition notification unit  221  of the server  2  writes into the HDD  23  a log file in which the communication information is recorded. 
         [0087]    The proxy controlling units  111  and  211  instruct the condition notification units  121  and  221  to output a notification depending on the condition of the communication, respectively. The notification includes a reception notification indicating that the transmission request of the bundle is received from the proxy controlling units  111  and  211 , and a pending notification indicating that the transmission of the bundle is suspended to disconnect the connection with the communication destination. 
         [0088]    The proxy controlling units  111  and  211  instruct the condition notification units  121  and  221  to output a notification based on various reports from the bundle controlling units  120  and  220 , respectively. The notification includes a transfer failure notification based on a deletion report, a transfer completion notification based on a distribution report, and a transfer notification based on a forwarding report. Each of the proxy controlling units  111  and  211  determines whether the communication based on the bundle protocol has succeeded based on each report. 
         [0089]    When the lifetime (see  FIG. 4A ) of the bundle has expired or the bundle controlling units  120  and  220  have relayed the bundle from another device, each of the bundle controlling units  120  and  220  accommodates the deletion report into another bundle and transmits the another bundle to the another device which is the transmission source of the bundle. When the bundle controlling units  120  and  220  have completed the reception of the bundle, each of the bundle controlling units  120  and  220  accommodates the distribution report or the forwarding report into another bundle and transmits the another bundle to the transmission source of the bundle. The reports are mentioned later while referring to their examples. 
         [0090]    When each of the proxy controlling units  111  and  211  determines that the communication has failed, each of the condition notification units  121  and  221  notifies the user of the failure of the communication. When the communication completion to the communication destination has been notified to the client application  101  by the response controlling unit  115  and the communication according to the bundle protocol of the DTN has failed as a result of the determination of the proxy controlling unit  111 , the condition notification unit  121  notifies the terminal  1  of the failure of the communication. At this time, the failure of the communication is notified to the user as the pop-up display of the display unit  16  of the terminal  1  or logs stored into the storage unit  13  as mentioned later. As with the condition notification unit  121 , when the communication completion to the communication destination has been notified to the server application  201  by the response controlling unit  215  and the communication according to the bundle protocol of the DTN has failed as a result of the determination of the proxy controlling unit  211 , the condition notification unit  221  also notifies the server  2  of the failure of the communication. 
         [0091]    For this reason, even when the communication based on the bundle protocol is performed and the client application  101  and the server application  201  recognize that the communication has succeeded, the user can know the failure of the communication by the notification of the condition notification units  121  and  221 . Therefore, the user can easily grasp the communication result. Here, each of the condition notification units  121  and  221  is an example of a failure notification unit. 
         [0092]    The connection monitoring units  112  and  212  monitors the condition of the connection of the bundle controlling units  120  and  220 , respectively. The connection monitoring units  112  and  212  perform the connection in a state where the connection is disconnected. When the connection has succeeded, the connection monitoring units  112  and  212  instruct the bundle controlling units  120  and  220  to transmit the transmission object bundle in the bundle buffers  122  and  222 , respectively. 
         [0093]    The connection monitoring units  112  and  212  perform setting and deletion of conversion information to the address conversion units  113  and  213  in accordance with the condition of the connection, respectively. The connection monitoring units  112  and  212  set the conversion information based on the filter TBLs  118  and  218 , respectively. 
         [0094]      FIG. 5B  illustrates an example of the filter TBLs  118  and  218 . A filter condition of the packet, conversion information, and a setting state are associated with each other and registered into the filter TBLs  118  and  218 . The filter condition designates the transmission source of an address conversion object packet, the IP address of the destination, the port number and so on. The conversion information indicates a part of the packet to be rewritten meeting the filter condition, and a value of the part after rewriting. The setting state indicates the validity or invalidity of setting of the filter condition and the conversion information. 
         [0095]    The connection monitoring units  112  and  212  perform setting and deletion of the conversion information of the address conversion units  113  and  213  in accordance with the condition of the connection, respectively. Therefore, the bundle protocol is automatically applied to the communication of the client application  101  and the server application  201 . 
         [0096]    Thus, each of the connection monitoring units  112  and  212  detects the condition of the connection with the communication destination, and decides whether the bundle protocol is applicable to the communication of the client application  101  and the server application  201  in accordance with the condition of the connection. For this reason, the bundle protocol is used for the communication of the client application  101  and the server application  201  in accordance with the condition of the connection. 
         [0097]    When the communication becomes intermittent, the client application  101  and the server application  201  communicate by protocol-converting the TCP/IP with the use of the configuration mentioned above. 
         [0098]      FIG. 6  illustrates an example of the protocol conversion.  FIG. 6  illustrates the client application  101 , the proxy controlling unit  111  and the bundle controlling unit  120  in the terminal  1 , and the server application  201 , the proxy controlling unit  211  and the bundle controlling unit  220  in the server  2  from among the configuration illustrated in  FIG. 3 . 
         [0099]    The communication of the TCP/IP using the IP address and the port number is performed between the client application  101  and the server application  201 . Any socket SC 1  is opened in the client application  101 , and a fixed socket SC 6  is opened in the server application  201 . 
         [0100]    The communication according to a proxy protocol with the use of the connection number is performed between the proxy controlling units  111  and  211 . In the proxy controlling unit  111 , a socket SC 2  corresponding to the socket SC 6  of the server application  201  one-on-one is opened by the transmission and reception controlling unit  114 . In the proxy controlling unit  211 , a socket SC 5  corresponding to the socket SC 1  of the client application  101  one-on-one is opened by the transmission and reception controlling unit  214 . 
         [0101]    The communication by the sockets SC 1  and SC 2  is performed between the client application  101  and the proxy controlling unit  111 , and the communication by the sockets SC 5  and SC 6  is performed between the server application  201  and the proxy controlling unit  211 . For this reason, the transmission and reception controlling units  114  and  214  open and close the sockets SC 2  and SC 5  in accordance with the opening and closing of the respective sockets SC 1  and SC 6  of the client application  101  and the server application  201 , and transmit and receive data via the sockets SC 2  and SC 5 . 
         [0102]    The communication of the bundle protocol using the EID is performed between the bundle controlling units  120  and  220 . In the bundle controlling units  120  and  220 , the sockets SC 3  and SC 4  are opened, respectively. 
         [0103]    When the communication from the client application  101  to the server application  201  is performed, in the terminal  1 , the proxy controlling unit  111  converts the port number of the packet into the destination EID based on the initial setting file  117 , and the bundle controlling unit  120  converts the destination EID into the destination IP address and the port number based on the route TBL  123 . 
         [0104]    Moreover, in the server  2 , the bundle controlling unit  220  converts the destination EID into an output pointer mentioned later, and the proxy controlling unit  211  converts the output pointer into the destination IP address and the port number. In this way, the communication from the client application  101  to the server application  201  is performed. Hereinafter, a description will be given of processing executed in the communication. 
         [0105]      FIG. 7  is a flowchart illustrating an example of data transmission processing by the client application  101 . The proxy controlling unit  111  of the terminal  1  reads the initial setting file  117  as illustrated by a code G 1  (step St 1 ). An EID “dtn://node1” of the terminal  1 , and a port number “8001” for receiving the packet for the server application  201  of the communication destination by the TCP are written in the initial setting file  117 , as “TCP 13  PROXY_CLIENT”. 
         [0106]    Next, the proxy controlling unit  111  generates, in the transmission and reception controlling unit  114 , a socket for receiving the packet for the server application  201  from the client application  101  (step St 2 ). The above-mentioned port number “8001” or a loop-back IP address “127.0.0.1” is set to the socket. The client application  101  transmits the packet to the socket generated by the transmission and reception controlling unit  114  as substitute for the socket of the server application  201 . At this time, the destination IP address of the packet and the port number are converted by a predetermined setting or the address conversion unit  113 . 
         [0107]    Next, the transmission and reception controlling unit  114  determines whether the socket receives the packet (step St 3 ). When the packet is not received (No in step St 3 ), the determination process of step St 3  is performed again. 
         [0108]    When the packet is received (Yes in step St 3 ), the proxy controlling unit  111  determines whether the port number of the transmission source of the packet is new (step St 4 ). That is, the proxy controlling unit  111  determines whether the port number of the client application  101  is changed and the new channel is established. Here, when the packet is received by the socket, the transmission and reception controlling unit  114  detects the completion of the communication from the client application  101 , and outputs data of the receive packet to the proxy controlling unit  111  via the memory. 
         [0109]    When the port number of the transmission source is new (Yes in step St 4 ), the proxy controlling unit  111  registers a new connection number, a socket channel ID and a destination EID corresponding to the new connection number into the connection list  116  (step St 9 ). Moreover, when the port number of the transmission source is not new (No in step St 4 ), the proxy controlling unit  111  does not perform the processing of step St 9 . 
         [0110]    Next, the proxy controlling unit  111  generates the proxy message as illustrated by a code G 2  (step St 5 ). The connection number and the payload are included in the proxy message. The proxy controlling unit  111  accommodates data of the packet into the payload and adds the connection number searched from the connection list  116  to generate the proxy message. The proxy message is output to the bundle controlling unit  120  by the bundle API. 
         [0111]    Next, the response controlling unit  115  determines whether the response to the transmission object packet is necessary (step St 6 ). The response controlling unit  115  determines whether there is a response, not an ACK of the TCP, necessary for the continuation of the communication in the application level. 
         [0112]    When the response is necessary (Yes in step St 6 ), the response controlling unit  115  generates response data as substitute for the server application  201  based on a predetermined algorithm, and transmits the response data to the client application  101  (step St 7 ). That is, the response controlling units  115  and  215  notify the client application  101  and the server application  201  of the completion of the communication, respectively. For this reason, the client application  101  recognizes that the communication has succeeded even when the communication of the bundle protocol has failed, as described above. When the response is not necessary (No in step St 6 ), the response controlling unit  115  does not generate the response data. 
         [0113]    Next, the proxy controlling unit  111  requests the bundle controlling unit  120  to transmit the bundle by the bundle API (step St 8 ). The bundle controlling unit  120  generates the bundle from the proxy message to transmit the bundle. Thereby the bundle controlling units  120  and  220  perform the communication from the client application  101  and the server application  201  to the communication destination based on the protocol of the DTN. In this way, the data transmission processing of the client application  101  is performed. 
         [0114]      FIG. 8  is a flowchart illustrating an example of transmission processing of the bundle. When the transmission of the bundle is requested from the proxy controlling unit  111 , the bundle controlling unit  120  reads the route TBL  123  (step St 11 ). Next, the bundle controlling unit  120  generates the bundle of the destination EID corresponding to the destination IP address and the port number based on the route TBL  123  (step St 12 ). 
         [0115]    The bundle controlling unit  120  determines whether the connection with the communication destination depending on the destination EID is an establishment state (step St 14 ). When the connection is not the establishment state (No in step St 14 ), the bundle controlling unit  120  stores the bundle into the bundle buffer  122  (step St 13 ), and the processing of step St 14  is performed again. 
         [0116]    When the connection is the establishment state (yes in step St 14 ), the bundle controlling unit  120  transmits the bundle (step St 15 ). In this way, the transmission processing of the bundle is performed. 
         [0117]      FIG. 9  is a flowchart illustrating an example of reception processing of the bundle. The present processing is performed by the server  2 . 
         [0118]    The proxy controlling unit  211  reads the initial setting file  217  as illustrated by a code G 3  (step St 21 ). An EID “dtn://node1” of the server  2  is recorded in the initial setting file  217  as “COM_EID”, an output pointer “data/service” of the reception data of the server  2  is recorded in the initial setting file  217  as “TCP_PROXY_REGISTRATION”, and an IP address “192.168.1.1” and a port number “8001” of the server  2  are recorded in the initial setting file  217  as “ TCP_PROXY_SERVER”. 
         [0119]    Next, the proxy controlling unit  211  resisters the EID and the output pointer into the bundle controlling unit  220  with the use of the bundle API so that the bundle controlling unit  220  can receive the bundle from the client application  101  of the terminal  1  (step St 22 ). At this time, the proxy controlling unit  211  registers the EID and the output pointer designated respectively by the “COM_EID” and the “TCP_PROXY_REGISTRATION” of the initial setting file  217  into the bundle controlling unit  220 . Thereby, when the bundle controlling unit  220  receives the bundle, the bundle controlling unit  220  outputs the bundle to a designated directory of an output pointer “data/receive”. 
         [0120]    Next, the bundle controlling unit  220  determines whether the bundle is received (step St 23 ). When the bundle is not received (No in step St 23 ), the bundle controlling unit  220  performs the processing of step St 23  again. Moreover, when the bundle is received (Yes in step St 23 ), the bundle controlling unit  220  determines whether the destination EID of the bundle is identical with the EID registered in step St 22  (step St 24 ). 
         [0121]    When the destination EID of the bundle is not identical with the registered EID (No in step St 24 ), the bundle is not for the server  2  and the bundle controlling unit  220  discards the bundle to finish the processing. When the destination EID of the bundle is identical with the registered EID (Yes in step St 24 ), the bundle controlling unit  220  acquires data of the packet from the payload of the packet, generates the proxy message, and outputs the proxy message to the designated directory of the output pointer (step St 25 ). 
         [0122]    Next, the proxy controlling unit  211  acquires the proxy message with reference to the designated directory of the output pointer (step St 26 ). Next, the proxy controlling unit  211  determines whether the connection number of the proxy message is registered into the connection list  216  (step St 27 ). 
         [0123]    When the connection number is not registered (No in step St 27 ), the proxy controlling unit  211  instructs the transmission and reception controlling unit  214  to open the socket of the IP address and the port number designated by the “TCP_PROXY_SERVER” of the initial setting file  217  (step St 28 ). When the connection number is registered (Yes in step St 27 ), the proxy controlling unit  211  determines whether the data of the packet is accommodated into the payload of the proxy message (step St 30 ). 
         [0124]    When the data of the packet is accommodated (Yes in step St 30 ), the proxy controlling unit  211  transmits the data to a corresponding socket (step St 29 ). When the data of the packet is not accommodated (No in step St 30 ), the proxy controlling unit  211  instructs the transmission and reception controlling unit  214  to close the corresponding socket (step St 31 ). In this way, the reception processing of the bundle is performed. 
         [0125]    Thus, between the client application  101  and the server application  201 , the opening and closing of the socket are reproduced based on the operation of the application by the proxy protocol function units  110  and  210  independently of the presence or absence of the connection between the terminal  1  and the server  2 . For this reason, even when the connection between the client application  101  and the server application  201  is disconnected, the communication can be continued. 
         [0126]    As described above, the connection monitoring units  112  and  212  perform the setting or deletion of the conversion information of the address conversion units  113  and  213  in accordance with the condition of the connection, respectively. For this reason, the bundle protocol is automatically applied to the communication of the client application  101  and the server application  201 . 
         [0127]      FIG. 10  is a flowchart illustrating an example of switching processing of the application of the bundle protocol. Each of the connection monitoring units  112  and  212  detects the presence or absence of the connection with the communication detection (step St 41 ). 
         [0128]    The bundle controlling units  120  and  220  detect the link-up/link-down with a corresponding communication destination based on the destination IP addresses and the port numbers set in the route TBLs  123  and  223 , respectively, and detect the condition of the communication by a keep alive function. The connection monitoring units  112  and  212  acquire the detection result of the bundle controlling units  120  and  220 , respectively, or detect the condition of the connection by the controlling with the use of the bundle API. 
         [0129]    When the connection with the communication detection is detected (Yes in step St 41 ), the connection monitoring units  112  and  212  determine whether the bundles to be transmitted are stored into the bundle buffers  122  and  222 , respectively (step St 42 ). When there are no stored bundles (No in step St 42 ), each of the connection monitoring units  112  and  212  performs the processing of step St 41  again. 
         [0130]    When there are the stored bundles (Yes in step St 42 ), the connection monitoring units  112  and  212  determine whether there are the settings of the conversion information for the address conversion units  113  and  213  by referring to the setting states of the filter TBLs  118  and  218 , respectively (step St 43 ). When there are no settings of the conversion information (No in steps St 43 ), each of the connection monitoring units  112  and  212  finishes the processing. When there are settings of the conversion information (Yes in steps St 43 ), each of the connection monitoring units  112  and  212  deletes the conversion information (step St 44 ). 
         [0131]    Thereby, the transmission of the packets from the TCP processing units  102  and  202  to the sockets of the transmission and reception controlling units  114  and  214  is stopped. Therefore, the application of the bundle protocol is stopped for the communication between the client application  101  and the server application  201 , so that the direct communication of the TCP/IP is performed without passing through the proxy protocol function units  110  and  210 . 
         [0132]    On the other hand, when the connection is disconnected, i.e., the connection with the communication detection is not detected (No in step St 41 ), the connection monitoring units  112  and  212  determine whether there are the settings of the conversion information for the address conversion units  113  and  213  by referring to the setting states of the filter TBLs  118  and  218 , respectively (step St 45 ). When there are the settings of the conversion information (Yes in steps St 45 ), each of the connection monitoring units  112  and  212  finishes the processing. When there are no settings of the conversion information (No in steps St 45 ), each of the connection monitoring units  112  and  212  sets the conversion information (step St 46 ). 
         [0133]    Thereby, the transmission of the packets from the TCP processing units  102  and  202  to the sockets of the transmission and reception controlling units  114  and  214  is started. Therefore, the application of the bundle protocol is started for the communication between the client application  101  and the server application  201 , so that the communication is performed through the proxy protocol function units  110  and  210 . 
         [0134]    Thus, each of the connection monitoring units  112  and  212  detects the condition of the connection with the communication destination, and decides whether the bundle protocol can be applied to the communication between the client application  101  and the server application  201 . Therefore, the application of the bundle protocol is automatically performed. 
         [0135]    Here, when the bundle protocol is not applied and the connection is disconnected during the communication, the communication cannot be continued. For this reason, each of the connection monitoring units  112  and  212  may decide whether the bundle protocol can be applied to the communication by another determination processing different from the above-mentioned determination processing. 
         [0136]    For example, each of the connection monitoring units  112  and  212  predicts a communicable time of a communication interface by referring to an identifier and a communication history of the physical communication interface, and when the connection of the communication interface having a short communicable time is used based on the prediction result, each of the connection monitoring units  112  and  212  always may apply the bundle protocol to the communication. When a large-capacity file requiring a long communicable time is transferred, each of the connection monitoring units  112  and  212  always may apply the bundle protocol to the communication. In this case, even when the terminal  1  is connected to the AP of Wi-Fi connectable for a short time, for example, the communication can be continued. 
         [0137]    However, when the bundle protocol is applied to the communication, a data amount for the overhead of the bundle is added to the data of the packet, and hence the load of the network NW increases compared with a case where the bundle protocol is not applied to the communication. Therefore, it is decided whether the bundle protocol can be applied to the communication by the processing illustrated in  FIG. 10 , so that the load of the network NW can be reduced adequately. 
         [0138]    When the plurality of communication lines can be used, the bundle controlling unit  120  may measure a communication quality of each of the communication lines, and transmit the bundle via a selected communication line based on the measurement result, to thereby optimize the bundle communication. 
         [0139]      FIG. 11A  illustrating the bundle communication using the plurality of communication lines according to a comparative example, and  FIG. 11B  illustrates the bundle communication using the plurality of communication lines according to the embodiment. In this example, it is assumed that the terminal  1  of a node Na and the server  2  of a node Nb perform the bundle communication with each other via two communication lines L 1  and L 2 . 
         [0140]    In the comparative example, the node Na divides data DT of the bundle into blocks # 1  to #n (n: a positive integer), and evenly transmits the blocks # 1  to #n to the node Nb via the two communication lines L 1  and L 2 . The node Nb receives the blocks # 1  to #n via the two communication lines L 1  and L 2 , and restores the data DT of an original bundle. 
         [0141]    However, when the communication quality of the communication line L 1  is lower than that of the communication line L 2  for example, the delay, errors or lose of the blocks # 1 , # 3 , . . . , #n- 1  transmitted via the communication line L 1  occurs, and hence a restoration time of the data DT in the node Nb increases and a throughput decreases. 
         [0142]    On the contrary, in the embodiment, the node Na divides a head portion of the data DT (see a dotted frame) into the blocks # 1  and # 2 , transmits the block # 1  to the node Nb via the communication line L 1  and transmits the block # 2  to the node Nb via the communication line L 2 , as illustrated by a code G 4 . Thereby, the node Na measures the communication qualities of the communication lines L 1  and L 2 . 
         [0143]    More specifically, the node Na measures times required for transmission of the blocks # 1  and # 2  in the head portion. The times required for transmission are calculated from transmission times of the blocks # 1  and # 2  and arrival times of responses from the node Nb after the reception of the blocks # 1  and # 2 , respectively, for example. The node Na determines speeds of the communication lines L 1  and L 2  based on the times required for transmission. The node Na selects any one of the communication lines L 1  and L 2  based on a result of the determination. 
         [0144]    When the speed of the communication line L 1  is low (see “LOW SPEED”) and the speed of the communication line L 2  is high (see “HIGH SPEED”) as illustrated by a code G 5 , the node Na transmits the remaining blocks # 3  to #n to the node Nb via the communication line L 2 . Therefore, the time required for transmission of all data # 1  to #n can be reduced, and the throughput can be improved. 
         [0145]      FIG. 12  is a flowchart illustrating an example of optimization processing of the bundle communication. The present processing is performed in the terminal  1 . 
         [0146]    The bundle controlling unit  120  compares a data amount (size) of the bundle with a threshold value TH (step St 51 ). When the data amount of the bundle is equal to or less than the threshold value TH (No in step St 51 ), the bundle controlling unit  120  transmits the bundle (step St 58 ). This is because, when the size of the bundle is small, there are few blocks after the division of data of the bundle and hence the throughput might decrease more due to a measurement time of the communication quality. 
         [0147]    When the data amount of the bundle is more than the threshold value TH (Yes in step St 51 ), the bundle controlling unit  120  determines whether the plurality of communication lines are used for link from the information of the wireless LAM module  14  (step St 52 ). When one of the communication lines is used for link (No in step St 52 ), the bundle controlling unit  120  transmits the bundle (step St 58 ). This is because there is no choice of the communication line. 
         [0148]    When the communication lines are used for link (Yes in step St 52 ), the bundle controlling unit  120  divides a predetermined head portion of the data of the bundle into a plurality of blocks (step St 53 ). At this time, the bundle controlling unit  120  generates at least the same number of blocks as the communication lines. 
         [0149]    Next, the bundle controlling unit  120  transmits the plurality of blocks via the respective communication lines (step St 54 ). Here, the numbers of blocks to be transmitted via the respective communication lines may be the same as each other or different from each other. 
         [0150]    Next, the bundle controlling unit  120  measures the time required for transmission of the blocks via each communication line (step St 55 ). Here, the time required for transmission is an example of the communication quality. Next, the bundle controlling unit  120  selects one or more communication lines based on the time required for transmission (step St 56 ). More specifically, the bundle controlling unit  120  preferentially selects the communication line having a short time required for transmission. 
         [0151]    Next, the bundle controlling unit  120  transmits remaining data via the selected communication line (step St 57 ). When the bundle controlling unit  120  selects only one of the communication lines, the bundle controlling unit  120  can transmit the remaining data without dividing the remaining data into the blocks. Moreover, when the bundle controlling unit  120  selects the communication lines meeting a predetermined standard value, the bundle controlling unit  120  can divide the remaining data into the blocks having a size based on the number of communication lines and transmit the divided data. 
         [0152]    For this reason, the transmission of the remaining data is completed by the high-speed communication line in a short time. In this way, the optimization processing of the bundle communication is performed. In this example, the bundle controlling unit  120  measures the time required for transmission as the communication quality, but a measurement object is not limited to this. For example, the bundle controlling unit  120  may measure an error rate. 
         [0153]    Thus, the bundle controlling unit  120  measures the respective communication qualities of the communication lines connected to the communication destination, selects one or more communication lines based on the respective communication qualities, and performs the bundle communication with the use of the selected communication lines. For this reason, the bundle controlling unit  120  can improve the communication qualities of the bundle communication. When the bundle controlling unit  120  can use a low speed Wi-Fi communication line and a high speed LTE (Long Term Evolution) communication line for example, the bundle controlling unit  120  can actually measure a communication speed of each of the communication lines and select the LTE communication line based on a result of the measurement. 
         [0154]    Moreover, the bundle controlling unit  120  divides the predetermined head portion of the data into the plurality of blocks, and transmit the plurality of blocks to the communication destination via the respective communication lines. Thereby, the bundle controlling unit  120  measures the respective communication qualities of the communication lines. The bundle controlling unit  120  selects at least one communication line based on the communication qualities, and transmits another portion (other than the head portion) of the data to the communication destination via the selected communication line. For this reason, the bundle controlling unit  120  does not have to prepare for test data for the measurement of the communication qualities, and can easily measure the communication quality of each communication line by using only the head portion of the data of the bundle to be transmitted. 
         [0155]    Next, a description will be given of functions of the condition notification units  121  and  221 . 
         [0156]      FIG. 13  is a flowchart illustrating an example of notification processing. In this example, the notification processing of the condition notification unit  121  in the terminal  1  is referred to, but the condition notification unit  221  in the server  2  also can perform the same notification processing. 
         [0157]    When the proxy controlling unit  111  requests the bundle controlling unit  120  to transmit the bundle, the proxy controlling unit  111  determines whether the request is a first transmission request after start-up (step St 61 ). When the request is the first transmission request (Yes in step St 61 ), the proxy controlling unit  111  instructs the condition notification unit  121  to display or store the reception notification of the data transmission (step St 62 ). The condition notification unit  121  displays the reception notification on the display unit  16  in a pop-up form or stores the reception notification into the storage unit  13  as a log. When the request is not the first transmission request (No in step St 61 ), the proxy controlling unit  111  does not instruct the condition notification unit  121  so as not to redundantly display or store the reception notification. 
         [0158]    Next, the proxy controlling unit  111  instructs the condition notification unit  121  to display or store the pending notification of the data transmission based on a value of a timer measuring a pending time of the bundle transmission (step St 63 ). The pending notification is performed every time a predetermined time elapses based on the value of the timer, for example. The condition notification unit  121  displays the pending notification on the display unit  16  in the pop-up form or stores the pending notification into the storage unit  13  as the log. 
         [0159]    The proxy controlling unit  111  outputs a request flag of a report depending on the communication result to the bundle controlling unit  120  through the bundle API. The bundle controlling unit  120  can include the report corresponding to the request flag into the bundle and transmit the bundle. Referred to as the report are the distribution report indicating that data is distributed to the destination, the forwarding report indicating that data is forwarded to a next node, and the deletion report indicating the deletion of the bundle, for example. The deletion report is issued when the bundle has not been transmitted and the lifetime of the bundle has expired or the bundle has been deleted from the bundle buffer  122  by the transmission of the bundle. In the following processing, the notification corresponding to each report is performed. 
         [0160]    The proxy controlling unit  111  determines whether the distribution report is received (step St 64 ). When the distribution report is received (Yes in step St 64 ), the proxy controlling unit  111  instructs the condition notification unit  121  to display or store a distribution completion notification (step St 68 ). The condition notification unit  121  displays the distribution completion notification on the display unit  16  in the pop-up form or stores the distribution completion notification into the storage unit  13  as the log. 
         [0161]    When the distribution report is not received (No in step St 64 ), the proxy controlling unit  111  determines whether the forwarding report is received (step St 65 ). When the forwarding report is received (Yes in step St 65 ), the proxy controlling unit  111  instructs the condition notification unit  121  to display or store the forwarding notification (step St 69 ). The condition notification unit  121  displays the forwarding notification on the display unit  16  in the pop-up form or stores the forwarding notification into the storage unit  13  as the log. 
         [0162]    When the forwarding report is not received (No in step St 65 ), the proxy controlling unit  111  determines whether the deletion report is received (step St 66 ). That is, the proxy controlling unit  111  determines whether the bundle communication has succeeded based on the deletion report. 
         [0163]    When the deletion report is not received (No in step St 66 ), the proxy controlling unit  111  finishes the processing. When the deletion report is received (Yes in step St 66 ), the proxy controlling unit  111  instructs the condition notification unit  121  to display or store the forwarding failure notification (step St 67 ). The condition notification unit  121  displays the forwarding failure notification on the display unit  16  in the pop-up form or stores the forwarding failure notification into the storage unit  13  as the log to notify the terminal  1  of the forwarding failure. 
         [0164]    Thus, when the proxy controlling unit  111  determines that the communication has failed based on the deletion report, the condition notification unit  121  notifies the user of the failure of the communication. For this reason, even when the communication is performed based on the bundle protocol and the client application  101  and the server application  201  recognize that the communication has succeeded, the user can know the failure of the communication by the notification of the condition notification units  121  and  221 . 
         [0165]    Next, a description will be given of an operation example of the communication between the client application  101  and the server application  201 . 
       COMMUNICATION OPERATION EXAMPLE 1 
       [0166]      FIGS. 14A to 14D  illustrates the initial setting file  117 , the route TBL  123 , the initial setting file  217  and the route TBL  223  of a communication operation example 1, respectively.  FIGS. 15 to 19  illustrate the communication operation example 1 in a time series manner. In this example, it is assumed that the file transmission from the terminal  1  which is an application client (APL client) to an application server (APL server)  2   b  is performed, as illustrated in  FIG. 15 . 
         [0167]    The APL server  2   b  includes the application function unit  200  from among the server  2  of  FIG. 3 . A DTN server  2   a  includes other units other than the application function unit  200  from among the server  2  of  FIG. 3 . Each of the DTN server  2   a  and the APL server  2   b  has the same configuration as  FIG. 2 , and is connected to an internet NWb. Here, there may be a plurality of APL servers  2   b.    
         [0168]    Thus, the application function unit  200  of the server  2  is implemented in other device, so that other units such as the proxy controlling unit  211  of the server  2  can be configured as a communication device independent of the server application  201 . 
         [0169]    Moreover, the terminal  1  is connected to an access network NWa via a wireless communication line illustrated by a dotted line. An AP (e.g., a hotspot of the Wi-Fi) to which the terminal  1  can link is included in the access network NWa. 
         [0170]      FIGS. 14A and 14B  illustrate the initial setting file  117  and the route TBL  123  of the APL client (terminal  1 ), and  FIGS. 14C and 14D  illustrate the initial setting file  217  and the route TBL  223  of the APL server  2   b . The initial setting files  117  and  217  and the route TBLs  123  and  223  are stored beforehand into the APL client and the APL server  2   b  before the start-up of the application. 
         [0171]    By the initial setting file  117 , an EID “dtn://node1” is set to the terminal  1 , an IP address “10.10.30.1” and a port number “40000” of the APL server  2   b  are set as the communication destination of the client application  101 . Moreover, a destination EID “dtn://dtnserver”, a destination IP address “10.10.20.1” and a port number “4556” of the DTN server  2   a  are set to the terminal  1  based on the route TBL  123 . 
         [0172]    By the initial setting file  217 , the EID “dtn://dtnserver” is set to the DTN server  2   a , and the IP address “10.10.30.1” and the port number “40000” of the APL server  2   b  are set to the DTN server  2   a . Moreover, a destination EID “dtn://node 1”, a destination IP address “10.10.10.1” and a port number “4556” of the terminal  1  are set to the DTN server  2   a  based on the route TBL  223 . 
         [0173]      FIG. 15  illustrates a condition of the communication when the terminal  1  is connected to the access network NWa. In this case, the connection monitoring unit  112  of the terminal  1  determines that the connection is performed, and therefore the connection monitoring unit  112  does not set the conversion information to the address conversion units  113 . For this reason, the client application  101  directly communicates with the APL server  2   b  by the TCP/IP. A code G 6  indicates application data (APL data) of the TCP to be transmitted by the terminal  1 . The APL data (packet) has the IP address “10.10.30.1” and the port number “40000” as the destination. 
         [0174]      FIG. 16  illustrates a condition of the communication when the terminal  1  is not connected to the access network NWa. In this case, the connection monitoring unit  112  determines that the connection is disconnected, and therefore the connection monitoring unit  112  sets the conversion information to the address conversion units  113 . Thereby, the APL data of the client application  101  is converted by the address conversion unit  113  and received by the socket of the transmission and reception controlling unit  114  so as to be processed by the proxy protocol function unit  110 . 
         [0175]    More specifically, as illustrated by a code G 7 , the APL data having the IP address “10.10.30.1” and the port number “40000” as the destination is converted into APL data having the IP address “10.10.10.1” and the port number “8001” as the destination by the address conversion unit  113 . When the proxy controlling unit  111  receives the converted APL data, the proxy controlling unit  111  instructs the condition notification unit  121  to display or output reception notification of the APL data. 
         [0176]    The condition notification unit  121  displays the reception notification on the display unit  16  in the pop-up form or outputs the logs to the storage unit  13  as illustrated by a code G 8 . The reception notification includes the date and time of the reception, the IP address and the port number of the communication destination, and so on. 
         [0177]    The proxy controlling unit  111  requests the bundle controlling unit  120  to transmit the APL data. At this time, the proxy controlling unit  111  accommodates the APL data into the payload of the proxy message to output the proxy message to the bundle controlling unit  120 . In response to the request, the bundle controlling unit  120  accommodates the APL data into the bundle for the EID “dtn://dtnserver” based on the route TBL  123  and attempts the transmission of the bundle. However, the connection with the access network NWa is disconnected, and therefore the bundle controlling unit  120  stores the bundle into the bundle buffer  122 . 
         [0178]      FIG. 17  illustrates a pending condition of the bundle communication. While the connection with the access network NWa is disconnected, the proxy controlling unit  111  measures a transmission pending time of the bundle with the use of a notification timer, as illustrated by a code G 9 . When the notification timer has expired, the proxy controlling unit  111  instructs the condition notification unit  121  to display or output the pending notification. 
         [0179]    The condition notification unit  121  displays the pending notification on the display unit  16  in the pop-up form or outputs the logs to the storage unit  13  as illustrated by a code G 10 . The pending notification includes a current date, a current time, the pending time, the IP address and the port number of the communication destination, and so on. 
         [0180]      FIG. 18  illustrates a condition where the transmission of the bundle has failed by the expiration of the lifetime. The bundle controlling unit  120  manages the lifetime of the bundle with the use of the timer and outputs the deletion report to the proxy controlling unit  111  when the lifetime has expired, as illustrated by a code G 11 . When the proxy controlling unit  111  receives the deletion report, the proxy controlling unit  111  instructs the condition notification unit  121  to display or output the transfer failure notification. 
         [0181]    The condition notification unit  121  displays the transfer failure notification on the display unit  16  in the pop-up form or outputs the logs to the storage unit  13  as illustrated by a code G 12 . The transfer failure notification includes date and time of the failure, the IP address and the port number of the communication destination, and so on. 
         [0182]      FIG. 19  illustrates a condition where the terminal  1  is reconnected to the access network NWa before the expiration of the lifetime and therefore the bundle is transmitted. When the bundle controlling unit  120  detects the establishment of the connection with access network NWa, the bundle controlling unit  120  reads the bundle from the bundle buffer  122  and transmits the bundle as illustrated by a code G 13 . 
         [0183]    The bundle is transmitted to the destination EID “dtn://dtnserver” corresponding to the IP address “10.10.20.1” and the port number “4556” on the TCP, as illustrated by a code G 14 . In the DTN server  2   a , when the bundle controlling unit  220  receives the bundle, the bundle controlling unit  220  transmits the proxy message to the proxy controlling unit  211 . The proxy controlling unit  211  receives the APL data from a designation directory “data/receive” of an output pointer set by the initial setting file  217 . 
         [0184]    The proxy controlling unit  211  establishes, by the TCP, the connection with the IP address “10.10.30.1” and the port number “40000” of the APL server  2   b  set by the initial setting file  217 , and transmits the APL data of the destination, as illustrated by a code G 16 . When the output of the APL data to the proxy controlling unit  211  is completed, the bundle controlling unit  220  recognizes that the transfer has completed, and transmits the distribution report to the terminal  1 . 
         [0185]    In the terminal  1 , when the bundle controlling unit  120  receives the distribution report, the bundle controlling unit  120  transfers the distribution report to the proxy controlling unit  111 . When the proxy controlling unit  111  receives the distribution report, the proxy controlling unit  111  instructs the condition notification unit  121  to display or output the transfer completion notification. 
         [0186]    The condition notification unit  121  displays the transfer completion notification on the display unit  16  in the pop-up form or outputs the logs to the storage unit  13  as illustrated by a code G 15 . The transfer completion notification includes date and time of the transfer completion, the IP address and the port number of the communication destination, and so on. 
         [0187]    When the communication is performed by relaying a plurality of nodes having the bundle communication function unlike the above-mentioned example, it is possible to grasp the communication status effectively by the forwarding notification. 
         [0188]      FIG. 20  is a diagram illustrating a use example of the forwarding notification. The communication system of this example includes an APL client  1   a , a proxy node (# 1 )  1   b , a relay node (# 2 )  7 , the DTN server  2   a  and the APL server  2   b . The APL client  1   a , the proxy node (# 1 )  1   b , the relay node (# 2 )  7 , the DTN server  2   a  and the APL server  2   b  are connected in this order. 
         [0189]    The APL client  1   a  includes the application function unit  100  from among the terminal  1  of  FIG. 3 . The proxy node  1   b  includes other units other than the application function unit  100  from among the terminal  1  of  FIG. 3 . Each of the APL client  1   a  and the proxy node  1   b  has the same configuration as  FIG. 1 . 
         [0190]    Thus, the application function unit  100  of the terminal  1  is implemented in other device, so that other units such as the proxy controlling unit  111  of the terminal  1  can be configured as a communication device independent of the client application  101 . 
         [0191]    The APL client  1   a  transmits the APL data to the proxy node  1   b  having an IP address “10.10.10.1”. The proxy node  1   b  transmits the APL data to the relay node  7  having an IP address “10.10.40.1”. The relay node  7  includes a relay function in conformity with RFC5050. The relay node  7  relays the APL data to the DTN server  2   a  having the IP address “10.10.20.1”. The DTN server  2   a  transmits the APL data to the APL server  2   b  having the IP address “10.10.30.1”. 
         [0192]    When the proxy node  1   b  transfers the APL data to the relay node  7 , the proxy node  1   b  transmits to the relay node  7  the forwarding report indicative of having forwarded the APL data from the node # 1  to the node # 2 . Moreover, when the relay node  7  relays the APL data to the DTN server  2   a , the relay node  7  transmits to the DTN server  2   a  the forwarding report of the proxy node  1   b  and the forwarding report indicative of having forwarded the APL data from the node # 2  to the DTN server  2   a.    
         [0193]    The DTN server  2   a  records the forwarding reports collected in this way on a log  9  as the forwarding notification, as illustrated by a code G 17 . The transfer completion notification includes date and time of the transfer, the nodes (the nodes  1  and  2 ) of the transfer destinations, the IP address and the port number of the communication destination, and so on. 
         [0194]    Moreover, a transfer history management application (transfer history management APL)  8  is implemented in the DTN server  2   a , and the transfer history management APL  8  can manage a transfer history based on the log  9  as illustrated by a code G 18 . The IP addresses of the transmission source and the destination, the transfer time of the transmission source, the transfer time of the relay node  7 , the distribution time to the DTN server  2   a  and so on are recorded in the transfer history as an example. 
         [0195]    For example, such a communication system is applied to a case where a vehicle perambulates and collects information for environmental monitoring from a plurality of sensor devices installed extensively. In this case, the APL client  1   a  installed in the vehicle collects measurement data from each sensor device of each place and transfers the measurement data to the APL server  2   b . At this time, a system administrator can grasp the process of the data relay by referring to the log  9  and the transfer history of the DTN server  2   a.    
       COMMUNICATION OPERATION EXAMPLE 2 
       [0196]      FIGS. 21A and 21C  illustrate the initial setting files  117  and  217  of a communication operation example 2, respectively.  FIGS. 21B and 21D  illustrate the route TBLs  123  and  223  of the communication operation example 2.  FIG. 22  illustrates the communication operation example 2. In  FIG. 22 , elements identical to those of  FIG. 15  are designated by identical reference numerals, and a description thereof is omitted. 
         [0197]    The DTN server  2   a , a web proxy server  2   c , and a web server  2   d  are connected to an internet NWb. The terminal  1  functions as the APL client of the web browser, and accesses the web server  2   d  through the web proxy server  2   c.    
         [0198]    By the initial setting file  117 , an EID “dtn://node1/web” is set to the terminal  1 , and an IP address “10.10.40.1” and a port number “8080” of the web proxy server  2   c  are set as the communication destination of the client application  101 , as illustrated in  FIG. 21 . Moreover, a destination EID “dtn://dtnserver/web”, an destination IP address “10.10.20.1” and a port number “4556” of the DTN server  2   a  are set to the terminal  1  based on the route TBL  123 . 
         [0199]    By the initial setting file  217 , an EID “dtn://dtnserver/web” is set to the DTN server  2   a , and an IP address “10.10.40.1” and a port number “8080” of the web proxy server  2   c  are set to the DTN server  2   a . Moreover, a destination EID “dtn://node1/web”, a destination IP address “10.10.10.1” and a port number “4556” of the terminal  1  are set to the DTN server  2   a  based on the route TBL  223 . 
         [0200]    First, a description will be given of the communication operation when the connection between the terminal  1  and the access network NWa is established. The web browser of the terminal  1  requests an access to a URL (Uniform resource Locator) “http://sample.abc.com”, a request message of a HTTP (Hyper Text Transfer Protocol) is transmitted to the web proxy server  2   c.    
         [0201]    When the web proxy server  2   c  receives the request message and there is no cache data of the above URL, the web proxy server  2   c  searching the cache data of the above URL searches “sample.abc.com” which is a FQDN (Fully Qualified Domain Name) of the URL by using a DNS (Domain Name System), and specifies an IP address “10.10.50.1” of the corresponding web server  2   d . The web proxy server  2   c  transmits the request message of the HTTP into which a port number “80” of the TCP is set, to the web server  2   d.    
         [0202]    The web server  2   d  transmits information to be displayed on the web browser to the web proxy server  2   c  as a response message to the request message. The web proxy server  2   c  transfers the response message to the terminal  1 . Thereby, a screen as illustrated by a code G 19  of  FIG. 23A , for example, is displayed on the web browser of the terminal  1 . 
         [0203]    Next, a description will be given of the communication operation when the connection between the terminal  1  and the access network NWa is disconnected. Since the connection is disconnected in the terminal  1 , even when the web browser transmits the request message of the HTTP corresponding to the above URL, the request message is not received by the web proxy server  2   c . For this reason, if the bundle protocol is not applied to the communication of the client application  101  of the terminal  1 , a message indicating an unconnectable condition as illustrated by a code G 20  of  FIG. 23B , for example, is displayed on the web browser. 
         [0204]    On the contrary, when the bundle protocol is applied to the communication of the client application  101  of the terminal  1 , the request message is received by the proxy protocol function unit  110  via the address conversion unit  113 . For this reason, a condition during the communication request is continuously displayed as illustrated by a code G 21  of  FIG. 23C , for example. 
         [0205]    Next, a description will be given of the communication operation when the connection between the terminal  1  and the access network NWa is reestablished. When the connection with the access network NWa is reestablished, the bundle controlling unit  120  reads the bundle into which the request message is accommodated, and transmits the bundle to the DTN server  2   a . The DTN server  2   a  transfers the request message to the web proxy server  2   c . Moreover, the web proxy server  2   c  transfers the request message to the web server  2   d.    
         [0206]    The web server  2   d  transmits the response message to the DTN server  2   a  via the web proxy server  2   c  in response to the request message. In the DTN server  2   a , the response message is received by the socket of the transmission and reception controlling unit  214 . The proxy controlling unit  211  searches the connection number and the destination EID from the connection list  216  based on the socket channel ID of the socket. The proxy controlling unit  211  generates the proxy message based on a result of the search, and requests the bundle controlling unit  220  to transmit the bundle. The bundle controlling unit  220  transmits the bundle to the terminal  1  based on the bundle protocol. 
         [0207]    In the terminal  1 , the bundle controlling unit  120  receives the bundle of the response message, and outputs it to the proxy controlling unit  111  as the proxy message. The proxy controlling unit  111  acquires the connection number of the proxy message, and uses the connection number for the search of the connection list  116  along with the destination EID acquired from the bundle controlling unit  120 . Thereby, the proxy controlling unit  111  searches a corresponding socket channel and transmits the response message to the socket. 
         [0208]    The web browser acquires the response message from the socket. This communication operation is continued until a screen illustrated by a code G 19  of FIG.  23  is displayed on the web browser. When the web browser requests a new connection during the communication operation, the proxy controlling unit  111  registers a new connection number into the connection list  116 , and the same communication as the above is performed. 
         [0209]    By such communication operation, the user can continue the communication condition without reloading the web browser in the terminal  1  and can display a web page on the web browser even when the communication environment is bad. When the connection is disconnected during the communication based on the bundle protocol, even if the display of the web page is any stage, it is possible to continue the communication at the time of the reconnection of the connection. 
         [0210]    The above-mentioned processing functions can be realized by a computer. In this case, a program in which the processing contents of the functions which the computer should include is written is provided. By executing the program on the computer, the processing functions are realized by the computer. The program in which the processing contents are written may be recorded on a non-transitory computer-readable recording medium (however, a carrier wave is excluded). 
         [0211]    When the program is distributed, a removable recording medium such as a DVD (Digital Versatile Disc) or a CD-ROM (Compact Disc Read Only Memory) in which the program is recorded is sold. Further, the program may be stored in a memory device of a server computer and transferred from the server computer to another computer via a network. 
         [0212]    The computer which runs the program, e.g., stores the program recorded in the removable recording medium or transferred from the server computer into a memory device of the computer. Then the computer reads the program from the memory device of the computer, and runs the process according to the program. Incidentally, the computer may read the program directly from the removable recording medium and run the process according to the program. Further, every time the program is transferred from the server computer, the computer may successively run the process according to the received program. 
         [0213]    All examples and conditional language recited herein are intended for pedagogical purposes to aid the reader in understanding the invention and the concepts contributed by the inventor to furthering the art, and are to be construed as being without limitation to such specifically recited examples and conditions, nor does the organization of such examples in the specification relate to a showing of the superiority and inferiority of the invention. Although the embodiments of the present invention have been described in detail, it should be understood that the various change, substitutions, and alterations could be made hereto without departing from the spirit and scope of the invention.

Technology Category: 5