问题标签 [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 投票
1 回答
13554 浏览

c - 填充 sockaddr_ll 的原始以太网套接字

我正在使用 PF_PACKET 和 SOCK_RAW 以及调用 socket() 时的自定义协议构建服务器/客户端软件

在客户端软件中,我以相同的方式创建套接字,然后从该套接字执行一个 rcv,然后获取数据

我的问题是我是否必须以与服务器相同的方式填写 sockaddr_ll 结构,因为当我从客户端回复时,我得到的源 MAC 地址是一个奇怪的地址,例如 11:11:00:00:00:00当然这不是我客户的 MAC

有谁知道这是怎么回事?打开插座

这就是我接收数据的方式

所以这就是我基本上在客户端接收数据而不填充 struct sockaddr_ll 的方式

对于服务器程序,我必须填写结构

我的问题是我如图所示接收并发送如图所示,当我回复服务器时调用服务器中用于发送的相同函数然后接收客户端回复时我得到什么 11:11:00:00:00:00

0 投票
1 回答
480 浏览

c - 如何传输以太网帧?

我想将数据发送给我的朋友。我不知道他的IP地址。但我知道他的 MAC 地址。所以我必须使用以太网帧发送数据。

我写了一个程序,但它不起作用。我不明白问题出在哪里?我哪里做错了?

客户端帧发送:

服务器端的帧接收代码:

0 投票
1 回答
5682 浏览

linux - 点击界面没有出现

我决定添加一个点击界面并在我的代码中使用它,但我能够获得它的状态。

在此之后,当我执行“ip link”时

state DOWN: 如何让这个 state UP ?我正在尝试向它发送数据包,但没有收到任何内容。

0 投票
1 回答
9864 浏览

c - Linux:发送以太网帧时,以太网类型被重写

我编写了一个 C 程序,该程序将以太网帧直接写入线路(以两种模式运行,发送方或接收方)。发送方正在发送带有两个 VLAN 标签的帧(QinQ),但奇怪的是,当帧到达接收方时,以太网类型已更改为标准(单个)VLAN 封装帧的类型。网卡有可能这样做,还是 Linux 不允许这样做?Wireshark 显示与 tcpdump 相同的行为。

为了解释下图,发送方正在向以太网广播地址 FF:FF:FF:FF:FF:FF 发送帧以找到接收方(这是通过交叉电缆连接的两台测试机,但下面的结果与交换机或集线器)。如您所见,帧上带有两个 VLAN 标记,外部标记的以太网类型为 0x8100,VLAN ID 为 40,内部 VLAN 的以太网类型为 0x8100,VLAN ID 为 20。众所周知,对于 QinQ 框架,外框架的 ethertype 应为 0x88a8!

当帧从我的应用程序中的发送方发送时,它们的外部以太网类型为 0x88a8,但根据下图,它们在内部和外部以太网类型上均以 0x8100 接收。突出显示的文本是接收方发回的回复,您可以看到帧的外框为 0x88a8,内框为 0x8100。另一台机器上的 tcpdump 显示相同(它是相同的代码!帧以 0x88a8 外部 0x8100 内部发送,但始终作为 0x8100 外部和 0x8100 内部接收)。

在此处输入图像描述

0 投票
1 回答
260 浏览

windows - Windows 7 64 位上的 ndisprot 不使用签名驱动程序

我听说在必须创建签名驱动程序之前,可以在 Windows 7 64 位上运行 ndisprot 6 进行开发。有人可以帮忙吗?创建一个签名的驱动程序不是我想要的。

我一直在 Windows 32 位下使用 ndisprot 示例驱动程序没有问题。如何配置 Windows 以便开发/运行未修改的示例驱动程序。如果有签名的示例驱动程序,我也会很感激。

0 投票
1 回答
726 浏览

networking - 发送到 3G 网络的数据包是否有 Ethernet Header?



我在我的 Mac 上使用 RVI 接口在我的 iOS 设备上捕获 3G 数据。
看起来我成功捕获并且可以分析 RX/TX 流量。
目前我正在将 UDP 流传输到 3G 网络。所以,我想要的是测量流量并获得有关该流的一些统计数据。
对我来说奇怪的是,除了以太网标头之外,所有必需的标头都出现在捕获的数据包中。所以我很好奇通过3G接口发送的数据包是否应该有以太网头?

PS 数据包包含“原始打包数据”标头,它实际上告诉“没有可用的链接信息”。

0 投票
0 回答
877 浏览

sockets - PCAP Go 使用原始套接字校验和计算

我正在编写一个帧/数据报/数据包处理程序,它将帧从一个源转发到另一个源。我正在使用 Go 图层库来操作帧。

如果我没有设置计算​​校验和的选项,则 SYN 数据包会到达运行此 go 代码的计算机并被转发。但是,我已经更改了数据包 dstIP、srcIP,而校验和保持不变,接收方从不发回 SYN ACK,我怀疑这是因为校验和现在由于更改而出错。

但是,图层库包含一个名为 CalculateChecksum 的选项,如果我将其打开为 true,则运行该程序的计算机会获取帧,但不会将其传输到接收器。

这是我第一次使用 RAW 套接字,所以我正在研究理论,没有经验,有什么想法吗?

0 投票
1 回答
530 浏览

c - 如何实现以太网调制解调器

好的,我想做的,作为一个训练练习,是实现这样的东西

客户端--ethernet--> Modem1 --GPIO--> Modem2 --ethernet-->我的家庭路由器

客户端使用以太网电缆连接到 Modem1 的位置。
Modem1 是 Raberry PI,转换信号并通过 GPIO 中继
Modem2 是 Raberry PI,从 GPIO 接收数据,并通过以太网电缆将其发送到我家的路由器

我想实现调制解调器,但不知道从哪里开始。

我已经阅读了一些关于以太网编程的内容,但仍然找不到“简单的东西”之类的答案。

  1. 如何实现 Modem1,以便当它连接到客户端时,客户端会发现它是 Internet 连接。

  2. 在调制解调器 2 端,如何让“我的家庭路由器”将用于“客户端”的数据包发送到调制解调器 2,以便调制解调器 2 可以转发它们。

可能还有我没想到的事情......

那么,具体来说,我该如何实现呢?最好在c。

0 投票
1 回答
58 浏览

tcp-ip - 通过 SLIP 接收的数据包和来自以太网的数据包在格式上是否存在差异?

当通过 SLIP ping 一个 uip 设备时,我在 uart 中得到一个数据包,如下所示:

从代码来看,这个以太网头应该由一个dest addr、src addr和一个type组成。但是,为了处理数据包,类型必须是 0x0008,但显然是 0xa8c0(uip_buf [13:12] 或 uip_buf [17:16]。因此比较总是失败:

进行比较的行来自以太网实现......当通过 SLIP 传输时,类型字段是否可能不同?

0 投票
0 回答
49 浏览

ethernet - Pcap 在拔下和重新插入电缆后产生奇怪的数据包

在物理拉线并再次重新连接后,pcap(我正在用 C 语言对其进行编程)产生的数据包很可能并不真正存在,并且错过了所有正在进行的“正常”流量。我在网络上有两个节点,它们继续谈论纯以太网帧,并且 100% 不受我从嗅探器节点拉出电缆的干扰 - 在我重新连接后,pcap 不再看到它们的流量。我正在使用普通的香草 pcap_loop() 没有任何过滤器或超时。当我这样做时, pcap_loop() 不会终止。没有物理连接时,接口的句柄(pcap_t 描述符)是否无效?有谁知道 pcap 在断开的接口上如何反应?