pcap文件解析

一个IP包头的长度最长为“1111”,即15*4=60个字节。IP包头最小长度为20字节。

IP头:
typedef struct ip_header 
{
u_char ver_ihl;                   // 版本 (4 bits) + 首部长度 (4 bits)
u_char tos;                           // 服务类型(Type of service)
u_short tlen;                     // 总长(Total length)
u_short identification;         // 标识(Identification)
u_short flags_fo;              // 标志位(Flags) (3 bits) + 段偏移量(Fragment offset) (13 bits)
u_char ttl;                          // 存活时间(Time to live)
u_char proto;                      // 协议(Protocol)
u_short crc;                        // 首部校验和(Header checksum)
ip_address saddr;               // 源地址(Source address)
ip_address daddr;              // 目的地址(Destination address)
u_int op_pad;                 // 选项与填充(Option + Padding)
}ip_header;
TCP数据报头
typedef struct TCPHeader_t
{
u_int16 SrcPort; //源端口
u_int16 DstPort; //目的端口
u_int32 SeqNO; //序号
u_int32 AckNO; //确认号
u_int8 HeaderLen; //数据报头的长度(4 bit) + 保留(4 bit)
u_int8 Flags; //标识TCP不同的控制消息
u_int16 Window; //窗口大小
u_int16 Checksum; //校验和
u_int16 UrgentPointer;  //紧急指针
}TCPHeader_t;
UDP数据报头
typedef struct udp_header 
{
u_short sport;                 // 源端口(Source port)
u_short dport;               // 目的端口(Destination port)
u_short len;                    // UDP数据包长度(Datagram length)
u_short crc;                      // 校验和(Checksum)
}udp_header;

首部长度(ip_len = (ih->ver_ihl & 0xf) * 4;)得到TCP/UDP数据包的位置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值