What is to be understood if the TCP sender receives multiple acknowledgements for segment x. What does it mean...why does it happen?
Does this mean there is an error occuring
They have a good overview of this in here: http://en.wikipedia.org/wiki/Fast_retransmit
Well I read and re-read the above links but I still don't understand. First off is this scenario dependent or is there one general answer (as in one size fits all). So is it that the interval before the data is re-transmitted is really short, so there isn't enough time for the acknowledgement to be received when the transmission medium is busier than usual
Well from what I understand, the ack returned from the receiver to the sender contains the next packet sequence number that the receiver is awaiting for. In normal transmission that's ok: the packet sent, the receiver gets it, increments the expected sequence number and sends an acknowledge back. The problem starts where the receiver gets a packet with sequence number it does not expect. For example, the receiver expects for packet #3 and gets packet #5. That means that the sender sent already packets #3 and #4 but the receiver never got them and therefore is still awaiting for #3. However, there is a slightly complication here. It could be that packets #3, #4 and #5 were sent, but along the way #3 and #4 got delayed and therefore #5 arrives first to the destination. In that case it is said that the messages are out-of-order, but it doesn't mean they are lost. So the receiver gets #5, returns an ack telling it is still expecting #3. This ack is duplicated, because the receiver was already expecting #3, and the previous ack sent also says so. Now the receiver gets, say, #3 and returns ack "I am expecting #4". Eventually #4 really arrives, but since #5 has been received already the ack is "I am expecting #6" So alone duplicate acks do not tell you much, it could be a case of out-of-order transmission. However, if this repeats itself and the receiver sends multiple acks with the same number, then it gets more and more likely to assume that the packet was lost, because many later packets have already reached the destination by this time. So the sender can be set so if it receives a threshold number of duplicate acks then it just assumes the packet was lost and resends it. This is called 'Fast retransmit' because the sender presumes the packet is lost even though the timeout for its ack has not passed yet. It simply relies on the fact that later packets have reached the destination by this time, so something probably went wrong.
thankyou, now, when I'm reading it again I can actually understand it.
Ah, I'm glad I could help =)
Join our real-time social learning platform and learn together with your friends!