Java之Pcap文件解析(二:建立数据结构)

本文详细介绍了如何使用Java解析Pcap文件,包括Pcap文件头、数据头、以太网数据帧、IP头、TCP头、UDP头、协议类型和协议五元组的数据结构解析。
摘要由CSDN通过智能技术生成

数据结构

根据上一篇文章的内容,可以建立如下数据结构

Pcap 文件头

/**
     * Pcap 文件头结构
     * @author johnnie
     *
     */
    public class PcapFileHeader {

        private int magic;                  // 标识位,这个标识位的值是16进制的 0xa1b2c3d4(4个字节)
        private short magorVersion;     // 主版本号(2个字节)
        private short minorVersion;     // 副版本号(2个字节)
        private int timezone;               // 区域时间(4个字节)
        private int sigflags;               // 精确时间戳(4个字节)
        private int snaplen;                // 数据包最大长度(4个字节)
        private int linktype;               // 链路层类型(4个字节)

        public int getMagic() {
            return magic;
        }

        public void setMagic(int magic) {
            this.magic = magic;
        }

        public short getMagorVersion() {
            return magorVersion;
        }

        public void setMagorVersion(short magorVersion) {
            this.magorVersion = magorVersion;
        }

        public short getMinorVersion() {
            return minorVersion;
        }

        public void setMinorVersion(short minorVersion) {
            this.minorVersion = minorVersion;
        }

        public int getTimezone() {
            return timezone;
        }

        public void setTimezone(int timezone) {
            this.timezone = timezone;
        }

        public int getSigflags() {
            return sigflags;
        }

        public void setSigflags(int sigflags) {
            this.sigflags = sigflags;
        }

        public int getSnaplen() {
            return snaplen;
        }

        public void setSnaplen(int snaplen) {
            this.snaplen = snaplen;
        }

        public int getLinktype() {
            return linktype;
        }

        public void setLinktype(int linktype) {
            this.linktype = linktype;
        }

        public PcapFileHeader() {}

        public PcapFileHeader(int magic, short magorVersion, short minorVersion,
                int timezone, int sigflags, int snaplen, int linktype) {
            this.magic = magic;
            this.magorVersion = magorVersion;
            this.minorVersion = minorVersion;
            this.timezone = timezone;
            this.sigflags = sigflags;
            this.snaplen = snaplen;
            this.linktype = linktype;
        }

        @Override
        public String toString() {
            return "PcapFileHeader [magic=" + DataUtils.intToHexString(magic)
                    + ", magorVersion=" + DataUtils.shortToHexString(magorVersion)
                    + ", minorVersion=" + DataUtils.shortToHexString(minorVersion)
                    + ", timezone=" + DataUtils.intToHexString(timezone)
                    + ", sigflags=" +  DataUtils.intToHexString(sigflags)
                    + ", snaplen=" +  DataUtils.intToHexString(snaplen)
                    + ", linktype=" +  DataUtils.intToHexString(linktype)
                    + "]";
        }

    }   

Pcap 数据头

/**
 * Pcap 数据包头
 * @author johnnie
 *
 */
public class PcapDataHeader {

    /*
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值