Subject: Re: Need a clarification on use of ACK Flag.....

From: David Borman <[email-masked]>
Date: Wed, 21 Jul 1999 10:58:55 -0500 (CDT)

Joseph,

All normal TCP packets will have the ACK bit set, except for the
initial SYN packet.

> Date: Wed, 21 Jul 1999 10:27:57 -0400
> From: "A. Joseph Dupre III" <[email-masked]>
> Subject: Need a clarification on use of ACK Flag.....
> ...
> >From RFC 793: (page 16)
> =======================
>    Acknowledgment Number:  32 bits
>   
>      If the ACK control bit is set this field contains the value of the
>      next sequence number the sender of the segment is expecting to
>      receive.  Once a connection is established this is always sent.
>
>
> One vendor who we are trying to interoperate with has interpreted the
> above lines to mean that an ACK control bit MUST always be SET on
> every packet that is sent by our TCP after reaching ESTABLISHED state.
> This means setting the ACK flag on data segments, FIN, and RST.

Yes, that is correct.

> However, when looking at the state machine below from RFC 793, it does not
> show the ACK Flag being set on FIN packets for example.  When looking
> at Steven's TCP/IP Illustrated #1, one transition from FIN_WAIT_1 to 
> TIME_WAIT has an explicit FIN,ACK as the receive event that causes
> that transition.

The state machine is not the protocol definition, you have to read the
text.

> Any help people can provide me in understanding the appropriate use of
> the ACK control flag would be greatly appreciated.  Particularly if
> there is a section of the RFC 793 that clears this up or some other
> RFC such as 1122, pointing me at that would be great.

The above text that you quoted is quite clear, isn't it?  Once you
get into established state, the ACK bit/field is always set.

			-David Borman, [email-masked]