Subject: A doubt regarding retransmitted segment.

From: kumar <[email-masked]>
Date: Fri, 14 Dec 2001 16:10:13 +0530

Hi all,
       I need a small clarification on segments that are to be retransmitted.

  DOUBT : Lets say, that applicaion A (sending TCP) has sent application B 
(Receiving TCP) a segment of 1000 bytes. Of these 1000 only 500 reached B 
and A has to retransmit the rest (500 bytes).

1 )  Can A now send a segment of these 500 bytes only ? Or, it MUST append 
500 bytes lying next to this segment and then send a
segment of 1000 bytes ? Which of the above should be followed ?
2 )  if the former is allowed, does it lead to silly wondow syndrome (lets 
say, instead of 500 bytes we had to retransmit 50 bytes)?

expecting ur response.
thanks
kumar

---

From: [email-masked]
Date: Fri, 14 Dec 2001 09:47:59 -0600 (CST)

> Date: Fri, 14 Dec 2001 16:10:13 +0530
> From: kumar <[email-masked]>
> Subject: A doubt regarding retransmitted segment.
...
> segment of 1000 bytes ? Which of the above should be followed ?

On retransmit, TCP is free to re-packetize the data.  (The BSD code
does.)  So, there is nothing wrong with it retransmitting the next
1000 bytes instead of just the next 500 bytes.  It doesn't have to,
but most implmentations will include additional data if it is there.

> say, instead of 500 bytes we had to retransmit 50 bytes)?

No.  We're talking about a retransmit, not the normal data flow.
If the sending TCP had already transmitted the additional 500
bytes as part of it's normal data flow, then when the retransmitted
packet arrives, the trailing 500 bytes that were previously
received will be trimmed off and ignored.

If the additional 500 bytes of data had not been previously sent, then
the sending TCP's SND_NXT will be after those 500 bytes.  Its next
packet will start at that point, and the normal Silly Window Avoidance
code will deal with any issues.

			-David Borman, [email-masked]