Wireshark 数据分析(一)

pcap包的结构

pcap数据包由 pcap文件头packet包头 和 packet数据 组成如图所示(其中packet数据包也就是一帧以太帧):

Wireshark 数据分析(一)

 

Pcap文件头24 byte, 各字段说明:

  • Magic (标识位) 
    4 byte:这个标识位的值是16进制的 0xa1,0xb2,0xc3,0xd4 (正序)用来标示文件的开始。若为逆序(0xd4,0xc3, 0xb2, 0xa1)则需要将后面的Packet Header进行逆序处理

  • Major(主版本号):2 byte, 默认值 0x02, 0x00

  • Minor(副版本号):2 byte,默认值0x04, 0x00

  • ThisZone(区域时间):4 byte当地的标准时间;全零

  • SigFigs(精确时间戳): 4 byte时间戳的精度;全零1

  • SnapLen(精确时间戳) 
    4 byte, 最大的存储长度, 该值设置所抓获的数据包的最大长度,如果所有数据包都要抓获,将该值设置为65535;例如:想获取数据包的前64字节,可将该值设置为64

  • LinkType(链路层类型):4 byte链路类型, 数据包的链路层包头决定了链路层的类型

 

Packet包头(16 byte)各字段说明

Wireshark 数据分析(一)

  • Timestamp: 时间戳高位,精确到seconds , 4 byte , 32位。 秒计时,一个UNIX格式的精确到秒时间值,用来记录数据包抓获的时间,记录方式是记录从格林尼治时间的1970年1月1日 00:00:00 到抓包时经过的秒数

  • Timestamp:4 byte , 时间戳低位,精确到microseconds 微秒值

  • Caplen:4 byte,当前数据区的长度,所抓获的数据包保存在pcap文件中的实际数据帧长度,由此可以得到下一个数据帧的位置

  • Len: 4 byte,离线数据长度:网络中实际数据帧的长度,一般不大于caplen,多数情况下和Caplen数值相等。如果文件中保存不是完整的数据包,那么这个值可能要比前面的数据包长度的值大。(note: 
    编程未采用)

 

Packet数据(不定长)

即 Packet(通常就是链路层的数据帧去掉前面用于同步的前导码和标识帧开始8字节的帧开始符和最后用于CRC校验4字节的帧校验序列)具体内容,长度就是Caplen,这个长度的后面,就是当前PCAP文件中存放的下一个Packet数据包,可以确定下一组数据在文件中的起始位置

Wireshark 数据分析(一) 
Wireshark 数据分析(一) 
Wireshark 数据分析(一)


关于以太帧数据包中Frame、Ethernet层、IP层的分析请见Wireshark 数据分析(二)

关于以太帧数据包中 TCP 分析请见Wireshark 数据分析(三)