Super User is a question and answer site for computer enthusiasts and power users. 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

What will happen in the following scenario (assume the connection is already established):

  1. (stack A) send 10 byte data

  2. (stack B) send ACK for 10 byte data

  3. (stack B) send 200 byte data

  4. (stack B) send 100 byte data

  5. (stack B) send 50 byte data

  6. (stack A) send ACK for 350 byte data and also send 70 bytes data
    This segment gets lost and does not reach machine B.

  7. (stack B) retransmit 200 byte data (step 3)

  8. (stack A) send ACK for 200 byte data and the next expected seq number as the one for 70 bytes data

Question: Should 70 bytes data be also transferred with the ACK in step 8? Note that the retransmission timer for step 6 has not expired yet.

share|improve this question
Sounds quite homeworky to me. – MDMarra Feb 27 '10 at 15:04
being homework doesn't make this "not a real question", and doesn't make it an offensive question or spam. the Stack Overflow trilogy has a long history of homework questions. please refer to… or – quack quixote Feb 28 '10 at 3:13
This not a homework question or spam. – user29625 Mar 1 '10 at 7:50

No, the 70 bytes should not be included with the immediate ACK for out-of-order segment arrival.

Why? Step 7 is the arrival of an out-of-order segment. TCP must generate an immediate ACK giving the next expected byte (which will be 361 + whatever has been sent before Step 1) on receipt of an out-of-order segment. But TCP doesn't retransmit the segment containing the 70 bytes of data with the piggybacked ACK. That segment is still on the retransmit queue waiting for the timer to expire, or if fast retransmit is enabled, three duplicate ACKs arrive, but neither has happened yet. Out-of-order arrival is an indication of congestion, so it makes sense that TCP should send the smallest ACK possible.

share|improve this answer

Your Answer


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