我有一个无线网络捕获( .pcap
)说我分析,并横跨东西在我看来是802.11规格和数据的Wireshark的解释不一致运行。 具体是什么我试图拉开为2个字节的802.11 帧控制字段。
来自http://www4.ncsu.edu/~aliu3/802.bmp ,帧控制字段的子字段的格式如下:
以下是有我困惑的包的Wireshark的屏幕截图:
从而每Wireshark的屏幕截图,帧控制字段的标志部分(最后8个比特)是为0x22,这是好的。 版本/类型/子类型是如何0x08
与框架的Wireshark描述匹配起来就是有我困惑。
0x08
= 0000 1000b
,我认为将转化为版本= 00
,类型= 00
(我以为意味着管理 数据不帧)和子类型= 1000
(我认为将是信标帧)。 所以我希望这个框架是一个管理框架,更具体地说,信标帧。 然而Wireshark的报告为数据帧。 这是混淆了我的第二件事就是Wireshark是连拉0x20
从线路Type/Subtype: Data (0x20)
任何人都可以澄清我的802.11规范/ Wireshark的捕获的解释我为什么两者不相一致?
在你示例中的数据帧是0x08的,因为帧控制(FC)的该字节的布局。 0x08的= 00001000 - 第4位(0000)是子类型。 0000是该帧的子类型 - 接下来的2位(10)的类型为,它是2的小数,因而一个数据类型帧 - 最后的2位(00)是版本,这是0
下表平移FC的亚型型版本字节的数帧类型十六进制值。 一个比较QoS数据的正常数据帧可能真正帮助得到这个拍下来。 你要知道在表中可能有一个或两个错误,正如我刚才翻飞起来。
你是正确的,1000是一个信标帧,你只是在寻找在错误的位。
你有一个radiotap头,你可以得到的类型的dec表示,像这样从PCAP API:
int type = pkt_data[20] >> 2;
这是一个常见的错误,并已肯定咬了我好几次。
这是下降到字节顺序。
当你有一个多字节数来表示,问题是哪个字节你把/发送第一?
自然(人)字节顺序是首先把很大一部分,那么以后更小的部分吧,左到右,也被称为大端。 请注意,在每个字节的位永远不会从程序员的角度来看周围的错误的方式。
例如1234小数需要2个字节,04D2十六进制。 你写/发送04 D2,D2或04? 首先是大端,二是小端。
混淆更,涉及可能使用不同的字节序的机制。
还有就是网络字节顺序,在这种情况下,小端,架构字节顺序(可以为每个CPU架构不同),并且数据可能在缓冲区中,所以它会取决于你是否读取缓冲区顶级变化汉字,或底部到顶部。
它没有帮助,其中的解释位都什么也可以是“倒退”,因为在你的原职。
我使用wireshark version-2.4.3
在Windows上。 dataframes我的捕获文件就像下面。
Frame control field = 0x0842 i.e., in binary format 0000 1000 0100 0010
Framecontrol flag field = 0x42.i.e., in binary format 0100 0010
所以,按我的理解LSB 8bits
在FrameControl中域将对应的标志。
MSB 8位将对应于子类型,类型,版本也就是在我的情况下, 0000-subtype
和10-type
与00-version
。
这是亚型0的数据帧。
这可能是与你的情况Wireshark的错误。 应该dispaly帧控制字段为0x0822
,而不是0x2208。
标志字段被正确地显示为0x22
。
在我的情况,我使用wireshark-2.4.3
和帧控制字段的显示是正确的0x0842
,其中的标志是0x42
。
My_capture_file: