DX > SYN > server DX < SYN ACK < server (start SYN_RECV timer, retries=0) DX > ACK > server... TCP_DEFER_ACCEPT? yes! packet_has_data? no! drop 6! ... some time later: SYN_RECV timeout, so DX < SYN ACK < server (start SYN_RECV timer, retries=1) DX > ACK > server... TCP_DEFER_ACCEPT? yes! packet_has_data? no! drop 6! ... some time later: SYN_RECV timeout, so DX < SYN ACK < server (start SYN_RECV timer, retries=2) DX > ACK > server... TCP_DEFER_ACCEPT? yes! packet_has_data? no! drop 6! ... some time later: SYN_RECV timeout, so DX < SYN ACK < server (start SYN_RECV timer, retries=3) DX > ACK > server... TCP_DEFER_ACCEPT? yes! packet_has_data? no! drop 6! ... some time later: SYN_RECV timeout, so DX < SYN ACK < server (start SYN_RECV timer, retries=4) DX > ACK > server... TCP_DEFER_ACCEPT? yes! packet_has_data? no! drop 6! ... some time later: SYN_RECV timeout, so DX < SYN ACK < server (start SYN_RECV timer, retries=5) DX > ACK > server... TCP_DEFER_ACCEPT? yes! packet_has_data? no! drop 6! ... some time later: SYN_RECV timeout, retries >=5 so close half-open connection DX > ACK + data > server... Seq # invalid, so DX < RST < server