首页 > 解决方案 > 服务器以 [​​ACK] 响应客户端的 [SYN],最终来自客户端的 [RST, ACK]

问题描述

服务器在端口上运行192.168.0.192:51110并侦听传入连接。客户端192.168.0.73:5001每 3 秒左右尝试连接到服务器。如您所见,连接已建立。过了一会儿,服务器关闭了连接,客户端也关闭了。但随后奇怪的事情开始发生。客户端试图与 [SYN] 连接,但服务器关闭了一段时间,在此期间它以 [ACK] 响应。在某些时候它发生了变化 - 服务器再次监听但结果相同 - 客户端正在发送 [SYN],从服务器获得 [ACK] 并且客户端再次以 [RST, ACK] 响应。我的问题是:这是谁的错?在客户端正在努力连接到服务器时,我能够通过 netcat 连接到服务器而没有问题。

No. Time    Source  Destination Protocol    Length  Info
61209   418.027590  192.168.0.73    192.168.0.192   TCP 58  [TCP Retransmission] 5001 → 51110 [SYN] Seq=0 Win=5840 Len=0 MSS=1460
61244   421.081906  192.168.0.73    192.168.0.192   TCP 58  [TCP Retransmission] 5001 → 51110 [SYN] Seq=0 Win=5840 Len=0 MSS=1460
61259   421.538621  192.168.0.73    192.168.0.192   TCP 58  [TCP Port numbers reused] 5001 → 51110 [SYN] Seq=0 Win=5840 Len=0 MSS=1460
61351   424.652490  192.168.0.73    192.168.0.192   TCP 58  [TCP Retransmission] 5001 → 51110 [SYN] Seq=0 Win=5840 Len=0 MSS=1460
61368   424.653304  192.168.0.192   192.168.0.73    TCP 58  51110 → 5001 [SYN, ACK] Seq=0 Ack=1 Win=65535 Len=0 MSS=1460
61372   424.790294  192.168.0.73    192.168.0.192   TCP 56  5001 → 51110 [ACK] Seq=1 Ack=1 Win=5840 Len=0
61377   425.096394  192.168.0.73    192.168.0.192   TCP 90  5001 → 51110 [PSH, ACK] Seq=1 Ack=1 Win=5840 Len=36
61378   425.096592  192.168.0.192   192.168.0.73    TCP 54  51110 → 5001 [ACK] Seq=1 Ack=37 Win=65535 Len=0
61383   425.880701  192.168.0.73    192.168.0.192   TCP 90  5001 → 51110 [PSH, ACK] Seq=37 Ack=1 Win=5840 Len=36
61384   425.880880  192.168.0.192   192.168.0.73    TCP 54  51110 → 5001 [ACK] Seq=1 Ack=73 Win=65535 Len=0
61389   426.495133  192.168.0.73    192.168.0.192   TCP 90  5001 → 51110 [PSH, ACK] Seq=73 Ack=1 Win=5840 Len=36
61390   426.495307  192.168.0.192   192.168.0.73    TCP 54  51110 → 5001 [ACK] Seq=1 Ack=109 Win=65535 Len=0
61395   426.967946  192.168.0.73    192.168.0.192   TCP 90  5001 → 51110 [PSH, ACK] Seq=109 Ack=1 Win=5840 Len=36
61396   426.968117  192.168.0.192   192.168.0.73    TCP 54  51110 → 5001 [ACK] Seq=1 Ack=145 Win=65535 Len=0
61418   427.491273  192.168.0.73    192.168.0.192   TCP 90  5001 → 51110 [PSH, ACK] Seq=145 Ack=1 Win=5840 Len=36
61419   427.491456  192.168.0.192   192.168.0.73    TCP 54  51110 → 5001 [ACK] Seq=1 Ack=181 Win=65535 Len=0
61422   428.235976  192.168.0.73    192.168.0.192   TCP 90  5001 → 51110 [PSH, ACK] Seq=181 Ack=1 Win=5840 Len=36
61423   428.236161  192.168.0.192   192.168.0.73    TCP 54  51110 → 5001 [ACK] Seq=1 Ack=217 Win=65535 Len=0
61428   428.773906  192.168.0.73    192.168.0.192   TCP 90  5001 → 51110 [PSH, ACK] Seq=217 Ack=1 Win=5840 Len=36
61429   428.774082  192.168.0.192   192.168.0.73    TCP 54  51110 → 5001 [ACK] Seq=1 Ack=253 Win=65535 Len=0
61431   429.464978  192.168.0.73    192.168.0.192   TCP 90  5001 → 51110 [PSH, ACK] Seq=253 Ack=1 Win=5840 Len=36
61433   429.465225  192.168.0.192   192.168.0.73    TCP 54  51110 → 5001 [ACK] Seq=1 Ack=289 Win=65535 Len=0
61434   430.079135  192.168.0.73    192.168.0.192   TCP 90  5001 → 51110 [PSH, ACK] Seq=289 Ack=1 Win=5840 Len=36
61435   430.079314  192.168.0.192   192.168.0.73    TCP 54  51110 → 5001 [ACK] Seq=1 Ack=325 Win=65535 Len=0
61436   430.569109  192.168.0.192   192.168.0.73    TCP 54  51110 → 5001 [FIN, ACK] Seq=1 Ack=325 Win=65535 Len=0
61437   430.581167  192.168.0.73    192.168.0.192   TCP 90  5001 → 51110 [PSH, ACK] Seq=325 Ack=1 Win=5840 Len=36
61438   430.581284  192.168.0.192   192.168.0.73    TCP 54  [TCP Out-Of-Order] 51110 → 5001 [FIN, ACK] Seq=1 Ack=361 Win=65499 Len=0
61439   430.586241  192.168.0.73    192.168.0.192   TCP 56  5001 → 51110 [ACK] Seq=361 Ack=2 Win=5839 Len=0
61440   430.591451  192.168.0.73    192.168.0.192   TCP 56  [TCP Dup ACK 61439#1] 5001 → 51110 [ACK] Seq=361 Ack=2 Win=5839 Len=0
61441   430.598894  192.168.0.73    192.168.0.192   TCP 56  5001 → 51110 [FIN, ACK] Seq=361 Ack=2 Win=5839 Len=0
61442   430.598963  192.168.0.192   192.168.0.73    TCP 54  51110 → 5001 [ACK] Seq=2 Ack=362 Win=65498 Len=0
61443   430.628086  192.168.0.73    192.168.0.192   TCP 58  [TCP Port numbers reused] 5001 → 51110 [SYN] Seq=0 Win=5840 Len=0 MSS=1460
61444   430.628144  192.168.0.192   192.168.0.73    TCP 54  51110 → 5001 [ACK] Seq=1 Ack=4294955058 Win=65498 Len=0
61445   430.644078  192.168.0.73    192.168.0.192   TCP 56  5001 → 51110 [RST, ACK] Seq=4294955058 Ack=1 Win=5840 Len=0
61446   431.115920  192.168.0.192   192.168.0.73    TCP 54  [TCP ZeroWindow] [TCP Keep-Alive] 51110 → 5001 [ACK] Seq=0 Ack=4294955058 Win=0 Len=0
61447   431.132461  192.168.0.73    192.168.0.192   TCP 56  5001 → 51110 [RST, ACK] Seq=4294955058 Ack=0 Win=5840 Len=0
61700   433.542616  192.168.0.73    192.168.0.192   TCP 58  [TCP Retransmission] 5001 → 51110 [SYN] Seq=0 Win=5840 Len=0 MSS=1460
61701   433.542677  192.168.0.192   192.168.0.73    TCP 54  [TCP Window Update] 51110 → 5001 [ACK] Seq=1 Ack=4294955058 Win=65498 Len=0
61702   433.550008  192.168.0.73    192.168.0.192   TCP 56  5001 → 51110 [RST, ACK] Seq=4294955058 Ack=1 Win=5840 Len=0
61713   436.735938  192.168.0.73    192.168.0.192   TCP 58  [TCP Retransmission] 5001 → 51110 [SYN] Seq=0 Win=5840 Len=0 MSS=1460
61714   436.736047  192.168.0.192   192.168.0.73    TCP 54  [TCP Dup ACK 61444#1] 51110 → 5001 [ACK] Seq=1 Ack=4294955058 Win=65498 Len=0
61715   437.145340  192.168.0.73    192.168.0.192   TCP 56  5001 → 51110 [RST, ACK] Seq=4294955058 Ack=1 Win=5840 Len=0
61736   439.544792  192.168.0.73    192.168.0.192   TCP 58  [TCP Retransmission] 5001 → 51110 [SYN] Seq=0 Win=5840 Len=0 MSS=1460
61737   439.544910  192.168.0.192   192.168.0.73    TCP 54  [TCP Dup ACK 61444#2] 51110 → 5001 [ACK] Seq=1 Ack=4294955058 Win=65498 Len=0
61738   439.553303  192.168.0.73    192.168.0.192   TCP 56  5001 → 51110 [RST, ACK] Seq=4294955058 Ack=1 Win=5840 Len=0
61747   442.545265  192.168.0.73    192.168.0.192   TCP 58  [TCP Retransmission] 5001 → 51110 [SYN] Seq=0 Win=5840 Len=0 MSS=1460
61748   442.545381  192.168.0.192   192.168.0.73    TCP 54  [TCP Dup ACK 61444#3] 51110 → 5001 [ACK] Seq=1 Ack=4294955058 Win=65498 Len=0
61749   442.556383  192.168.0.73    192.168.0.192   TCP 56  5001 → 51110 [RST, ACK] Seq=4294955058 Ack=1 Win=5840 Len=0
61756   445.543206  192.168.0.73    192.168.0.192   TCP 58  [TCP Retransmission] 5001 → 51110 [SYN] Seq=0 Win=5840 Len=0 MSS=1460
61757   445.543319  192.168.0.192   192.168.0.73    TCP 54  [TCP Dup ACK 61444#4] 51110 → 5001 [ACK] Seq=1 Ack=4294955058 Win=65498 Len=0
61758   445.552223  192.168.0.73    192.168.0.192   TCP 56  5001 → 51110 [RST, ACK] Seq=4294955058 Ack=1 Win=5840 Len=0
61760   448.716440  192.168.0.73    192.168.0.192   TCP 58  [TCP Retransmission] 5001 → 51110 [SYN] Seq=0 Win=5840 Len=0 MSS=1460
61761   448.716554  192.168.0.192   192.168.0.73    TCP 54  [TCP Dup ACK 61444#5] 51110 → 5001 [ACK] Seq=1 Ack=4294955058 Win=65498 Len=0
61762   448.842308  192.168.0.73    192.168.0.192   TCP 56  5001 → 51110 [RST, ACK] Seq=4294955058 Ack=1 Win=5840 Len=0
61763   449.228447  192.168.0.73    192.168.0.192   TCP 58  [TCP Port numbers reused] 5001 → 51110 [SYN] Seq=0 Win=5840 Len=0 MSS=1460
61765   449.228593  192.168.0.192   192.168.0.73    TCP 54  51110 → 5001 [ACK] Seq=1 Ack=4294946584 Win=65498 Len=0
61769   449.456396  192.168.0.73    192.168.0.192   TCP 56  5001 → 51110 [RST, ACK] Seq=4294946584 Ack=1 Win=5840 Len=0
61776   452.085388  192.168.0.73    192.168.0.192   TCP 58  [TCP Retransmission] 5001 → 51110 [SYN] Seq=0 Win=5840 Len=0 MSS=1460
61777   452.085452  192.168.0.192   192.168.0.73    TCP 54  [TCP Dup ACK 61765#1] 51110 → 5001 [ACK] Seq=1 Ack=4294946584 Win=65498 Len=0
61778   452.219830  192.168.0.73    192.168.0.192   TCP 56  5001 → 51110 [RST, ACK] Seq=4294946584 Ack=1 Win=5840 Len=0
61788   455.067160  192.168.0.73    192.168.0.192   TCP 58  [TCP Retransmission] 5001 → 51110 [SYN] Seq=0 Win=5840 Len=0 MSS=1460
61792   455.067403  192.168.0.192   192.168.0.73    TCP 54  [TCP Dup ACK 61765#2] 51110 → 5001 [ACK] Seq=1 Ack=4294946584 Win=65498 Len=0
61793   455.074064  192.168.0.73    192.168.0.192   TCP 56  5001 → 51110 [RST, ACK] Seq=4294946584 Ack=1 Win=5840 Len=0
61796   458.242349  192.168.0.73    192.168.0.192   TCP 58  [TCP Retransmission] 5001 → 51110 [SYN] Seq=0 Win=5840 Len=0 MSS=1460
61797   458.242462  192.168.0.192   192.168.0.73    TCP 54  [TCP Dup ACK 61765#3] 51110 → 5001 [ACK] Seq=1 Ack=4294946584 Win=65498 Len=0
61798   458.361278  192.168.0.73    192.168.0.192   TCP 56  5001 → 51110 [RST, ACK] Seq=4294946584 Ack=1 Win=5840 Len=0
61811   461.107556  192.168.0.73    192.168.0.192   TCP 58  [TCP Retransmission] 5001 → 51110 [SYN] Seq=0 Win=5840 Len=0 MSS=1460
61812   461.107726  192.168.0.192   192.168.0.73    TCP 54  [TCP Dup ACK 61765#4] 51110 → 5001 [ACK] Seq=1 Ack=4294946584 Win=65498 Len=0
61815   461.230727  192.168.0.73    192.168.0.192   TCP 56  5001 → 51110 [RST, ACK] Seq=4294946584 Ack=1 Win=5840 Len=0
61822   464.175495  192.168.0.73    192.168.0.192   TCP 58  [TCP Retransmission] 5001 → 51110 [SYN] Seq=0 Win=5840 Len=0 MSS=1460
61823   464.175755  192.168.0.192   192.168.0.73    TCP 58  [TCP Previous segment not captured] [TCP Port numbers reused] 51110 → 5001 [SYN, ACK] Seq=1987352337 Ack=1 Win=65535 Len=0 MSS=1460
61824   464.355208  192.168.0.73    192.168.0.192   TCP 56  [TCP ACKed unseen segment] 5001 → 51110 [ACK] Seq=1 Ack=1987352338 Win=5840 Len=0
61825   464.502648  192.168.0.73    192.168.0.192   TCP 56  [TCP Dup ACK 61824#1] 5001 → 51110 [ACK] Seq=1 Ack=1987352338 Win=5840 Len=0
61826   464.682030  192.168.0.73    192.168.0.192   TCP 90  5001 → 51110 [PSH, ACK] Seq=1 Ack=1987352338 Win=5840 Len=36
61827   464.682033  192.168.0.73    192.168.0.192   TCP 56  [TCP Dup ACK 61824#2] 5001 → 51110 [ACK] Seq=37 Ack=1987352338 Win=5840 Len=0
61828   464.682132  192.168.0.192   192.168.0.73    TCP 54  51110 → 5001 [ACK] Seq=1987352338 Ack=37 Win=65535 Len=0
61829   465.221480  192.168.0.73    192.168.0.192   TCP 90  5001 → 51110 [PSH, ACK] Seq=37 Ack=1987352338 Win=5840 Len=36
61830   465.221560  192.168.0.192   192.168.0.73    TCP 54  51110 → 5001 [ACK] Seq=1987352338 Ack=73 Win=65535 Len=0
61837   465.920001  192.168.0.73    192.168.0.192   TCP 90  5001 → 51110 [PSH, ACK] Seq=73 Ack=1987352338 Win=5840 Len=36
61838   465.920176  192.168.0.192   192.168.0.73    TCP 54  51110 → 5001 [ACK] Seq=1987352338 Ack=109 Win=65535 Len=0

标签: socketstcpwireshark

解决方案


这对我来说看起来很奇怪。客户端在连接关闭后直接使用相同的源端口和目标端口。这不是客户应该如何工作的,所以我猜这是一些坏掉的客户。

服务器对这个奇怪客户端的反应也很奇怪:它不应该只是 ACK SYN,而是应该向 SYN+ACK 继续握手,或者在这种快速重用同一端口的情况下,最好发送 RST 到客户端放弃连接尝试。一个简单的 ACK 并没有真正的意义。


推荐阅读