原始以太网帧


10

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

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

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

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

第一个问题
是否有任何硬件约束(例如Wi-Fi卡)可能会破坏这种工作?

第二期
这两篇文章都选择了以下帧格式:

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

据我所知,以太网设备会将前同步码,定界符,填充和CRC添加到每个帧,并且无法通过软件进行更改。我想与Wi-Fi设备类似。因此,是否有任何硬件限制(例如Wi-Fi卡)会破坏Mac接头连接器的拆卸?

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


2
数十年来,以太网上的非IP流量已成为网络的一部分,因此我对您真正想得到的答案还不清楚,也许您需要了解有关网络基础的更多信息。没有“以太网无线卡”这样的东西,因为802.3以太网和802.11无线是两个完全不同的标准。因此,第二期中的帧格式根本不适用于802.11网络,但是根据标准,帧具有某些要求,因此,您列出的帧的许多组件都是不可配置的。
YLearn

1
@YLearn 几十年来通过以太网的非IP流量已经成为网络的一部分,但当时的以太网设备不像今天那样“智能”,并且许多工作是由CPU完成的。我想知道“智能”的成本是否正在失去灵活性。
马克·梅萨

@YLearn 根本不适用于802.11网络好吧,我知道在标准802.11网络中连接的其他计算机不会将此类帧识别为有效帧。但是,可以发送/接收这样的帧吗?还是硬件不允许?
马克·梅萨

@MarkMessa,同一主机上从一台主机到另一台主机的帧将被第二台主机接收。问题是它们是否将被传递到主机内部网络堆栈的上层。如果接收主机只有一个IP堆栈,而帧有效载荷不是IP,那么数据将被忽略。您需要了解OSI模型,才能获得有关如何将数据从一台主机传递到另一台主机的一般思路。
罗恩·莫平

@MarkMessa,关于您的第一个评论,尽管以太网设备“更智能”,但以太网仍然像以太网一样运行。802.3永远不会也永远不会要求使用IP。例如,尽管很少见,但今天的以太网仍将像以往一样幸福地支持Appletalk或IPX / SPX,或者根本不支持任何高层协议(许多事物仍然仅使用L2进行通信)。至于您的第二条评论,我不确定您的意思是“是否可以发送/接收此类帧”。您不能通过802.11发送802.3帧,但是只有802.11通信不涉及IP。
YLearn

Answers:


8

首先,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只是其中的一个。

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

您将需要具有所使用的LAN类型的帧头。一方面,一台主机实际上如何发送到帧中没有第2层地址的另一台主机。我认为您基本上会回到像RS-232这样的串行通信,它没有帧或头,但是它依靠额外的导线来进行数据控制。


Wi-Fi(IEEE 802.11)不是以太网(IEEE 802.3)好的,为了避免这种混乱,我刚刚更改了部分问题。现在,完全不关主题,只需要考虑一下:几种产品被宣传为“无线以太网LAN”。
马克·梅萨

我已经看到过这样的事情,但这并不意味着它是正确的。Wi-Fi和以太网框架不同,并且以太网使用冲突检测,但是Wi-Fi使用冲突避免。其他LAN使用令牌之类的东西来完全防止冲突。它们都是不同的LAN,并且某些广告不能使它们成为同一事物。
罗恩·莫平

这并不意味着它是正确的。好吧,我同意你的看法。感谢纠正我。我知道诸如CSMA / CD,CSMA / CA和令牌之类的差异。但是,我对诸如“ Wi-Fi是无线以太网LAN”之类的广告视而不见。
马克·梅萨

您也不能指望它可以在任何路由器上运行没有路由器,交换机或网桥,只有点对点通信。我刚刚编辑了问题以避免这种混淆。
马克·梅萨

1
@MarkMessa 我不想避免使用帧,我只是在考虑避免使用MAC标头。这就是您的请求令人困惑的原因。您似乎不明白,没有L2标头,它们将不再是以太网或802.11帧。您需要编写自己的L2协议才能在802.3或802.11中不存在L2标头的情况下工作。
YLearn

7

根据您的问题和评论,我认为您没有参考两篇文章。

当他们谈论“原始以太网”时,他们谈论的是不包含任何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接头连接器的拆卸?

往上看。


大多数适配器会拒绝/丢弃框架,我想这回答了我的问题。稍后,我将提交自己的答案,以免丢失所有有趣的“临时”评论。
马克·梅萨

在发送前或接收后,拒绝/丢弃格式错误的帧。据我所知,在监视模式下,您可以听到任何类型的帧,甚至包括格式错误的帧(例如:错误的CRC)。但是,奇怪的是,硬件不允许您广播没有MAC标头的帧。
马克·梅萨

小修正:但是,奇怪的是,适配器不允许您广播没有MAC标头的帧。
Mark Messa

2
@MarkMessa “据我所知,在监视模式下,您可以听到任何类型的帧,甚至包括格式错误的帧(例如:错误的CRC)。”这完全取决于相关设备。许多适配器(包括交换机)甚至会在将它们发送以进行捕获/镜像/跨接之前处理并丢弃它们。通常,您甚至都不会看到带有CRC的以太网预告片。
YLearn

1

我想在无线环境中进行类似的测试。

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

是否有任何硬件限制(例如Wi-Fi卡)可能会破坏这种工作?

是。有的适配器工作得更好,而有的适配器工作得不好,如果有的话。某些处于原始模式的适配器不能包含高吞吐量,某些适配器需要修改其固件。有些适配器工作在2.4GHz频带上,有些适配器工作在5GHz上,有些在这两种情况下都可用。


0

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


混杂模式这是我希望提出的一个非常重要的问题。在混杂模式下,发送到与您的MAC地址不同的MAC地址的帧不会被Wi-Fi卡丢弃。但是,对于BSSID则不是这样(如果我输入错了,请纠正我)。如果未将帧发送到您的BSSID,则Wi-Fi卡将丢弃该帧。是否可以避免这种情况并接收所有到达您卡中的帧?(监控模式?)
马克·梅萨

混杂模式以删除802.3以太网MAC标头基于@YLearn答案,看来硬件将不接受没有L2标头的帧。
Mark Messa
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.