网络通信过程中会发送大量的请求,每一个请求都需要通过IP数据包进行交互,但是IP数据包的头部信息过于复杂,如果通过IP数据包头进行数据包之间的区分就太复杂了,所以就产生了元组。
五元组是元组中的一种,还有四元组、七元组。通过五元组可以表示所在的数据包属于哪一个会话。该头正在数据包查重和流量对比的时候使用较多。
五元组的结构包括:IP源地址、源端口、目的IP地址、目标端口、4层通信协议。
文件头+数据包头+数据+数据包头+数据+数据包头+数据+…
数据包格式:
结构名称 | 字节数 | 作用 |
---|---|---|
文件头Global Header | 24 | 整个数据流文件,只会有一个Global Header,它定义了本文本的读取规则、最大存取长度限制等内容 |
数据包头 Packet Header | 16 | Pachet Header可以有多个,每个Packet Header后面会跟一串Packet Data, Packet Header定义了Packet Data的长度、时间戳等信息 |
Packet Data |
这里以nacp库
中定义的结构为例
结构定义如下:
struct pcap_file_header {
bpf_u_int32 magic; // 文件开始标记
u_short version_major; // 当前文件主要的版本号
u_short version_minor; // 当前文件次要的版本号
bpf_int32 thiszone; // 当地的标准时间 gmt to local correction; this is always 0
bpf_u_int32 sigfigs; // 时间戳精度 accuracy of timestamps; this is always 0
bpf_u_int32 snaplen; // 最大的存储长度 max length saved portion of each pkt
bpf_u_int32 linktype; // 链路类型 data link type (LINKTYPE_*)
};
1、Magic名称
:文件开始标记大小
:4Byte
描述
:用来识别文件自己和字节顺序。0xa1b2c3d4
:用来表示按照原来的顺序读取。0xd4c3b2a1
:表示下面的字节都要交换顺序读取。
考虑到计算机的内存结构,一般采用0xd4c3b2a1
,如下0xd4c3b2a1
:所有字节都需要交换顺序读取
2、 Major名称
:当前文件主要的版本号大小
:2Byte描述
:一般为 0x0200
。【实际上因为需要交换读取顺序,所以计算机应该看到的是 0x0002
】
3、 Minor名称
:当前文件次要版本号大小
:4Byte描述
:
一般为 0x0400
【计算机看到的应该是 0x0004
】
4、 ThisZone名称
:当地的标准时间大小
:4Byte描述
:如果用的是 GMT 则全零。一般都直接写 0000 0000
5、 SigFigs名称
:时间戳精度大小
:4Byte描述
:设置为 全零 即可。
6、 SnapLen名称
:最大存储长度大小
:4Byte描述
:如果想把整个包抓下来,设置为 ffff 0000
,但一般来说 ff7f 0000
就足够了。
【计算机中看到的应该是 0000 ff7f
】
7、 LinkType名称
:链路类型大小
:4Byte描述
:
这里以nacp库
中定义的结构为例
数据包头有三个属性,每个属性占固定大小,所以可以使用一个结构体表示。
struct pcap_pkthdr {
struct timeval ts; // 捕获时间 time stamp
bpf_u_int32 caplen; // 数据帧/区的长度 length of portion present
bpf_u_int32 len; // 离线数据长度 length of this packet (off wire)
};
1、Timestamp名称
:被捕获时间的高位大小
:4Byte描述
:单位 seconds
2、Timestamp
名称
:被捕获时间的低位大小
:4Byte描述
:单位 microseconds
3、Caplen
名称
:当前数据区的长度,即抓取到数据帧的长度大小
:4Byte描述
:不包括 Packet Header 本身的长度,单位是 Byte,由此可以的找到下一个数据帧的位置。
4、Len
名称
:离线数据长度大小
:4Byte描述
:网络中实际数据帧的长度,一般不大于 caplen,多数情况下和 Caplen的数值相等。
参考地址:
https://blog.csdn.net/qq_43481350/article/details/119909121
https://blog.csdn.net/m0_58087444/article/details/123078984
C语言解析pcap文件得到HTTP信息实例https://blog.csdn.net/koudaidai/article/details/7673082
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/zx77588023/article/details/126285001
内容来源于网络,如有侵权,请联系作者删除!