原始以太网帧

网络工程 以太网 无线的 IEEE-802.11 MAC地址 临时无线
2021-07-26 18:39:47

最近我对以下有关原始以太网帧的文章感到困惑:

原始以太网与使用原始以太网帧的UDP
消息传递

简而言之,他们都讨论了仅使用以太网层就可以建立点对点通信。在这种情况下,IP 和 TCP 层的开销将被避免,吞吐量将增加(根据某些基准,大约增加 50%)。

我想做一个类似的测试,但在无线环境中。但是,我有一些问题:

第一个问题
是否有任何硬件限制(即:Wi-Fi 卡)可能会破坏这种努力?

2nd Issue
两篇文章都选择了以下帧格式:

序言 | 分隔符 | Mac 头 | 有效载荷 | 垫 | CRC

据我所知,前导码、定界符、填充和CRC是以太网设备添加到每一帧的,不能通过软件改变。我想与 Wi-Fi 设备类似。因此,是否有任何硬件限制(即:Wi-Fi 卡)会破坏删除 Mac 接头?

ps:考虑到通信将是点对点的,即没有路由器、交换机、网桥……没有互联网连接。

4个回答

首先,Wi-Fi (IEEE 802.11) 不是以太网 (IEEE 802.3),也不是令牌环网 (IEEE 802.5),或者除 802.3 之外的任何其他 IEEE LAN 标准都是以太网。Wi-Fi 和以太网的帧头是不同的。

Wi-Fi、以太网、令牌环、FDDI 等都是 OSI 第 1 层和第 2 层的 LAN 标准,用于封装上层协议的数据报。每个都可以传输第 3 层协议,IP 只是其中之一。

您可以自由地为 IEEE LAN 协议之一创建自己的或使用现有的第 3 层协议之一,但您需要拥有您选择的 LAN 协议的框架。不要指望能够与任何未运行您的协议栈的设备进行互操作,也不要指望它可以在没有您的协议栈的任何路由器上运行(这意味着没有使用 IP 的互联网)。以太网交换机或 WAP 等网桥将传输您的上层协议,因为它们在第 2 层工作,因此您可以创建 LAN。

您将需要具有您所在 LAN 类型的帧头。一方面,在帧中没有第 2 层地址的情况下,一台主机如何实际发送到另一台主机。我认为您基本上会回到串行通信,例如 RS-232,它没有帧或标头,但它依赖于额外的电线进行数据控制。

根据您的问题和评论,我认为您忽略了您所引用的两篇文章的要点。

当他们谈论“原始以太网”时,他们谈论的是不包含任何 IP (L3) 或 TCP/UDP (L4) 标头的数据帧。他们不是在谈论使用没有 L2 标头的 L2 帧。

如果没有 L2 标头,帧既不是 802.3(以太网)也不是 802.11 帧。这将完全是另一回事。单独的 L2 协议。

是否有任何硬件限制(即:Wi-Fi 卡)可能会破坏这种努力?

不包括 L2 标头?绝对地。您必须指定特定的适配器才能获得特定的答案,但我怀疑您甚至可以编写适用于大多数不包含 L2 标头的 802.3 或 802.11 适配器的驱动程序。我的猜测是大多数适配器会在发送之前或接收时拒绝/丢弃格式错误的帧。

仅发送不包含 IP 或 TCP/UDP 标头的 802.3 或 802.11 帧?不。这一直是正常网络操作的一部分,并且已经持续了几十年(至少对于 802.3;802.11 的存在时间不长,但至少有十年)。

因此,是否有任何硬件限制(即:Wi-Fi 卡)会破坏删除 Mac 接头?

往上看。

我想做一个类似的测试,但在无线环境中。

看看 Wifibroadcast(Linux,一些 Android 支持),它就是这样做的。简短摘要:它使用一对 wifi 适配器,一个处于注入模式,另一个处于监控模式,并使用原始 wifi 帧传输数据。这是单向连接。虽然最初被认为是一种传输低延迟视频馈送的方法,但它当然可以用于所有类型的数据。

是否有任何硬件限制(即:Wi-Fi 卡)可能会破坏这种努力?

是的。有些适配器工作得更好,有些适配器工作得不太好,如果有的话。一些原始模式的适配器不能包含高吞吐量,一些适配器需要修改它们的固件。一些适配器在 2.4GHz 频段工作,一些在 5GHz 工作,有些在这两个频段工作。

是的。理论上,您可以像这样运行点对点以太网。两个端点都必须处于混杂模式才能删除 802.3 以太网 MAC 标头(否则这些帧不属于任何一个 NIC 并且将被忽略。)当然,这样做意味着您没有运行“以太网”。