在IEEE 802.11协议中,在链路帧中,第二个地址是发送者MAC地址,第一个地址是接收者MAC地址,如果发送者是站则为AP地址,如果发送者是站则为目的站美联社。
因此,在我的情况下,由于从我的角度来看,我正在使用Wireshark嗅探数据包,例如,如果我发送ICMP,我应该将我的 MAC 地址视为第二个地址,并将 AP MAC 地址视为第一个地址。
但:
源地址是我的机器。目标地址是我的手机,也就是我向其发送 ICMP 数据包的设备。在响应数据包中反过来也是一样的。
链路层也显示为“以太网”,但我是通过 Wi-Fi 连接的,所以它应该显示为 IEEE 802.11,但我在这里看到 Wi-Fi 接口通常将自己呈现为以太网接口,因此它们呈现以太网转换的数据包,让操作系统更容易管理它们,或者类似的东西......
您会看到操作系统(或 Wi-Fi 适配器的固件;我不太确定是哪个)提供的模拟以太网标头。
真正的 802.11 标头是故意向您隐藏的,并且链接类型始终显示“以太网”——这不是操作系统试图简化管理;这是因为规范是这样说的。根据 802.11 规范,Wi-Fi 接口应该向上层提供与 802.3 兼容的链路层,以允许它直接桥接到实际的以太网,即使它们在底层使用了更复杂的东西。(我认为这与将“媒体转换器”用于其他“XYZ 以太网”技术(如 HomePlug 或 ADSL)并没有太大区别。)
要查看正在发送/接收的真实 802.11 标头,您必须为 Wireshark 启用“监控模式”。其中将有三个MAC 地址——发送者、接收者和 AP。
(假定站点是发送方或接收方。但是,存在一种用于无线桥接(又称为WDS )的“4 地址”模式,您可以在同一帧中拥有源、目标、AP和站点 MAC 地址。 )
不,不完全那样。
Wi-Fi 接入点是网桥,就像有线交换机一样,它们在链路层是不可见的。如果发送者是一个站点,那么目的地就不是AP——它是实际目的地主机的 MAC 地址,否则网桥怎么知道将数据包传送到哪里?它不查看 IP 标头;这就是路由器所做的。
(当然,除非目标是与 AP 相同的设备的路由器,在这种情况下,目标 MAC 地址通常与 AP 的BSSID非常相似,有时甚至相同,或者只有一位不同。这通过家庭网关访问 Internet 时可能是常见的情况——但不要从中得出假设。)
真正的 802.11 标头也带有 AP 的 MAC 地址,但在与原始发送者和接收者分开的第三个字段中。如果启用“监控模式”来捕获 802.11 帧,您将看到来自工作站的帧具有两个目标 MAC 地址。
(尽管不要对 Wireshark 的解析器感到困惑,它以两个不同的名称两次显示相同的字段——其中一些实际上对应于相同的字节。)