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

RAW以太网与UDP使用原始以太网帧进行消息传递简短地说,它们都讨论了可能仅使用以太网层建立点对点通信。在这种情况下,将避免IP和TCP层的开销,并且吞吐量将增加(根据某些基准,大约为50%)。环境。但是,我有一些问题:

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

第二问题
这两篇文章都选择了以下框架格式:

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

据我所知,以太网设备将前同步码,定界符,填充和CRC添加到每个帧,并且无法通过软件进行更改。我想与Wi-Fi设备类似。
因此,是否存在任何硬件约束(例如Wi-Fi卡)会破坏Mac头的移除?通信将基于点对点进行,即,将没有路由器,交换机,网桥...没有互联网连接。

评论

评论不作进一步讨论;此对话已移至聊天。

#1 楼

首先,Wi-Fi(IEEE 802.11)并不是以太网(IEEE 802.3),而是令牌环(IEEE 802.5)或除802.3以外的任何其他IEEE LAN标准都是以太网。 Wi-Fi和以太网的帧头是不同的。协议。每个协议都可以传输第3层协议,而IP只是其中的一个。将需要具有您选择的LAN协议的框架。不要指望能够与没有运行协议栈的任何设备进行互操作,也不要指望它可以在没有协议栈的任何路由器上运行(这意味着没有使用IP的互联网)。以太网交换机或WAP之类的网桥将传输上层协议,因为它们在第2层工作,因此您可以创建LAN。

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

评论


评论不作进一步讨论;此对话已移至聊天。

–罗恩·莫潘♦
1月3日4:56

#2 楼

根据您的问题和评论,我认为您正在丢失所引用的两篇文章的重点。

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


请参见上文。

评论


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

–马克·梅萨(Mark Messa)
15年12月18日在13:31

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

–马克·梅萨(Mark Messa)
15年12月18日在13:56

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

–马克·梅萨(Mark Messa)
2015年12月18日14:07在

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

– YLearn♦
15年12月18日在23:13

#3 楼


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


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


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


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

#4 楼

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

评论


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

–马克·梅萨(Mark Messa)
2015年12月18日,0:34

混杂模式以删除802.3以太网MAC标头基于@YLearn答案,看来硬件将不接受没有L2标头的帧。

–马克·梅萨(Mark Messa)
15 Dec 18'在19:01