半双工UDP?

半双工UDP?,udp,ethernet,Udp,Ethernet,我开发了一个通过UDP与外部设备通信的应用程序。在大多数情况下,它似乎工作得很好,但我有一位客户在一台特定的笔记本电脑上使用我的应用程序时遇到了数据包丢失的问题。他的另一台笔记本电脑很好 他检查了一些明显的东西,比如缓冲区大小,但是没有明显的问题 然后,他在笔记本电脑上安装了EtherSnoop,试图了解发生了什么,并且似乎每当笔记本电脑向外部设备发送消息时,它都会在短时间内停止收听传入的消息。这就好像笔记本电脑的以太网链路只能进行半双工操作 相关笔记本电脑是一台使用RealTek网络芯片的HP

我开发了一个通过UDP与外部设备通信的应用程序。在大多数情况下,它似乎工作得很好,但我有一位客户在一台特定的笔记本电脑上使用我的应用程序时遇到了数据包丢失的问题。他的另一台笔记本电脑很好

他检查了一些明显的东西,比如缓冲区大小,但是没有明显的问题

然后,他在笔记本电脑上安装了EtherSnoop,试图了解发生了什么,并且似乎每当笔记本电脑向外部设备发送消息时,它都会在短时间内停止收听传入的消息。这就好像笔记本电脑的以太网链路只能进行半双工操作

相关笔记本电脑是一台使用RealTek网络芯片的HP。他的好笔记本电脑是一台使用英特尔网络芯片的联想电脑


是否存在其他可能导致此行为的设置?在这个应用程序中,数据包丢失是不可接受的,我们需要找出HP的“不同之处”。

如果客户端系统运行不可靠/出现数据包丢失,您将无能为力。即使按照CSMA/CD使用半双工链路,UDP也应可靠地(见下文)传输,除非存在双工不匹配或冲突域过大

您可以对网络连接进行故障排除、排除/修复双工不匹配、检查电缆、检查NIC和交换机配置、更新NIC驱动程序、更换硬件-USB加密狗

双工不匹配可能由交换机端口或NIC引起。除非配置不当,否则这是非常罕见的。您将在全双工侧看到FCS错误,在半双工侧看到极端冲突计数。总的来说,当你认真使用它的时候,连接会表现得非常慢。千兆链路仅使用FDX,因此双工不匹配的可能性极低


PS:正如EJP正确指出的那样,UDP不可能像工程中的100.0%可靠那样“可靠”,我使用的是99%左右的“可靠”的花园变体。

这个问题原来是由相关笔记本电脑上的缓冲区溢出引起的。至于为什么这款笔记本电脑与其他笔记本电脑不同,仍然是个谜。此后,我修改了我的应用程序,以解决这台笔记本电脑上的缓冲区问题,现在一切似乎都很好。

您可能想在一个问题中进行编辑。你是否在寻找半双工是一种东西的验证?您是否正在寻找检测这种情况并减少数据包丢失的方法?注意:即使是(工作)半双工nic也不会丢弃数据包。它将排队,直到通道空闲。除非队列已满,ofc。我刚刚修正了这个问题。如果数据包丢失是不可接受的,UDP可能是一个错误的选择。TCP将重新传输,直到接收器确认。我同意UDP是一个糟糕的选择,但这是相关设备制造商选择的,因此我必须使用UDP。我怀疑他们选择UDP是因为它比TCP快,而且这是一个实时系统。UDP没有任何可靠性。这是一个fire and forget协议。UDP 100%依赖于底层协议进行传输。在以太网网络上运行时,除非网络出现问题,否则它应该能够通过。