[e2e] Some questions about TCP.

rick jones perfgeek at mac.com
Mon Nov 23 07:47:25 PST 2009

On Nov 22, 2009, at 1:24 PM, Detlef Bosau wrote:

> Noel Chiappa wrote:
>>    > From: Detlef Bosau <detlef.bosau at web.de>
>>    > 1.: Recently, I was told, however I did not find a reference  
>> in some
>>    > RFC, we had two distinct packet types in TCP:
>>    > - those _with_ payload, which are _data_ _segments_,
>>    > - those _without_ payload, which are _acknowledgements_.
>>    > If this is correct, I would appreciate some reference.
>> No, not really.
> Argh! :-[

I always thought that without data one would call it a control  
segment, or perhaps overhead :)  A SYN or FIN segment can also flow  
sans data, but they are not necessarily ACKs.

>> All TCP packets contain both i) an ack field (for acking
> Correct. So, basically I would expect acks to flow "piggypack" on  
> the data packets.
> The problem occurs when you clock out several segments from a TCP  
> peer. In that case, several segments / TCP packets will contain the  
> same ack number.
> Now, the RFC states explicitly that a segment _MUST_ _NOT_ be  
> acknowled more than once. So, how do we avoid
> incoming packets to be mistaken for dup acks?

IIRC the duplicate ACK test includes the advertised window holding  
fixed.  If the arriving segment updates the window, then it would not  
qualify for a duplicate ACK. I have some other recollection about the  
arriving segments being ack-only, but perhaps that is ancient recall  
and things were updated?

rick jones
there is no rest for the wicked, yet the virtuous have no pillows

More information about the end2end-interest mailing list