[e2e] Data + FIN

John Border border at hns.com
Tue Jan 23 11:34:31 PST 2001


Is it common practice for a TCP stack to send a FIN with the last segment of
data if the opportunity presents itself?  We ran into the following
scenario...

    SYN ------------->
        <------------- SYN+ACK
    ACK ------------->
               X<----- DATA
        <------------- FIN
    ACK ------------->                              [Doesn't ACK the FIN]
                       Retransmission Timeout
        <------------- DATA+FIN

We had not seen this before and were wondering if this is typical.

This uncovered a bug (easily fixed) in our code because we queued the first
FIN and ended up processing two FINs.  (Since the FIN is included in the
sequence number space, there are some here who think adding the FIN to the
DATA segment is illegal because it makes the retransmitted segment bigger than
the original.  I did a quick perusal of a few RFCs (but definitely not all of
the relevant RFCs) and didn't find anything which makes me think it is
illegal.  Illegal or not, since it is happening in the real world, we need to
handle it.)


John



More information about the end2end-interest mailing list