On 3/7/2017 10:12 PM, David Mazieres expires 2017-06-05 PDT wrote:
> Joe Touch <to...@isi.edu> writes:
>
>> On 3/7/2017 9:45 PM, dm-list-tcpcr...@scs.stanford.edu wrote:
>>> Wesley Eddy <w...@mti-systems.com> writes:
>>>
>>>>>          If a host sends a SYN-only SYN+ENO segment bearing data and
>>>>>          subsequently receives a SYN-ACK segment without an ENO option,
>>>>>          that host MUST reset the connection even if the SYN-ACK segment
>>>>>          does not acknowledge the SYN data...
>>>> Saying "reset the connection" is interesting to me, because technically 
>>>> there is not yet any connection (there are TCBs at each side, but 
>>>> neither has entered ESTABLISHED state).  The reset that's sent should 
>>>> probably *not* acknowledge any data that may have been on the SYN-ACK, 
>>>> which seems important to state.  That way, if some application's 
>>>> transaction erroneously started due to data on the SYN, any response 
>>>> piggybacking the SYN-ACK would not be acknowledged, and the RST should 
>>>> cause the application transaction to fail.
>>> I'm trying to tie up loose ends here, and think this is the only
>>> relevant point from the mailing list that we may have not yet have
>>> satisfactorily addressed in our working draft.  Several points in
>>> section 4.7 use the term "reset the connection."  I've now attempted to
>>> define the term more pedantically the first time I use it.  Here's the
>>> new language:
>>>
>>>    If a host sends a SYN+ENO segment with data and receives
>>>    acknowledgment for the data, but the SYN TEP governing the data is
>>>    not the negotiated TEP (either because a different TEP was negotiated
>>>    or because ENO failed to negotiate encryption), then the host MUST
>> FWIW, I would just jump right to the following, which avoids giving
>> unnecessary detail:
>>
>>    abort the connection. Proceeding in any other fashion risks
>> misinterpreted SYN data.
> Thanks, that's how we had it before (well, "reset the connection" was
> what we had before).  But Wesley made me worry that the phrase "reset
> the connection" might not be specific enough.  Is "abort" better than
> "reset"?
Per RFC793:

Abort is an event that the TCP API implements (and can be called by
users, the OS, etc.).

Reset is a message that TCP issues/receives, and happens within the
protocol in reaction to message receipt, timer expiration, or API events.

This is why "reset the connection" is imprecise, whereas "abort the
connection" is not. ;-)

>>>    reset the TCP connection by transitioning to TCP's CLOSED state and
>>>                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>>>    responding to the acknowledgment with a reset segment as if the
>>>    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>>>    connection had never existed.  Proceeding in any other fashion risks
>>>    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>>>    misinterpreted SYN data.
>> If you do say which state to end up in, I would think you would want to
>> transition to TIME-WAIT, otherwise the connection could reopen using the
>> same socket pair and you may have a hazard condition.
>>
>> See: T. Faber, J. Touch, and W. Yue, “The TIME-WAIT state in TCP and Its
>> Effect on Busy Servers <http://www.isi.edu/touch/pubs/infocomm99/>,” in
>> /Proc. IEEE Infocom/, 1999, pp. 1573-1583.
> Right, this is exactly why I'm worried about getting too specific.  What
> I want to say is something like "abort the connection" with an implicit
> reference to best current practice.  If most people think "abort the
> connection" or "reset the connection" is unambiguous, then I'll go with
> that.
>
> Is there a reason you said "abort" rather than "reset"?  I was thinking
> reset might be better because of reset generation, but would defer to
> you on which word is better.

There is. See above.

Joe

_______________________________________________
Tcpinc mailing list
Tcpinc@ietf.org
https://www.ietf.org/mailman/listinfo/tcpinc

Reply via email to