![捕获的 wireshark 数据包的 MAC 头](https://linux22.com/image/675971/%E6%8D%95%E8%8E%B7%E7%9A%84%20wireshark%20%E6%95%B0%E6%8D%AE%E5%8C%85%E7%9A%84%20MAC%20%E5%A4%B4.png)
我一直在阅读有关 IEEE 802.11 的内容,尤其是有关 MAC 层的内容,我注意到它包含大量信息,但是当我开始使用无线网卡通过 wireshark 捕获时,wireshak 中显示的 MAC(以太网)标头仅包含目标 MAC 地址和源 MAC 地址以及下一层协议。
有什么问题吗,难道我不应该像研究过的那样看到所有的 MAC 头信息吗?为什么 wireshark 捕获的数据包中的 MAC 头只包含这三个信息?
答案1
以太网帧的某些部分完全由硬件处理,因此通常无法被软件看到,这就是为什么你无法用 Wireshark 看到它们的原因。
以太网帧中 MAC 地址之前的部分用于同步数据包的接收。因此,硬件很难让软件看到这一点。只有在前导码之后,硬件才知道数据包从哪里开始,此时捕获前导码为时已晚。
CRC 通常在硬件中验证,因此没有理由将其提供给软件层。但我认为没有任何技术原因阻止将其提供给软件。如果某个低端网络接口制造商决定通过让驱动程序负责 CRC 验证来降低硬件制造价格,我不会感到惊讶。如果确实存在这样的接口,那么就可以在这些接口的数据包捕获中使 CRC 可见。但 Wireshark 旨在适用于各种硬件,因此由于无法在所有硬件上实现,因此使这几个字节可见会很成问题。
在捕获中看到数据包之间的间隙是没有意义的,因为您在捕获中看到的是数据包,而间隙不是任何数据包的一部分。