Networking 大型UDP多播消息被丢弃

Networking 大型UDP多播消息被丢弃,networking,udp,multicast,Networking,Udp,Multicast,我有一个使用多播接收udp消息的程序。 发送方通过以太网连接到同一网络 我能够成功地接收到相对较小的数据包,约3000字节。 但现在发送方发送了更大的数据包~60000,我不再接收任何数据。 我可以在wireshark中看到消息,但在我的应用程序中没有收到它们 您知道问题的原因和解决方法吗? 谢谢大家! UDP是专为小数据报设计的,并且最适用于小数据报(建议为576字节)。如果超过MTU,则IP必须将其数据包分段(错误),并且在重新组装时超过IP数据包大小将导致数据包被丢弃。请记住,您将丢失数据

我有一个使用多播接收udp消息的程序。 发送方通过以太网连接到同一网络

我能够成功地接收到相对较小的数据包,约3000字节。 但现在发送方发送了更大的数据包~60000,我不再接收任何数据。 我可以在wireshark中看到消息,但在我的应用程序中没有收到它们

您知道问题的原因和解决方法吗?
谢谢大家!

UDP是专为小数据报设计的,并且最适用于小数据报(建议为576字节)。如果超过MTU,则IP必须将其数据包分段(错误),并且在重新组装时超过IP数据包大小将导致数据包被丢弃。请记住,您将丢失数据包,数据报中的数据包越多,发生这种情况时丢失的数据包就越多。由于这个原因,实时协议(VoIP、视频等)使用UDP和非常小的数据报。所以它总是丢弃大的UDP消息?如果我将通过以太网连接到发送器?我不想减少发送的大小,因为这会导致我保留大量的数据列表,直到所有的片段到达。这根本不是我写的。如果您使用的是以太网,请记住以太网MTU是1500字节,因此它发送的帧有效负载(IP报头和有效负载,包括UDP报头和有效负载)将不会大于该值。这迫使IP在发送时断开(大量开销),在接收时重新组装(更多开销)。IPv4的整个数据包最多只能有65535字节,包括所有涉及的头,丢失碎片数据包的任何一个片段都将丢失整个数据包。您需要设计应用层协议,以防止发送任何超过路径中MTU的内容。您可以使用PMTUD确定路径中最小的MTU,然后考虑相关协议的开销,以调整尝试在单个数据报中发送的数据量。正如我所解释的,UDP与小数据报一起工作。我只是想看看我能理解。例如,我需要发送60个数据包,每个数据包大小约为1000字节。然后在我的应用程序中使用我设计并添加到每条消息中的一些头来重新组装它们。对吗?