If a tcp program A send two data packets to another TCP program B, packet 1: sequence number from 1000 to 2000; packet 2: seq number from 2000 to 3000.
Generally B should reply with 2 ACKs, one for acknowledging packet 1 and the other for packet 2. Now, if only the second ACK is received by A, will A still wait for the first ACK or not?
I know TCP is byte-oriented stream protocl. so A should not wait for the first ACK, is it right? In theory, it is like this, how about the real implemented TCP stack?
BTW, I have a pecular question. If A send to B an ACK to with ack seq number 3001(this is for acknowledging packet 2). But someone in the middle modify the ack seq number to 2501, that's being said, B acknowledge a half TCP packet. Then will A retransmit from byte which corresponds to seq 2000 or 2501?