在附加的 tcp 转储中,前两个 SYN 数据包(#21800 和 21801)到达服务器,但第二个 SYN 发送了 SYN ACK。这是正确的行为吗?我的理解是,客户端正在尝试从不同的 src 端口建立两个 TCP 连接,因此两个连接都应该已经建立。重试 4 次后,客户端将其 src 端口从 13158 更改为 2352,并且 TCP 连接成功。这是客户端还是服务器端的问题?
下面类似的文章好像不相关。 为什么服务器不会发送 SYN/ACK 数据包来响应 SYN 数据包
TCP 转储(客户端 IP 掩码):
答案1
似乎是服务器端的问题。客户端在 16:30:44 左右重新传输了初始数据包(屏幕截图中的黑色线条序列),服务器终于回复了。因此,看起来第一个数据包要么在服务器端丢失,要么服务器由于某种原因(监听队列溢出、工作器不足、CPU 饱和或其他原因)无法正确处理它。