networking - 重置 RST 标志后的 TCP 重传

标签 networking tcp ip wireshark

我有大约 20 个客户端与同一个 LAN 中的中央服务器一起通信。客户端可以与服务器同时进行交易。服务器将每个事务转发到网络中的外部设备。有时有效,有时我的应用程序在客户端屏幕上显示“超时”消息(随机)

我镜像了所有流量并发现了第一个 TCP 序列的 TCP 重置数据包后的 TCP 重传。我立即想到数据包丢失,但我所有的电缆/NIC 都很好,而且我在捕获中没有看到 DUP ACK。

看来RST包可能有不同的含义。
是什么导致了这些 TCP 重置?
我应该将调查重点放在哪里:网络设计还是应用程序设计?

如果有任何帮助,我将不胜感激。提前致谢。

最佳答案

根据截图判断,我假设你的中央服务器是 137.56.64.31。发生的情况是客户端使用 SYN 数据包启动与服务器的连接,而服务器使用 RST 进行响应。如果服务器没有应用程序监听该特定端口,则这是典型的情况,例如Web 服务器应用程序未运行,客户端尝试连接到端口 80。

客户端都连接到服务器上的不同端口,这对于中央服务器来说并不常见,但并非闻所未闻。客户端连接到服务器上的目标端口是:11007、11012、11014、11108 和 11115。这对应用程序来说是正常的吗?如果不是,则客户端应该连接到应用程序服务器正在监听的任何端口。

重传的原因是,客户端在收到来自服务器的 RST 后并没有放弃连接,而是尝试再次发起连接,因此 Wireshark 将其视为重传。

关于networking - 重置 RST 标志后的 TCP 重传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24882287/

相关文章:

从客户端到服务器的 HTTP 请求。 TCP/IP 堆栈之旅

c - 按网络顺序将无符号字节数组直接写入 ip.ip_dest 是否安全?

java - Ping 网络上的计算机

java - 如何在java中保存通过网络接收到的图像

c# - Path.Combine 是否曾在 .net 中进行过网络调用?

go - 使 Golang TCP 服务器并发

networking - 如何在 tcp 之上构建协议(protocol)?

php - 不同的浏览器,不同的IP?

Java & JMF : how do I get the remote IP from a Participant?

java - TCP 聊天服务器