sockets - 服务器以 [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
解决方案
这对我来说看起来很奇怪。客户端在连接关闭后直接使用相同的源端口和目标端口。这不是客户应该如何工作的,所以我猜这是一些坏掉的客户。
服务器对这个奇怪客户端的反应也很奇怪:它不应该只是 ACK SYN,而是应该向 SYN+ACK 继续握手,或者在这种快速重用同一端口的情况下,最好发送 RST 到客户端放弃连接尝试。一个简单的 ACK 并没有真正的意义。
推荐阅读
- swift - 货币格式化程序:尊重区域设置偏好,但始终将货币代码向右移动 - 简化代码
- lotus-domino - Lotus Domino Designer - 对话框列表公式 - 如何按字母顺序显示选项?
- jquery - jquery bootstrapValidator:多个输入值的总和,如果不等于其他输入字段,则禁用提交按钮
- android - 强制应用程序为 64 位设备运行 32 位架构?
- python-3.x - python3中奇怪的多继承
- javascript - 为什么函数声明中的常量声明不会引发错误?
- c# - 在后面的代码中添加文本后没有事件触发
- python - 如何在python中创建包含对象的列表
- php - 来自数据库的 HTML_TO_DOC() 循环表
- architecture - 有限状态机和舞台事件驱动架构有什么区别