问题标签 [raw-ethernet]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
driver - 为什么 WriteFile 到 NDIS 发送重复帧?
大家好,提前感谢您的帮助,
我正在使用 WriteFile 函数 (fileapi.h) 直接在 MAC 地址之间将帧发送到以太网第 2 层级别的 NDIS 驱动程序。
帧发送正确,但在我所做的任何测试中,帧都是重复发送的。我通过使用 WireShark 捕获输出来检测到这一点,其中表示如下:
在我发送的帧内,我在每次发送时增加一个计数器。此计数器在两个连续帧中重复,它们具有由 WireShark 分配的不同帧号。这不是由于网络中的消息丢失以及网络中的另一个设备转发消息而随机发生的事情。它发生在发送的每一帧上,它们完全相同,包括每两帧递增的计数器。
问题:
- NDIS 驱动程序中是否有设置此重复输出的参数。
- 我是否误解了 WireShark 捕获。
我看到了这篇文章,并按照建议卸载并安装了 Ncap 和 WinCap,但没有任何区别。
非常感谢。此致。
winapi - 使用 NDIS 驱动程序同时(非异步)发送和接收的最佳方式是什么?
我试图找到通过以太网第 2 层同时发送和接收的最佳方法,在这种情况下,使用 Windows 上的 NDIS 驱动程序。我评估的方法如下:
- 具有两个独立线程和 NDIS 驱动程序(fileapi.h Win32)的同步功能。通过这种方式,我设法打开了驱动程序的两个句柄,但我没有设法独立链接两次网卡。有两张独立的卡,一张读卡,一张写卡,工作没有任何问题。信息:在可以使用此方法的位置(在@falstaff 的最终评论中)发布。
第一个函数在两个线程中都能正常工作,第二个函数 (DeviceIoControl) 在第二次执行时失败。它表明无法重做第二个绑定,我曾希望通过单独的线程来实现。
- 使用 Miniport Mux NDIS。我认为它可以使用单个网卡同时发送和接收,但我不确定。
问题:
通过单个网络接口执行同时通信的最佳方法是什么?
为什么第 1 点中的 DeviceIoControl 函数不起作用,只能将一个驱动程序或它的一个实例链接到外围设备?
非常感谢。此致。
linux - 不同的主机/网络字节顺序是否会增加网络延迟?
我正在尝试使用 UDP 协议使两个 NVIDIA 的 Jetson AGX 通过以太网以尽可能低的延迟进行通信。netperf 测量的默认请求-响应延迟约为 200 微秒。我正在寻找减少这种情况的方法,欢迎提出所有建议。
查看网络堆栈,我发现 Jetson 使用小端字节序,而网络使用大端字节序。所以,对于一个请求响应的场景,字节序转换需要做4次
当然,这是一张非常简化的图片,我已经省略了与字节顺序无关的所有堆栈部分。我的问题是,这 4 次转换是否会显着影响延迟?如果要使用具有大端序的系统,考虑到其他一切都保持不变,那会减少任何可测量的网络延迟吗?
go - 使用原始套接字发送自定义以太网数据包
我搜索了如何使用自定义以太网类型发送原始以太网数据包,但很多人都在谈论 tcp 和 udp 协议。我需要打开一个原始套接字,获取所有具有我自定义以太网类型的数据包,读取有效负载并发送回具有不同自定义以太网类型的数据包。
我收到了数据包,但f.Write(myBuf)
返回以下错误:Error: write fd 5: no such device or address
我做错了什么?