目前在由2个传感器组成的系统中遇到网络问题(每个传感器的数据速率为1Khz),通过以太网链路与Windows 7操作系统进行通信。在Windows系统上运行的程序是用Java编写的。
问题:程序在未定义的时间段内正常运行,然后停止 - 由于TCP本机缓冲区溢出。
我的直觉让我相信这是由TCP RWIN引起的 - 因为消费者在缓存来自堆栈的数据包时太慢,最终导致缓冲区溢出。
查看来自NIC的捕获数据包,崩溃前的最终序列始终如下所示:在关闭连接之前,每个传感器都有一个大的ACK块,然后是RST。我们可以在每个RST上看到WIM大小设置为200,而在它超过1000之前。
有人可以就如何开始解决这个问题提出一些建议吗?在此时所做的所有研究中,我仍然不知道如何解决这个问题。
答案 0 :(得分:1)
如果传感器正在发送RST,则传感器处的连接已关闭。你应该调查为什么会这样?一个原因可能是连接超时 - 也许TCP @传感器试图发送一些东西而无法通过。你能在传感器上运行一些跟踪工具(如tcpdump / windump)吗?