非常奇怪的行为
我有3台机器:
----------- ------------ ----------- | A(x86)| ----- | B(x86)| ----- | C(arm)| | 发件人| | 接收器| | 发件人| ----------- ------------ -----------
问题是:当机器C(ARM-android)发送一个有效载荷大小超过1472字节(在数据包被分解之前的最大有效载荷)的UDP数据包时,机器B上的服务器应用程序永远不能接收它,
我花了一些时间在互联网上,但从来没有find像这样的话题。 每次有人遇到UDP的问题,他们的MTU发现是不正确的,或者他们在testing过程中做了一些错误的处理,或者他们不能在接收主机上转储消息,这里不是这种情况!
当然,我知道问题在发送者端(机器C),但也许可以更容易地在接收端启用一些日志(在内核级?)来理解为什么UDP数据报消失! 有什么build议? 是否有特定的文件,我可以检查/ proc / sys / net,或内核选项我应该启用?
非常感谢。
如果您的机器确实按照描述连接 ,即它们没有连接到交换机/集线器,那么您必须在B上有两个NIC,因此它们将具有不同的地址,因此您用来从A发送到B的地址将不会与从C发送给B.
你发送的地址是错的吗? 虽然这不能解释小数据报是如何通过的 – 你确定它们是?
注意:因为您没有连接到DHCP,所以必须手动分配这些地址,而且这些地址需要与A和C在同一个子网中。所有地址(A,BA,BC和C)都是相同的子网? 什么地址:端口是B绑定和监听的套接字? B收到数据报后是否继续收到? 请提供一些代码
或者,即使您的机器连接到交换机/集线器,也是从C发送的数据报上设置的“不分片”位,这将解释为什么较大的数据包被丢弃,而不是较小的数据包。