1. 17
    1. 2

      According to this exhaustive resource I found on explaining this Windows TCP behavior, this is not in violation of RFC 793

      I have read this post and it claims that the TCP implementation can detect that the host is available and therefor can decide to resend the SYN. But the quoted parts of the RFC only describe when you need to send a RST package and when you accept a received RST package. What is missing is how you handle a acceptable RST package. So I looked it up and the RFC is clear about this:

      The receiver of a RST first validates it, then changes state. If the receiver was in the LISTEN state, it ignores it. If the receiver was in SYN-RECEIVED state and had previously been in the LISTEN state, then the receiver returns to the LISTEN state, otherwise the receiver aborts the connection and goes to the CLOSED state. If the receiver was in any other state, it aborts the connection and advises the user and goes to the CLOSED state.

      I don’t know how this can be misinterpreted that a TCP implementation by it’s own is allowed to resend a SYN without notify the upper layers.

      1. 3

        Yes.

        Also, everyone should take note that the IETF recently-ish (2022) completed a comprehensive cleanup of the TCP standard, combining various updates and revisions from the last 4 decades into RFC 9293 — refer to that instead of obsolete RFC 973! https://www.rfc-editor.org/rfc/rfc9293.html