[英]UDP packets are dropped when its size is less than 12 byte in a certain PC. how do i figure it out the reason?
我遇到了一个以前从未听说过的问题。
我正在制作一个在特定角色动作中使用UDP数据包的在线游戏。 在我开发了udp模块后,它似乎工作正常。 虽然我们的大多数团队成员都没有问题,但是作为我老板的男人告诉我这个模块有些不对劲。
我已经调查了这个问题,最后我发现......在他的PC上,如果udp数据包大小小于12,数据包永远不会被传送到其他主机。
以下是一些其他信息:
你怎么看待这个问题? 你怎么想......导致这个问题的原因是什么? 我该怎么做才能为这个事业做下一步呢?
PS。 我不想填充,这使得所有数据包的长度最多为12个字节。
只是为了获得一个非显而易见的答案:可能UDP校验和卸载在该卡上被破坏,即数据包被发送,但被接收器丢弃?
您可以使用Wireshark查看收到的数据包来检查这一点。
如果您已经检查过防火墙,防病毒,网络防火墙,网络入侵。 读这个
对于UDP数据包ethernet_header(14字节)+ IPv4_header(最小20字节)+ UDP_header(8字节)= 42字节
现在,由于它不到64字节或60英寸,网络驱动程序将在发送数据包之前用(64-42 = 22)个零填充数据包使其为60字节。
这是UDP数据包的最小长度。
从理论上讲,你可以发送0个数据字节的数据包,但尚未尝试过。
至于你的问题,它必须是操作系统问题。 检查网络的驱动程序手册或与制造商联系。 因为这不是发生的事情。
REF:HTTP://www.freesoft.org/CIE/Course/Section4/8.htm
REF:HTTP://en.wikipedia.org/wiki/User_Datagram_Protocol
在他的PC和目标PC上运行Wireshark。
日志是否显示udp数据包离开他的机器? 它是否显示它到达目标PC?
他的PC和目的地之间有什么样的路由器硬件或交换机? 你可以删除它们并用交叉电缆连接它们吗? (或用笔记本电脑替换目的地并用交叉电缆连接到他的电脑?)
您是否已删除或至少列出了其计算机上的所有防病毒和防火墙产品以及安装Winsock LSP的任何内容?
是否所有12字节或更少的数据包都被丢弃或只是一些,您可以生成具有随机内容的数据包,并查看它是否是内容中的某些内容,而不仅仅是引起问题的大小。
假设您的问题是从他的PC发送:首先,在有问题的PC上运行数据包嗅探器,看它是否到达NIC。 如果它存在,则NIC或NIC驱动程序中可能存在问题。
接下来,检查任何运行的防火墙软件。 尝试禁用它,看看会发生什么。
如果这不起作用,请清除任何带有netsh winsock catalog reset
Winsock分层服务提供程序。
如果这不起作用,我很难过:)
最后,你可能会找到同样问题的其他客户; 你可能想要考虑一下这个解决方法。 尝试在连接上发送一些小型UDP数据包,如果它们始终无法通过,请启用填充解决方法。 对于探测数据包通过的主机,您无需将其填充。
纯猜想 :RTP是一种在UDP上发送的非常常见的数据包,它定义了一个12字节的报头 。 我想知道是否有一层网络软件假设任何更小的是一个格式错误的RTP数据包并将其扔掉?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.