1
1
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?
This is theory, how about the practical, I mean the TCP stack implementation. And I have a pecular question, pls check my updated question. thanks! – misteryes – 2013-05-27T12:38:28.957
2@misteryes This is also real-world behavior. If you want to see the "practical behavior", install a monitor like Wireshark or consult one of the open-source TCP stacks (e.g. Linux). – Lekensteyn – 2013-05-27T14:22:29.653