Before introducing the modification, we realized that TCP immediately needs to generate an ACK (a duplicate ACK) when receiving an out-of-order packet segment ). The duplicate ACK should not be delayed. The purpose of this duplicate ACK is to let the other party know that it has received an out-of-order packet segment and tell the other party the serial number they want to receive. We do not know whether a duplicate ACK is caused by a lost packet segment or because only a few packets are reordered, so we are waiting for the arrival of a few duplicate ACK packets. If this is only the re-sorting of some packets, only 1 ~ may be generated before the re-sorting packets are processed and a new ACK is generated ~ Two Duplicate ACK. If a series of three or more duplicate ACK packets are received, it is very likely that a packet segment is lost. So we re-transmit the lost data packet segment without waiting for the timeout timer to overflow. This is the fast retransmission algorithm. The next step is not to run the slow start algorithm, but to avoid congestion. This is the quick recovery algorithm. In, we can see that no slow start is executed after three duplicate ACK packets are received. On the contrary, the sender retransmits three new data segments (segment 67, 69, and 7 1) before receiving the ACK of the retransmission ). In this case, the cause of no slow start is that the receipt of the duplicate ACK not only tells us that a group is lost. Because the receiver generates duplicate ACK only when it receives another packet segment, the packet segment has left the network and enters the receiver's cache. That is to say, there is still flow data between the receiving and receiving ends, and we don't want to perform a slow start to suddenly reduce the data flow. This algorithm is usually implemented as follows: 1) When 3rd duplicate ACK packets are received, set ssthresh to half of the current congestion window cwnd. Retransmission of the lost packet segment. Set cwnd to ssthresh plus a 3-fold packet segment size. 2) When receiving another duplicate ACK, cwnd increases the size of one packet segment and sends one group (if the new cwnd allows sending ). 3) when the next ACK arrives, set cwnd to ssthresh (the value set in step 1 ). This ACK should be used to confirm the re-transfer in step 1 within a round-trip time after retransmission. In addition, this ACK should also be used to confirm all intermediate packet segments between the lost group and the 1st duplicate ACK packets received. This step avoids congestion because we will halved the current rate when the group is lost.