问题标签 [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.

0 投票
2 回答
762 浏览

python - 为什么将 14 字节的随机数据附加到原始以太网帧?

我正在使用以下 python 代码将原始以太网帧发送到环回接口(Linux ubuntu 4.15.0-34-generic):

(我们使用自定义以太网类型 0x6666,但使用以太网 II 帧格式指定的数据包长度(50)具有相同的结果)

我希望在接收器上(或在 Wireshark 中)看到一个长度为 14+50=64 字节的数据包。相反,我看到一个 14+50+14=78 字节的数据包。添加的 14 个字节的内容看似随机(或可能来自未归零的重用缓冲区的数据)。

例如,以下 Wireshark 输出来自上述代码的两次连续调用:

0000 aa aa aa aa aa aa 00 ff 00 ff 00 ff 66 66 41 41 ............ffAA 0010 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA 0020 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA 0030 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA 0040 00 00 00 00 00 00 10 00 00 00 00 00 00 00 ..............

0000 aa aa aa aa aa aa 00 ff 00 ff 00 ff 66 66 41 41 ............ffAA 0010 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA 0020 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA 0030 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA 0040 22 20 68 6f 73 74 6e 61 6d 65 3d 3f 20 61 " hostname=? a

我很好奇为什么要添加 14 个字节(因为数据包比以太网数据包所需的 64 个字节长,所以不是填充问题)?在这个例子中怎么可能去掉 14 个额外的字节呢?

0 投票
0 回答
81 浏览

driver - 以太网驱动 LAN7800 环回

我转换了 linux LAN7800驱动程序以创建一个裸机驱动程序,如果我通过接口发送和接收数据包,它可以完美地工作。

如果您想调试数据包并将 LAN7800 置于内部环回模式,则会出现问题。

假设您所做的只是在MAC_CR寄存器上设置第 10 位(INT_LOOP)。

所以我这样做并制作一个数据包并发送,然后去读取接收到的数据包。我得到的是垃圾,甚至标题都没有任何意义。

数据表中有一条关于在启动时不更改模式的评论,TXENRXEN什至将它们取下来并等待确认它们已关闭。然后我改变了模式并把它们带回来。

但什么都没有改变。我从环回中得到的只是垃圾。

我错过了什么?

0 投票
0 回答
4268 浏览

python - 使用 Python 进行 Profinet 通信

我正在尝试为 Profinet 通信(发送 - 接收数据)编写 python 代码,但我没有太多信息。我正在寻找可以指导我的东西。我应该从哪里开始?我应该寻找什么?请帮帮我,非常感谢。

0 投票
1 回答
4063 浏览

python - “ sock, addr = self._sock.accept() socket.error: [Errno 95] 不支持操作”

我想尝试为我的服务器端创建一个客户端(通过以太网协议发送原始数据)但我有这个错误:

socket.error: [Errno 95] 不支持操作

虽然我这样称呼:sudo python server.py

这是我的 server.py 代码:

0 投票
1 回答
290 浏览

linux - 使用 RaspberryPi 直接读取以太网端口上的信号

我有一个使用 rj45 端口和 4 线电缆(高度可调节的桌子)连接到遥控器的设备。我很确定它实际上并没有使用以太网协议,而是使用发送一些简单的数字信号。我希望 Raspberry Pi 能够控制设备,所以我想知道是否可以像使用任何其他引脚一样使用以太网端口读取和转储然后发送信号?可能这里的实际问题是关于在 Linux 操作系统中绕过以太网驱动程序的方法。

0 投票
0 回答
200 浏览

c++ - 可以在 TCP 套接字上使用 sendmmsg 吗?

我习惯于使用 send 通过 TCP 套接字传递数据缓冲区:

我还使用 sendmmsg 从单个系统调用发送多个原始以太网帧:

是否可以在 TCP 套接字上发送 mmsg?如果是这样,分散/聚集数组的元素是否按顺序发送?

0 投票
1 回答
97 浏览

c - IEEE 802.2 逻辑链路控制层(以太网)是全双工的吗?

我有一种情况,我在使用关联的回调函数pcap_sendpacket()接收数据包的同时,将数据包放在 LLC 层的线路上。pcap_dispatch()发送和接收发生在不同的执行线程中。

我观察到当传入数据包速率特别高时,我没有看到我的传出数据包出现在网络上(使用wireshark)。但是,我也没有看到pcap_sendpacket()失败(返回-1)。连接是否有可能不是全双工的,即如果网络连接的带宽已满,那么传出的数据包可能会以某种方式无限期地阻塞?

0 投票
1 回答
901 浏览

python - Python layer 2 Ethernet frames --> 接收数据

我正在创建一些第 2 层框架,用于使用 Python 3 进行自动化总线模拟。实际上,数据将毫无问题地发送。通信伙伴将数据返回给我的 python 脚本。我以 root 身份启动脚本并完成接收。重新启动脚本后,我无法再次接收数据。我必须重新开始……现在我正在寻找原因。

实际情况:

  • 带有 Ubuntu 18 的 VirtualBox --> 4.18.0-17-generic
  • USB 2 网络接口直接连接到虚拟机(适配器为:enx0050b611bbf0)。

Python:

数据包:它是一个字节数组:

问题:它只工作一次。第二次启动脚本后,将s.recv()阻止脚本。我必须手动停止它并重新启动它。然后它工作一次......</p>

有人能解释我的问题吗?

0 投票
1 回答
218 浏览

vhdl - 我把扰频器和解扰器模块分别放在vhdl中,但解扰器的结果与扰频器的输入不一样

我已经对 10G 以太网的扰频器进行了编码。我从 ieee802.3ae 标准中找到了多项式。在文档中绘制了一个框图(49-10,49-8)。当我分别放置加扰器和解扰器模块时。我在解扰器的输出上看不到扰频器的输入。我的问题在哪里?我该如何解决?

我已经尝试过反向位顺序,但它对我没有帮助。:(

--I0是解扰器输入--我的解扰器

--I0 是加扰器输入--我的加扰器

我的预期结果是我提取到加扰器中的数据与解扰器结果之间的相似性。图 49-8 加扰器 ieee802.3ae 图 49-10 解扰器 ieee802.3ae

0 投票
2 回答
1168 浏览

python - 在 Python 中读取原始以太网数据包的 VLAN 字段

我使用以太网数据包(2 层,没有 UDP/IP 或 TCP/IP)在两个节点之间进行低级通信。这些数据包内部有 VLAN 字段,我的接口配置为混杂模式,由于我可以在 Ubuntu 系统的 Wireshark 中看到 VLAN 标签,因此它能够完全读取它们。

使用 python,我可以读取除 VLAN 字段之外的整个数据包。该字段消失了,在源 MAC 字段之后,Ethertype 就位。

可以用socket python模块做到这一点吗?我的配置中是否缺少某些内容或者是 NIC 问题?

提前致谢,