Based on RFC 793, TCP makes use of a retransmission timer per phase in its retransmission queue. Which means phase 2000 in your instance will solely be retransmit when its personal retransmission timer expires.
When ACK num 2000 is obtained, the CWND permits for 2000 excellent bytes. However at this level, there are 3000 bytes excellent, so nothing additional is shipped. TCP waits for the respective retransmission timers earlier than resending segments 2000, 3000 and 4000.
Nevertheless, in your instance situation, 4 segments are despatched directly, that means their respective retransmission timers will expire at (virtually precisely) the identical time. That will outcome within the retransmission of segments 2000 and 3000 instantly after retransmitting phase 1000.
To obviously reply the query, RFC 793’s TCP will not “wait for one more expiration of the retransmission timer” as a result of there isn’t any such factor as “the retransmission timer”. TCP will look forward to the expiration of any of the presently lively retransmission timers to retransmit the corresponding phase.
In actuality, TCP has advanced since 1981.
For instance, Quick Retransmit (RFC 2581/5681) is an exception to the above rule. After receiving three duplicate acks indicating the out-of-order reception of a phase, quick retransmit will kick in retransmitting a phase earlier than its retransmission timer expires.
TCP is byte-stream oriented, and the retransmission queue holding beforehand despatched segments is just one of some ways to implement retransmissions.
A TCP implementation would possibly as effectively do with out such a queue and generate a brand new phase ranging from the primary unacknowledged byte within the buffer. No specification requires this to be the precise copy of a beforehand despatched phase. It might have a special measurement or include {a partially} overlapping a part of the bytestream.
Introducing options like selective acknowledgments additional complicates issues.