RFC 793 ( pages 20 and up ) TCP is the protocol that make sure that the transmission is done without losing any packet by going through a set of operation for the order of transmission and for any duplication detection.
Out-of-order is basically a packet that arrives just a little too late to be in-sequence, but is not a retransmission. It’s the original packet.
Out-of-order packets may not affect performance if there is very little time between their expected arrival and their actual arrival. For example, if two packets arrive in reverse order, but the packets both arrive within 1 ms, it is unlikely this will cause a problem. If out-of-order packets arrive after quite a delay, or there are many out-of-order packets, there may be a noticeable degradation in performance. TCP cannot pass received data up to the application until all the bytes are in the correct order.
Out-of-order packets can be caused by a stream using multiple different speed paths to reach the target (such as traffic traveling through the Internet), poorly configured queuing along a path or even asymmetric routing configurations. In the case of queuing along a path, out-of-order packets can be caused when the queuing device does not forward packets in a first-in/first-out (FIFO) order.