Java 解析Pcap文件(2)
@author:Jingdai
@date:2021.03.11
前面介绍了Pcap文件的结构并对Pcap文件的 Global Header 和 Packet Header进行了解析,接下来就是对Packet Data 即数据链路层的帧进行解析了。
数据链路层解析
Pcap包的Packet Data就是数据链路层的帧,可以根据前面的Packet Header 中的 capLen 字段知道对应的Packet Data 数据的字节数,从而进行读取。这里仅仅以以太网的帧为例进行解析,我们一般用 Wireshark 抓取的包大部分也是以太网的帧。如下图是以太网的帧结构。
需要注意的是,这里的 Packet Data 的以太网帧没有前同步码和FCS,原因可以参考这篇博客,所以以太网的帧首部就固定为14个字节,6字节的目的MAC地址,6字节的源MAC地址和2字节的协议类型,如果协议类型字段值为0x0800时,代表上层协议是IP。
这里我不解析源MAC地址和目的MAC地址,因为对我的实验没有用,这里我只需要上层协议的类型。
然后据此建立类 FrameHeader,代码如下。