以下是我用wireshark抓取的Raw 802.11(Radiotap头部加上802.11帧),关于大端小端字节序以前没有接触过,搞糊涂了。想请教大神几个问题,谢谢。
Radiotap头部,第三第四个字节是代表着头部的长度,对应着图中的0d 00,wireshark解析该长度为14. 显然该长度实际应解释为00 0d,也就是字节序反过来了。我的第一个问题是,大端小端字节序不是对应着整体一个包或者帧来说,而是对应某个具体的字段来说的吗?
图中标明的50是802.11帧头部的类型字段,网上找到的图是该字节前两位是协议版本,中间两位是类型,后面四位是子类型。0x 50 = 10010000b,wireshark解析时为什么将最后两位当成版本,倒数三四位当成类型,前四位当成子类型? 也就是说该字段位数也反过来了?为什么会这样呢,什么字段位数会反呢?
确实是对某个字段来说的。一个字节的字段也就无所谓字节序了,所以只有双字节以上的才有字节序问题。在组装数据包的时候把某个多字节字段转成网络字节序。当拼好一个数据包之后,这个包就这样了,在网络上传输也是这个这个样子。当数据到达目的地之后,需要把字段们转成自己主机的字节序加以解析
会反过来仅仅发生在和网络字节序不同的主机在发送多字节字段时出现
如果你写过网络程序你就会明白了。最简单的可以用原始套接字写一个ping程序程序,里面会用到数据包组装,并且有多字节字段