Computer Science Stack Exchange is a question and answer site for students, researchers and practitioners of computer science. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Computer Networking: A Top Down Approach Featuring the Internet, Jim Kurose, Keith Ross Addison-Wesley 4nd edition , page -223.

Also here slide 60 .

RDT2.1 (Reliable data transfer) -

state=ready; i=0;
On rdt_send(d,m):
    if state=ready
    { p=<s,d,m,i,
    state=busy; }
On udt_deliver(a)
     If a=<“ack”,EDC(“ack”)>
    { i++;
    state=ready; }
    else udt_send(p);

When the Sender side is in state=ready , does he still listener to "ack" recived from the Reciver ?

I need to know this , cause if so it seems that the Sender can get duplicate "ack"'s from the reciver and inc the i without sending any packet mainwhile .

share|cite|improve this question
up vote 0 down vote accepted

From the code above, Yes.

Regarding your second note. A sender will go to the busy state if it sends a message and there it will wait for an ACK. I can imagine that the reciver would send multiple ACK's only if there is some fault. Usually, such faults are not considered in the basic protocol description, but are considered in the actual implementation.

share|cite|improve this answer
Indeed , according to the book (1) duplicate ACK's is the motivation for RDT2.2 (2) RDT2.1 doesn't deal with duplicate ACK's , so I think the answer is like you say . – URL87 Dec 30 '12 at 6:05

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.