Doesn't this same basic problem happen in this simple case?

On Thu, May 22, 2025, at 00:59, David Benjamin wrote:
>  1. Client sends request
>
>  2. Server reads request
>
>  3. Server sends response
>
>  4. Server closes connection
>
>  5. Client reads response
>
>  6. Client closes connection

Maybe the client is not pushing data at the server after step 4, but there is a 
chance that the client believes that some TCP segment was lost, causing the 
client to retransmit what it thinks is lost.  When that retransmission arrives 
at the server, the server might generate a RST in response if it has discarded 
state.

The same applies if the client has any cause to send more data at that point.  
That is, in a slightly more complex protocol interaction.

The underlying problem is that the server is closing and discarding state 
prematurely.  That's a general problem with TCP.  State synchronization in 
protocols is a challenging problem and ultimately any clean transition, whether 
it be connection establishment or closure, requires three messages or 1.5 RTT 
to execute.  You can try to use timers, if you are willing to accept some rate 
of things being left hanging, which is what most session close arrangements end 
up using, because that's often good enough.  There's a bunch of text in QUIC, 
where we "solved" this problem using timers after spending a bunch of time on 
trying to find something better than the full 1.5 exchange.

The general advice I'd give is to not discard state immediately after 
initiating a close, at least for long enough to ensure that any delayed 
activity doesn't trigger an unwanted reset reaction.

_______________________________________________
TLS mailing list -- tls@ietf.org
To unsubscribe send an email to tls-le...@ietf.org

Reply via email to