【问题标题】:Sending a faulty UDP/IP datagram (on purpose) in unit test?在单元测试中发送错误的 UDP/IP 数据报(故意)?
【发布时间】:2013-04-10 07:37:30
【问题描述】:

我目前正在为我公司正在开发的设备(无线电编码器)开发单元测试。

可以通过 SNMP(仅限 v1)访问各种统计信息,其中您可以获取由于各种原因而丢弃的 UDP 数据报的数量。

我希望能够发送一个包含在错误 UDP 标头中的数据包,其中包含各种错误(校验和错误、标头中的错误 IP 地址等),以确保错误计数器正常运行。

我无法找到有关如何完成此操作的任何信息,我能够找到的大多数高级网络功能(显然)正确且自动地计算校验和。

【问题讨论】:

  • @MikePennington 当然,我可以访问 Windows 和 Linux。所以,如果这会让事情变得更容易,我完全赞成。

标签: c# networking testing network-programming udp


【解决方案1】:

你必须求助于原始套接字:

http://www.winsocketdotnetworkprogramming.com/clientserversocketnetworkcommunication8f_3.htmlhttp://www.winsocketdotnetworkprogramming.com/clientserversocketnetworkcommunication8h.html

请注意限制:http://msdn.microsoft.com/en-us/library/windows/desktop/ms740548(v=vs.85).aspx

在 Windows 7、Windows Vista、带有 Service Pack 2 (SP2) 的 Windows XP 和带有 Service Pack 3 (SP3) 的 Windows XP 上,通过原始套接字发送流量的能力受到以下几个方面的限制:

TCP 数据不能通过原始套接字发送。 UDP 数据报 无法通过原始套接字发送无效的源地址。知识产权来源 任何传出 UDP 数据报的地址必须存在于网络上 接口或数据报被丢弃。此更改是为了限制 恶意代码创建分布式拒绝服务的能力 攻击并限制发送欺骗数据包(TCP/IP 数据包)的能力 使用伪造的源 IP 地址)。使用 a 调用绑定函数 不允许使用 IPPROTO_TCP 协议的原始套接字。注意绑定 其他协议(IPPROTO_IP, 例如 IPPROTO_UDP 或 IPPROTO_SCTP)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-24
    • 2019-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-22
    • 2023-03-04
    相关资源
    最近更新 更多