TCP RST Packets Ignored
Hi,
I'd like to understand more details about the RST packet behaviors.
Do all RST packets need ACK bit set? I read RFC#793 and it looks like the ACK bit in RST packets is in the reverse relationship with the incoming packets. This means, if the incoming packet has ACK bit then returned RST does not have ACK bit etc.. But I also checked TCP/IP Illustrated Vol1 and it mentioned For a reset segment to be accepted by a TCP. the ACK bit field must be set and the ACK number field must be within the valid window. So I'm confused about how a RST can be accepted. I know RFC#5961 mentioned to check the sequence number but what's the actual mandatory conditions for a valid RST packet?
Based on #1 question I asked, I recently saw a very strange issue that the client is doing FIN/ACK retransmission. The server side returned RST packet w/o ACK but the sequence number in the RST is the same as the next sequence number. So according to RFC#5961 it should be valid. But that RST does not tear down the whole connection and client side simply ignored that to keep sending FIN/ACK in exponential back-off style. So my question is 1) is that RST valid? 2) If it's valid why the client TCP ignores that?
Thanks in advance.