服务器收到 SYN 后发送带有错误编号的 TCP ACK

服务器收到 SYN 后发送带有错误编号的 TCP ACK

我让一个客户端建立新的 TCP 连接,然后每秒向服务器发送请求。客户端和服务器都在同一台 Linux 机器上(通过环回接口)。

客户端周期性地报告套接字错误。挖掘网络数据包后,该错误似乎与 TCP 问题有关:

50123 > 7001 [SYN] Seq=0 Win=32792 Len=0 MSS=16396 SACK_PERM=1 TSval=1326528350 TSecr=0 WS=128 [TCP ACKed lost segment] 7001 > 50123 [ACK] Seq=1 Ack=1834710718 Win=256 Len=0 TSval=1326528350 TSecr=1325798923 SLE=0 SRE=1 50123 > 7001 [RST] Seq=1834710718 Win=0 Len=0

在上面的 TCP 段中,客户端首先向服务器发送 TCP SYN。在正常情况下,服务器应该返回 SYN-ACK,其中 ack 编号=1,但在上面的片段中,服务器返回错误的确认号码=1834710718。由于确认号错误,客户端RST连接。

对这个案子有什么想法吗?

相关内容