Patent Publication Number: US-8532111-B2

Title: Transmission apparatus, transmission method, and program

Description:
BACKGROUND OF THE INVENTION 
     1. Field of the Invention 
     The present invention relates to transmission apparatuses, transmission methods, and recording media including programs, and particularly relates to a transmission apparatus which attains improved TCP/IP communication speed, a transmission method, and a program. 
     2. Description of the Related Art 
     In recent years, TCP/IP (Transmission Control Protocol/Internet Protocol) has been broadly used as a standard transmission protocol of networks such as the Internet. 
     In general, in a TCP/IP communication, a data transmitter receives an ACK (Acknowledgement) packet as an acknowledgement of data reception from a TCP/IP protocol stack of a data receiver. An acknowledgement number (ACK number) included in the ACK packet has a sequence number and data representing a size of received data. When the ACK packet is not transmitted to the data transmitter as a response, the data transmitter retransmits data which is the same as data which was transmitted but the ACK packet regarding the data has not been received by the data transmitter. 
     The applicant of the present embodiment has previously proposed a technique of retransmitting a packet (refer to Japanese Patent Laid-Open No. 2005-136547, for example). 
     In the proposed technique, when it is determined that a receiver can receive a retransmission packet by the time when data should be reproduced, an operation of retransmitting the requested retransmission packet is controlled. 
     SUMMARY OF THE INVENTION 
     However, with known techniques including the technique disclosed in Japanese Patent Laid-Open No. 2005-136547, in a case where a host serving as a transmitter does not have capacity to perform processing or in a case where a TCP/IP protocol stack serving as a data receiver is designed so as to transmit a considerable number of ACK packets, ACK packet reception processing performed by the host serving as the data transmitter may cause deterioration of TCP/IP communication speed. 
     The present embodiment has been made in view of the above problem, and the present embodiment attains reduction of operations to be performed in a TCP/IP communication and improves TCP/IP communication speed. 
     According to an embodiment of the present invention, there is provided a transmission apparatus including receiving means for receiving ACK packets transmitted from a reception apparatus in response to transmission data items, ACK storing means for storing a latest ACK packet which is last received among the ACK packets, and TCP/IP processing means for performing processing of receiving an ACK packet in accordance with the latest ACK packet supplied from the ACK storing means at a predetermined timing. 
     The ACK storing means may store a particular ACK packet, among the received ACK packets, as the latest ACK packet in a case where the particular ACK packet has been transmitted from a communication partner in a TCP/IP communication and in a case where a preceding packet has not been stored in the ACK storing means. 
     The ACK storing means stores a particular ACK packet, among the received ACK packets, as the latest ACK packet, under the condition that the particular ACK packet has been transmitted from the communication partner in the TCP/IP communication and is consecutive to another ACK packet which has been stored as the latest packet in the ACK storing means, when a period of time for which the another latest ACK packet is stored in the ACK storing means does not exceed a predetermined period of time and when the number of the stored ACK packets is smaller than the maximum number of ACK packets to be stored. 
     In a case where the ACK storing means receives an ACK packet that is not consecutive to the packet which has been stored as the latest ACK packet in the ACK storing means, the ACK storing means supplies the latest ACK packet to the TCP/IP processing means when a period of time for which the latest ACK packet is stored in the ACK storing means exceeds a predetermined period of time or when the number of the stored ACK packets reaches the maximum number of ACK packets to be stored. 
     The TCP/IP processing means may transmit to the ACK storing means an ACK processing request for obtaining the latest ACK packet at a predetermined timing. The ACK storing means may supply the stored latest ACK packet to the TCP/IP processing means in response to the ACK processing request. 
     According to another embodiment of the present invention, there is provided a transmission method including the steps of storing a latest ACK packet which is last received among ACK packets transmitted from a reception apparatus in response to transmission data items, and performing processing of receiving an ACK packet in accordance with the latest ACK packet supplied at a predetermined timing. 
     According to a further embodiment of the present invention, there is provided a program corresponding to the transmission method described above. 
     In the transmission apparatus, the transmission method, and the program, a latest ACK packet which is last received among ACK packets transmitted from a reception apparatus in response to transmission data items is stored, and processing of receiving an ACK packet is performed in accordance with the latest ACK packet at a predetermined timing. 
     Accordingly, a speed of a TCP/IP communication is improved. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  is a block diagram illustrating a communication system according to a first embodiment of the present invention; 
         FIG. 2  is a flowchart illustrating transmission processing according to the first embodiment of the present invention; 
         FIG. 3  is a flowchart illustrating ACK storing processing according to the first embodiment of the present invention; 
         FIG. 4  is a block diagram illustrating a communication system according to a second embodiment of the present invention; 
         FIG. 5  is a flowchart illustrating ACK storing processing according to the second embodiment of the present invention; 
         FIG. 6  is a flowchart illustrating processing of receiving an ACK packet; and 
         FIG. 7  is a block diagram illustrating an example of a configuration of a computer. 
     
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS 
     Embodiments of the present invention will be described hereinafter with reference to accompanying drawings. 
       FIG. 1  is a block diagram illustrating a configuration of a communication system according to a first embodiment of the present invention. In the communication system, a transmission apparatus  11  and a reception apparatus  12  are connected to a network  13 , and are communicated with each other. 
     Note that the network  13  corresponds to a transmission path, such as a wired or wireless communication line, a wired or wireless network, or the Internet, and transmits a packet from the transmission apparatus  11  to reception apparatus  12  with a predetermined delay time. 
     The transmission apparatus  11  transmits a packet including transmission data through the network  13  to the reception apparatus  12  in response to a request transmitted from the reception apparatus  12 . Furthermore, the transmission apparatus  11  stores, for a predetermined period of time, an ACK packet which serves as an acknowledgement of reception of the transmission data and which is received in TCP/IP communication, and determines whether ACK reception processing is to be performed in a later stage. The transmission apparatus  11  performs the ACK reception processing in accordance with a result of the determination. 
     Specifically, as shown in  FIG. 1 , the transmission apparatus  11  includes a network application  21 , a TCP/IP processor  22 , a transmission/reception unit  23 , and an ACK storing unit  24 . 
     The network application  21  generates transmission data to be transmitted to a certain device, such as the reception apparatus  12 , which is connected to the network  13 , and supplies the transmission data to the TCP/IP processor  22 . 
     The TCP/IP processor  22  performs protocol processing which is processing of dividing the transmission data into transmission data items supplied from the network application  21  and storing the divided transmission data items to respective packets. The TCP/IP processor  22  transmits the packets which stores the transmission data items to the transmission/reception unit  23 . 
     The transmission/reception unit  23  transmits each of the packets supplied from the TCP/IP processor  22  to the reception apparatus  12  through the network  13 . Hereinafter, description will be made hereinafter taking one of the transmission data items and a corresponding one of the packets to be transmitted as examples for simplicity. 
     The transmission/reception unit  23  receives an ACK packet which serves as an acknowledgement of a reception of the transmission data item and which is transmitted from the reception apparatus  12 , and supplies the ACK packet to the ACK storing unit  24 . 
     The ACK storing unit  24  determines whether to store the ACK packet supplied from the transmission/reception unit  23  for a predetermined period of time or supply the ACK packet to the TCP/IP processor  22 . When the ACK storing unit  24  determines to store the ACK packet for a predetermined period of time, the ACK packet is stored in the ACK storing unit  24 . On the other hand, when the ACK storing unit  24  determines to supply the ACK packet to the TCP/IP processor  22 , the ACK packet is supplied to the TCP/IP processor  22 . 
     The determination is made in accordance with setting of three parameters, that is, a maximum stored-ACK-packet count representing the maximum number of stored ACK packets, an ACK storing timer (ACK storing time) which determines a period of time in which the ACK packet is stored, and an ACK storing function which enables or disables a function of storing an ACK packet. That is, it is determined whether the ACK packet is to be stored for a predetermined period of time or is to be supplied to the TCP/IP processor  22  by setting the three parameters, i.e., the number of stored ACK packets, the ACK storing timer, and the ACK storing function. 
     Specifically, in a case, for example, where the ACK storing unit  24  receives a ACK packet which is continuous from another ACK packet which has been stored in the ACK storing unit  24 , the ACK storing unit  24  stores the received ACK packet as the latest ACK packet, counts the number of stored ACK packets, and sets the ACK storing timer. On the other hand, in a case where the ACK storing unit  24  receives a ACK packet which is not continuous from another ACK packet which has been stored in the ACK storing unit  24 , in a case where a period of time in which the ACK storing timer counts after the latest ACK packet is stored exceeds a certain period of time, or in a case where the number of stored ACK packets has reached the maximum number of stored ACK packets, the latest ACK packet stored in the ACK storing unit  24  is supplied to the TCP/IP processor  22 . 
     Note that the parameter representing the number of stored ACK packets and the parameter of the ACK storing timer are set by taking a frequency of transmissions of ACK packets from a device which receives transmission data items and intervals of the transmissions into consideration so that data transfer to the device is not interrupted. Alternatively, static values may be set to the parameter representing the number of stored ACK packets and the parameter of the ACK storing timer, and the values may be dynamically changed. 
     Only in a case where the parameter of the ACK storing function represents an available state of the ACK storing function, the ACK storing unit  24  performs the ACK storing processing. 
     When determining that the ACK packet is to be transmitted to the TCP/IP processor  22 , the ACK storing unit  24  transmits the ACK packet to the TCP/IP processor  22 , and the TCP/IP processor  22  performs the processing of receiving the ACK packet. Specifically, the TCP/IP processor  22  recognizes data items among the plurality of data items included in the transmission data which have been transmitted in accordance with information items stored in corresponding ACK packets supplied from the ACK storing unit  24 , and discards the transmission data items which have been transmitted (normal TCP/IP transmission processing). 
     Furthermore, the TCP/IP processor  22  notifies the network application  21  of completion of the transmission after checking ACK packets of all the transmission data items. By this, the network application  21  recognizes the completion of the transmission of the transmission data. 
     The transmission apparatus  11  is configured as described above. 
     The reception apparatus  12  receives a packet transmitted through the network  13  from the transmission apparatus  11 . The reception apparatus  12  extracts a transmission data item from the received packet and outputs the extracted transmission data item. 
     As shown in  FIG. 1 , the reception apparatus  12  includes a TCP/IP processor  31  and a transmission/reception unit  32 . 
     The transmission/reception unit  32  receives the packet including the transmission data item which is transmitted through the network  13  from the transmission apparatus  11  and supplies the packet to the TCP/IP processor  31 . 
     The TCP/IP processor  31  receives the packet supplied from the transmission/reception unit  32  and extracts the transmission data item from the packet. Furthermore, the TCP/IP processor  31  supplies an ACK packet serving as an acknowledgement of the reception of the transmission data item to the transmission/reception unit  32 . 
     The transmission/reception unit  32  transmits the ACK packet supplied from the TCP/IP processor  31  to the transmission apparatus  11  through the network  13 . 
     The reception apparatus  12  is configured as described above. 
     In the communication system configured as described above, the transmission apparatus  11  which transmits a packet including a transmission data item receives an ACK packet serving as an acknowledgement of a reception. Among a plurality of ACK packets received by the transmission apparatus  11 , an ACK packet which is last received is stored, and the processing of receiving an ACK packet is performed using the stored ACK packet at a predetermined timing. 
     Referring now to a flowchart of  FIG. 2 , transmission processing performed by the transmission apparatus  11  will be described. 
     Note that, in  FIG. 2 , in a case where a packet including a transmission data item is transmitted, description of processing performed before a TCP connection is established is omitted for simplicity, and processing performed after the TCP connection is established between the transmission apparatus  11  and the reception apparatus  12  will be described. 
     In step S 1 , the network application  21  generates transmission data to be transmitted to the reception apparatus  12  and supplies the transmission data to the TCP/IP processor  22 . 
     In step S 2 , the TCP/IP processor  22  performs protocol processing on the transmission data supplied from the network application  21 . The TCP/IP processor  22  supplies each of a plurality of packets including transmission data items obtained by performing the protocol processing on the transmission data to the transmission/reception unit  23 . Hereinafter, description will be made hereinafter taking one of the transmission data items and a corresponding one of the packets to be transmitted as examples for simplicity. 
     In step S 3 , the transmission/reception unit  23  transmits the packet supplied from the TCP/IP processor  22  to the reception apparatus  12  through the network  13 . 
     Then, an ACK packet serving as an acknowledgement of a reception is transmitted from the reception apparatus  12  which received the transmission data item, and in step S 4 , the transmission/reception unit  23  receives the ACK packet transmitted from the reception apparatus  12  through the network  13  and supplies the ACK packet to the ACK storing unit  24 . Note that, when receiving the packet transmitted through the network  13 , the transmission/reception unit  23  supplies the packet to the ACK storing unit  24  irrespective of content of the packet. That is, the ACK storing unit  24  receives various packets, other than ACK packets, which are transmitted through the network  13 . 
     In step S 5 , the ACK storing unit  24  performs ACK storing processing so as to determine whether to store the ACK packet, among the various packets transmitted from the transmission/reception unit  23 , for a predetermined period of time or supply the ACK packet to the TCP/IP processor  22 . 
     Referring now to a flowchart of  FIG. 3 , the ACK storing processing performed by the ACK storing unit  24  shown in  FIG. 1  which corresponds to the operation of step S 5  will be described in detail. 
     In step S 11 , the ACK storing unit  24  receives the packet supplied from the transmission/reception unit  23 . In step S 12 , the ACK storing unit  24  determines whether an ACK storing function is available. When the determination is negative in step S 12 , the ACK storing unit  24  does not store the packet but supplies the packet to the TCP/IP processor  22  in step S 19 , and the process returns to step S 11 . That is, when the ACK storing function is not available, the ACK packet is not stored and is immediately supplied to the TCP/IP processor  22 . 
     On the other hand, when the determination is affirmative in step S 12 , the ACK storing unit  24  determines whether the packet has been supplied from the communication partner in the TCP/IP communication in step S 13 . 
     When it is determined that the received ACK packet has not been supplied from the communication partner in the TCP/IP communication, i.e., the reception apparatus  12 , in step S 13 , the ACK storing unit  24  does not store the received packet and supplies the packet to the TCP/IP processor  22  in step S 19 , and the process returns to step S 11 . On the other hand, when it is determined that the received ACK packet has been supplied from the communication partner in the TCP/IP communication, i.e., the reception apparatus  12 , in step S 13 , the ACK storing unit  24  determines whether a preceding packet has been stored therein in step S 14 . 
     When it is determined that any preceding ACK packet is not stored in the ACK storing unit  24  in step S 14 , the ACK storing unit  24  determines whether a TCP control flag other than an ACK flag and a TCP option has been added in step S 20 . 
     When the determination is negative in step S 20 , the ACK storing unit  24  stores the received latest packet therein and sets an ACK storing timer in step S 21 . That is, in this case, the received latest ACK packet is stored in the ACK storing unit  24  and the ACK storing timer is set in the ACK storing unit  24 . Thereafter, the process returns to step S 11 . 
     On the other hand, when the determination is affirmative in step S 20 , the ACK storing unit  24  does not store the received packet therein and supplies the packet to the TCP/IP processor  22  in step S 19 , and then, the process returns to step S 11 . Note that examples of the control flag other than the TCP option and the ACK flag include a PSH flag and a URG flag. Such a control flag is set in a case where a request for performing special processing is made. Therefore, the ACK packet is not stored in the ACK storing unit  24  and is immediately supplied to the TCP/IP processor  22 . 
     When it is determined that a preceding ACK packet has been stored in the ACK storing unit  24  in step S 14 , the ACK storing unit  24  determines whether the received latest ACK packet is continuous from the preceding ACK packet stored in the ACK storing unit  24  in step S 15 . 
     When the determination is negative in step S 15 , the ACK storing unit  24  supplies the stored preceding ACK packet and the received latest ACK packet to the TCP/IP processor  22  in step S 22 , and then the process returns to step S 11 . That is, in this case, since packet loss occurs, both of the preceding ACK packet and the latest ACK packet are supplied to the TCP/IP processor  22 . 
     When the determination is affirmative in step S 15 , the ACK storing unit  24  determines whether a TCP control flag other than a TCP option and an ACK flag has been added to the received ACK packet in step S 16 . 
     When the determination is affirmative in step S 16 , the process proceeds to step S 22  where the ACK storing unit  24  supplies the preceding ACK packet stored therein and the latest ACK packet to the TCP/IP processor  22  in step S 22 , and then, the process returns to step S 11 . On the other hand, when the determination is negative in step S 16 , the ACK storing unit  24  determines whether the maximum number of stored ACK packets is reached in step S 17 . 
     When the determination is negative in step S 17 , the ACK storing unit  24  stores the received ACK packet therein as the latest ACK packet, resets the ACK storing timer, and counts ACK packets which have been stored therein in step S 18 . That is, in this case, since the number of stored ACK packets does not reach the maximum number of stored ACK packets, the received ACK packet is stored in the ACK storing unit  24 . Furthermore, since the received ACK packet is stored as the latest ACK packet, the ACK storing unit  24  resets the ACK storing timer and increments the number of stored ACK packets. 
     On the other hand, when the determination is affirmative in step S 17 , the ACK storing unit  24  supplies the latest ACK packet to the TCP/IP processor  22  and resets the ACK storing timer in step S 23 . That is, in this case, since the number of stored ACK packets reaches the maximum number of stored ACK packets, the received latest ACK packet is supplied to the TCP/IP processor  22 . Furthermore, since the latest ACK packet is supplied to the TCP/IP processor  22 , the ACK storing timer is reset. After the operation of step S 18  or step S 23 , the process returns to step S 11 . 
     After the operation of step S 18 , step S 19 , step S 21 , step S 22 , or step S 3 , the process returns to step S 11 , and the operations described above are repeatedly performed. That is, since the process from step S 11  to step S 23  is repeatedly performed, ACK packets serving as acknowledgements of receptions of transmission data items are stored in the ACK storing unit  24  or supplied to the TCP/IP processor  22 . 
     Note that, although not shown in  FIG. 3 , in a case where a certain period of time in which connection of the ACK packets is waited for, which is set using the ACK storing timer, has passed after the latest ACK packet is stored in the ACK storing unit  24 , the stored ACK packet is supplied to the TCP/IP processor  22 . 
     As described above, in a case where, while storing a first ACK packet, the ACK storing unit  24  receives a second ACK packet which is continuous from the first ACK packet, the latest ACK packet is stored and ACK packets which have been stored are counted. On the other hand, in a case where a third ACK packet which is not continuous from the first ACK packet is received, in a case where a certain period of time has passed after the ACK storing timer started counting, or in a case where the number of stored packets reaches the maximum number of ACK packets, the latest ACK packet which has been stored in the ACK storing unit  24  is supplied to the TCP/IP processor  22 . 
     Referring back to the flowchart of  FIG. 2 , in step S 6 , the TCP/IP processor  22  recognizes data items, among a plurality of data items, which are included in the transmission data and which have been transmitted in accordance with information items included in corresponding ACK packets so as to discard the data items which have been transmitted at an arbitrary timing in which the TCP/IP processor  22  receives the ACK packets from the ACK storing unit  24 . The transmission processing is thus terminated. 
     By this, in the transmission apparatus  11 , the TCP/IP processor  22  performs the TCP/IP transmission processing while the ACK storing unit  24  restricts a supply of an ACK packet received from the data receiver to the TCP/IP processor  22 . Accordingly, an amount of processing of receiving an ACK packet performed by the TCP/IP processor  22  can be reduced. This is significantly effective in a case where a CPU (Central Processing Unit) having small capacity is used. 
     Here, it has been described that the ACK storing unit  24  determines whether the ACK packet is to be supplied with reference to the configuration shown in  FIG. 1 . However, the ACK storing unit  24  may make such a determination in accordance with a request from the TCP/IP processor  22 . Next, a configuration designed for processing of receiving the stored latest ACK packet at a predetermined timing, which is performed by the transmission apparatus  11  having a section which stores the latest ACK packet, will be described. 
       FIG. 4  is a block diagram illustrating another configuration of the communication system according to a second embodiment of the present invention. 
     Note that reference numerals the same as those shown in  FIG. 1  are used for components shown in  FIG. 4  which are the same as those shown in  FIG. 1 , and therefore, descriptions thereof are omitted for avoiding a repetition. This configuration is different from that of  FIG. 1  in that a TCP/IP processor  41  and an ACK storing unit  42  are employed instead of the TCP/IP processor  22  and the ACK storing unit  24 , respectively. 
     The TCP/IP processor  41  has a function basically the same as that of the TCP/IP processor  22 . However, the TCP/IP processor  41  is different from the TCP/IP processor  22  in that the TCP/IP processor  41  further has a function of transmitting the ACK storing unit  42  of an ACK processing request at an arbitrary timing. 
     Note that, the ACK processing request is transmitted from the TCP/IP processor  41  to the ACK storing unit  42  when a latest ACK packet stored in the ACK storing unit  42  is to be received by the TCP/IP processor  41 . Therefore, the TCP/IP processor  41  receives the latest ACK packet stored in the ACK storing unit  42  by transmitting the ACK processing request to the ACK storing unit  42 . 
     Note that the ACK processing request should be less-frequently issued in order to attain high transmission performance whereas the ACK processing request should be frequently issued in order to attain high robustness. That is, the transmission performance and the robustness have the trade-off relationship, and are influenced by performance of hardware of the receiver or network throughput. Therefore, an appropriate value is set to the frequency of issuance of the ACK processing request by a designer. 
     The ACK storing unit  42  stores an ACK packet supplied from a transmission/reception unit  23 , and supplies the latest ACK packet stored therein to the TCP/IP processor  41  in response to the ACK processing request transmitted from the TCP/IP processor  41 . 
     Note that since the ACK packet is supplied to the TCP/IP processor  41  in response to the ACK processing request, the maximum number of stored ACK packets and an ACK storing timer are not demanded to be set in a transmission apparatus  11  of  FIG. 4 . However, as with the transmission apparatus  11  of  FIG. 1 , such parameters may be set. In this case, The ACK storing unit  42  supplies the latest ACK packet stored therein to the TCP/IP processor  41 , in a case where the ACK processing request is transmitted thereto, in a case where another ACK packet which is not continuous from the ACK packet stored therein is received, in a case where a period of time in which the ACK storing timer counts after the latest ACK packet is stored exceeds a certain period of time, or in a case where the number of stored ACK packets has reached the maximum number of stored ACK packets. 
     Other configurations of the communication system shown in  FIG. 4  are the same as those of the communication system shown in  FIG. 1 . 
     Transmission processing performed by the transmission apparatus  11  of  FIG. 4  will now be described. 
     The transmission processing performed by the transmission apparatus  11  of  FIG. 4  is different from that performed by the transmission apparatus  11  of  FIG. 1  which is described with reference to the flowchart of  FIG. 2  in operations performed in step S 5  and step S 6 . Therefore, an operation performed by the ACK storing unit  42  of  FIG. 4  which corresponds to the operation of step S 5  of  FIG. 2  and an operation performed by the TCP/IP processor  41  of  FIG. 4  which corresponds to the operation of step S 5  of  FIG. 2  will be described hereinafter. 
     Specifically, as with the operations performed in step S 1  to step S 4  of  FIG. 2 , a packet transmitted from the transmission apparatus  11  of  FIG. 4  is received by a reception apparatus  12 , an ACK packet serving as an acknowledgement of reception is transmitted from the reception apparatus  12 . The transmission apparatus  11  receives the ACK packet. 
     Then, the ACK storing unit  42  of  FIG. 4  performs ACK storing processing which is described with reference to a flowchart of  FIG. 5  and which corresponds to the ACK storing processing performed in step S 5  of  FIG. 2 . That is, the processing shown in the flowchart of  FIG. 5  corresponds to the processing performed in step S 5  of  FIG. 2 . 
     As with the operations performed in step S 11  to step S 14 , step S 19 , and step S 20 , in step S 41  to step S 44 , step S 48 , and step S 49 , in a case where an ACK storing function of the ACK storing unit  42  is not available, in a case where a received packet does not correspond to a packet transmitted from a communication partner, and in a case where the received packet corresponds to the packet transmitted from the communication partner and a TCP control flag other than a TCP option and an ACK flag has been added to the ACK packet, the received ACK packet is not stored in the ACK storing unit  42  and is immediately supplied to the TCP/IP processor  41 . 
     On the other hand, when a preceding ACK packet has not been stored in the ACK storing unit  42  and it is determined that a TCP control flag other than a TCP option and an ACK flag has not been added to the received ACK packet in step S 49 , the ACK storing unit  42  stores the received packet therein as the latest ACK packet in step S 50 . Note that, unlike the operation of step S 21  of  FIG. 3 , the ACK storing timer is not demanded to be set in step S 50 , and therefore, an operation of setting the ACK storing timer is not performed. 
     As with the operations in step S 15 , step S 16 , and step S 22  of  FIG. 3 , in step S 45 , step S 46 , and step S 51 , when the ACK packet received by the ACK storing unit  24  is not continuous from the stored preceding ACK packet, the stored preceding ACK packet and the latest ACK packet are supplied to the TCP/IP processor  41  whereas when the ACK packet received by the ACK storing unit  24  is continuous from the stored preceding ACK packet, it is determined whether an TCP control flag other than a TCP option and an ACK flag has been added to the ACK packet in step S 46 . When the determination is affirmative in step S 46 , the ACK storing unit  42  supplies the preceding ACK packet stored therein and the latest ACK packet to the TCP/IP processor  41  in step S 51 . 
     On the other hand, when the determination is negative in step S 46 , the ACK storing unit  42  stores the received ACK packet as the latest ACK packet therein in step S 47 . Note that, unlike the operation performed in step S 18  of  FIG. 3 , the operation of setting the ACK storing timer and an operation of counting stored ACK packets are not demanded to be performed, and accordingly, these operations are omitted. 
     As described above, as with the ACK storing unit  24  of  FIG. 1 , in the ACK storing unit  42  of  FIG. 4 , an operation of storing the received ACK packet is performed. However, the preceding ACK packet which has been stored therein is not demanded to be supplied, and therefore, an operation of controlling the ACK storing timer and the number of stored ACK packets is not performed. 
     Referring back to the flowchart of  FIG. 2 , the TCP/IP processor  41  of  FIG. 4  performs processing of receiving an ACK packet in step S 6 . This processing will be described with reference to a flowchart shown in  FIG. 6 . That is, the processing of the flowchart shown in  FIG. 6  corresponds to the operation performed in step S 6  of  FIG. 2 . 
     In step S 61 , the TCP/IP processor  41  transmits an ACK processing request to the ACK storing unit  42  at an arbitrary timing, for example, at a timing when processing for a unit of single transmission performed in the TCP/IP processor  41  is completed. The ACK storing unit  42  transmits an ACK packet in response to the request, and the TCP/IP processor  41  receives the ACK packet which was stored in the ACK storing unit  42 . 
     In step S 62 , the TCP/IP processor  41  performs the processing of receiving an ACK packet. Specifically, the TCP/IP processor  41  recognizes data items which have been transmitted in accordance with information items included in corresponding ACK packets transmitted from the ACK storing unit  42  so as to discard the data items which have been transmitted. Thereafter, the process returns to step S 61  and operations in step S 61  and step S 62  are repeatedly performed. 
     As described above, the processing of receiving an ACK packet is performed by transmitting the ACK packet from the ACK storing unit  42  to the TCP/IP processor  41  in response to the ACK processing request supplied from the TCP/IP processor  41  which performs the processing of receiving an ACK packet. 
     As described above, according to the present embodiment, since a supply of an ACK packet from a data receiver to a section which performs the processing of receiving an ACK packet can be restricted. Accordingly, an amount of the processing can be reduced resulting in improvement of a speed of the TCP/IP communication. This is significantly effective in a case where a CPU having small capacity such as an incorporated CPU is used, for example. 
     A series of the foregoing operations may be performed by hardware or software. In a case where the series of the operations is executed by software, a program which constitutes the software is installed in a computer incorporated in dedicated hardware, or installed in a general personal computer, for example, which can execute various functions by installing various programs from a program recording medium. 
       FIG. 7  is a block diagram illustrating an example of a configuration of a personal computer which performs the series of the operations by executing a program. A CPU  111  executes various operations in accordance with programs stored in a ROM (Read Only Memory)  112  and a recording unit  118 . A RAM (Random Access Memory)  113  stores programs and data, for example, to be executed by the CPU  111  as needed. The CPU  111 , the ROM  112 , and the RAM  113  are connected to one another through a bus  114 . 
     The CPU  111  is connected through the bus  114  to an input/output interface  115 . The input/output interface  115  is connected to an input unit  116  including a microphone, and an output unit  117  including a display and a speaker. The CPU  111  executes various operations in response to various instructions input using the input unit  116 . The CPU outputs results of the operations to the output unit  117 . 
     A recording unit  118  connected to the input/output interface  115  corresponds to a hard disk, for example, and stores programs to be executed by the CPU  111  and various data. A communication unit  119  communicates with external devices through a network such as the Internet or a local area network. 
     A program may be received through the communication unit  119  and recorded in the recording unit  118 . 
     A drive  120  connected to the input/output interface  115  drives a removable medium  121  such as a magnetic disc, an optical disc, a magneto-optical disc, or a semiconductor memory which is inserted therein, and obtains programs and data recorded in the removable medium  121 . The obtained programs and data are transmitted to the recording unit  118  as needed and stored in the recording unit  118 . 
     Examples of the program recording medium which stores the programs which is installed in a computer and which can be executed by the computer include the removable medium  121  which is a package medium such as a magnetic disk (including a flexible disk), an optical disc (including a CD-ROM (Compact Disc-Read Only Memory)), a DVD (Digital Versatile Disc), a magneto-optical disc, or a semiconductor memory, and the ROM  112  which temporarily or permanently stores the program, or a hard disk including the recording unit  118 . The program is stored in the program recording medium through the communication unit  119  corresponding to an interface such as a rooter or a modem as needed and further through a wired or wireless communication medium such as a local area network, the Internet, or digital satellite broadcasting. 
     Note that, a step of recording a program stored in the recording medium includes processing performed in a time-series manner in an order described herein, and the step further includes processing performed in parallel or processing independently performed. 
     The term “system” means an entire apparatus including a plurality of units herein. 
     The present embodiment is not limited to the foregoing embodiments, and various modification may be made without departing from the scope of the invention. 
     The present application contains subject matter related to that disclosed in Japanese priority Patent Application JP 2008-098267 filed in the Japan Patent Office on Apr. 4, 2008, the entire content of which is hereby incorporated by reference. 
     It should be understood by those skilled in the art that a variety of modifications, combinations, sub-combinations and alterations may occur, depending on design requirements and other factors insofar as they are within the scope of the appended claims or the equivalents thereof.