TCP和Wireshark:两个连续的TCP数据包,而不是每个数据包都有一个ACK

TCP和Wireshark:两个连续的TCP数据包,而不是每个数据包都有一个ACK,tcp,wireshark,ack,chunked,Tcp,Wireshark,Ack,Chunked,我们有一个应用程序(客户机和服务器),部署在两个不同的环境(登台和生产环境)中。这两种环境在理论上都是精确配置的。。。客户机在POST请求中发送数据,而服务器返回一个带有正文的200 OK 在第一个映像[1]中,客户机拥有IP 172.16.32.47和服务器172.16.44.137。您可以看到,在每个200 HTTP数据包(绿色)之前,例如在第124帧,存在从客户端到第122帧中的数据包的ACK 在第二个映像[2]中,客户端具有IP 172.16.85.38,服务器具有IP 172.16.

我们有一个应用程序(客户机和服务器),部署在两个不同的环境(登台和生产环境)中。这两种环境在理论上都是精确配置的。。。客户机在POST请求中发送数据,而服务器返回一个带有正文的200 OK

在第一个映像[1]中,客户机拥有IP 172.16.32.47和服务器172.16.44.137。您可以看到,在每个200 HTTP数据包(绿色)之前,例如在第124帧,存在从客户端到第122帧中的数据包的ACK

在第二个映像[2]中,客户端具有IP 172.16.85.38,服务器具有IP 172.16.74.168。在这种情况下,存在从服务器到客户端的连续分组,例如帧422和423,其间没有ACK

在第一个映像中,TCP窗口足以发送两个帧,而无需等待中间ACK(第二个映像中的窗口大小确实较大,但两者都应覆盖消息)

为什么在第一个映像中需要从服务器发送ACK并从客户端发送ACK?为了进行更深入的修改,我应该考虑什么


任何提示都是非常受欢迎的。

您应该检查客户端的窗口,而不是数据包120。这与编程无关,因此StackOverflow与此无关。这将是SE网站上的主题。无论如何,我猜等待客户端确认的服务器没有在连接上设置NODELAY选项,因此会强制服务器的第二个响应段被延迟,而不是立即传输。顺便说一句,问题中的两个图像链接已交换。你好@ottomeister,谢谢,我已经交换了图像链接。没有一个服务器在连接上有NODELAY选项……这没关系。两者都是合法的。您只需应付。@EugèneAdell,在数据包120,TCP窗口是64296(窗口大小值和计算的窗口大小)。非常感谢。