【发布时间】:2013-10-08 18:42:13
【问题描述】:
我目前正在 VisualBasic.NET 中开发一个项目,并且正在使用原始套接字来构建我的数据包以通过套接字发送。这是因为我必须在 IP 数据包的标头中设置服务类型字段,这在现代版本的 Windows 中使用 Winsock 是不可能的。我不能使用 Diffserv,因为应用程序正在与之通信的嵌入式设备要求我使用完整的 TOS 字段。
当前的代码实现相当简单并且运行良好 - 但仅在 Windows 8 中运行。如果代码在任何其他 Windows 操作系统(XP 或 7)上运行,则 TOS 字段将被覆盖为 0 无论如何(它需要为我正在使用的设备设置为 2)。
我在整个互联网上寻找有关这方面的提示,并发现了一些注册表更改(我尝试了所有这些都无济于事)以及组策略编辑。其中大部分用于启用在 Winsock 中设置 TOS 字段的功能,该功能仅适用于 XP。
我被引导相信这个问题是由 Windows 操作系统的网络层设置的一些变化引起的,但很难准确指出发生了什么变化。
任何帮助将不胜感激。
【问题讨论】:
-
作为更新,我们已经确定是显式拥塞通知被清零。当尝试更大的 TOS 值时,高位被设置,但低位被 Windows 清除。