0

目前在由 2 个传感器(每个传感器的数据速率为 1Khz)组成的系统中遇到网络问题,通过以太网链路与 Windows 7 操作系统通信。windows系统上运行的程序是用Java编写的。

问题:程序在未定义的时间段内正常运行,然后由于 TCP 本地缓冲区溢出而停止。

我的直觉让我相信这是由于 TCP RWIN——消费者从堆栈中接收数据包的速度太慢,最终导致缓冲区溢出。

查看从 NIC 捕获的数据包,崩溃前的最终序列总是如下所示:一个大的 ACK 块,然后是每个传感器的 RST,然后关闭连接。我们可以看到,在每个 RST 上,WIM 大小设置为 200,而之前它超过 1000。

在此处输入图像描述

任何人都可以就如何开始解决这个问题提供一些建议吗?在这一点上所做的所有研究中,我仍然不知道如何解决这个问题。

4

1 回答 1

1

如果传感器正在发送 RST,则连接在传感器处关闭。你应该调查为什么会这样?一个原因可能是连接超时——也许 TCP@sensors 试图发送一些东西但无法通过。你能在传感器上运行一些跟踪工具(如 tcpdump/windump)吗?

于 2013-09-04T17:43:14.267 回答