A communication system (100, 200, 300) that transmits a data unit including one or a plurality of packet data, from a communication device (10, 30, 40, 50) to another communication device (10, 30, 40, 50) through a network, each communication device (10, 30, 40, 50) comprising: a transmitting unit (11, 41, 51) for transmitting the data unit to the communication device (10, 30, 40, 50) on the receiving side; a receiving unit (12, 42, 52) for receiving an acknowledgment of the data unit transmitted from the communication device (10, 30, 40, 50) on the receiving side; a first loss determination unit (13, 43, 53) for determining, using a timer, that the receiving unit (12, 42, 52) receives the acknowledgment for the data unit within a predetermined time after the transmission of the data unit; a retransmitting unit for retransmitting the data unit when the first loss determination unit (13, 43, 53) determines that the data unit is lost; a spurious timeout determination unit (16, 45, 55) for determining that a spurious timeout caused by delay of the data unit has occurred, when the acknowledgment received after determination of the first loss determination unit (13, 43,53) is not a duplicate acknowledgment; a window control unit (17, 46, 57, 67) for controlling setting of a target value to a value of a slow start threshold to decrease a size of a congestion window that controls the number of transmissions of the data unit when the spurious timeout determination unit (16, 45, 55) determines that the spurious timeout has occurred; and a second loss determination unit (14, 54, 64) for, when the receiving unit (12, 42, 52) receives the acknowledgment and a ACK number of the received acknowledgment is smaller than a maximum sequence number of the data unit, determining whether or not the acknowledgement is the duplicate acknowledgment to determine that the data unit is lost, wherein when the second loss determination unit (14, 54, 64) determines that the data unit is lost, the window control unit (17, 46, 57, 67) controls the size of the congestion window to be gradually decreased to the target value. a transmitting unit (11, 41, 51) for transmitting the data unit to the communication device (10, 30, 40, 50) on the receiving side; a receiving unit (12, 42, 52) for receiving an acknowledgment of the data unit transmitted from the communication device (10, 30, 40, 50) on the receiving side; a first loss determination unit (13, 43, 53) for determining, using a timer, that the receiving unit (12, 42, 52) receives the acknowledgment for the data unit within a predetermined time after the transmission of the data unit; a retransmitting unit for retransmitting the data unit when the first loss determination unit (13, 43, 53) determines that the data unit is lost; a spurious timeout determination unit (16, 45, 55) for determining that a spurious timeout caused by delay of the data unit has occurred, when the acknowledgment received after determination of the first loss determination unit (13, 43,53) is not a duplicate acknowledgment; a window control unit (17, 46, 57, 67) for controlling setting of a target value to a value of a slow start threshold to decrease a size of a congestion window that controls the number of transmissions of the data unit when the spurious timeout determination unit (16, 45, 55) determines that the spurious timeout has occurred; and a second loss determination unit (14, 54, 64) for, when the receiving unit (12, 42, 52) receives the acknowledgment and a ACK number of the received acknowledgment is smaller than a maximum sequence number of the data unit, determining whether or not the acknowledgement is the duplicate acknowledgment to determine that the data unit is lost, wherein when the second loss determination unit (14, 54, 64) determines that the data unit is lost, the window control unit (17, 46, 57, 67) controls the size of the congestion window to be gradually decreased to the target value.