In a AIMD TCP connection, What happens to the packets in the sender buffer when "eventually a timeout would be reached" for a delayed ACK for a specific packet at the sender side?
Suppose the unit of sender congestion window is (packet) and the sender has congestion window = 2 packets (already sent) and at that instance the occupied buffer at the receiver side equals (2 out of 2 packets that already received from the sender i.e. the buffer is fully occupied).
When timeout happens, the congestion window size at the sender will drop to 1 packet due to multiplicative decrease of the AIMD and the effective window by which the sender is sending is already = 0, (i.e. no available space in the path between the sender and the receiver to accept more packets), so in that case what happens to the packets (packet 1 and packet 2) in the sender buffer?
Suppose that the sender buffer contains packet 1 and packet 2 and packet 1 delayed ACK caused timeout.
MAXWINDOW = min(sender congestion window, advertised window of the receiver) Effective window = MAXWINDOW -[last packet sent - last packet ACKED]
I know that timeout must happen but how the retransmission can happen at the time of ZERO effective window size. one more thing that retransmission should not happen directly after time out in this case is that the retransmitted packet 1 will NOT be received by the receiver because the buffer at the other side i.e. the receiver side is fully occupied.
So the retransmission of packet 1 should be also delayed until the Effective window size become not equal to zero
if the retransmission of the packet 1 has to be delayed, What if the Acknowledgment of the packet 1 was received after timeout happens and before that time after the Effective window size become not equal to zero, will it has to be sent?
Also the congestion window size at the sender will drop to 1 so what happens to the packet in the sender buffer ?
EDIT : consider the receiver window is only advertised once at the beginning of the connection establish phase and considered constant after that during the connection.