一步一步开发sniffer(Winpcap+MFC)(四)要想从此过,留下协议头——各层网络协议头的实现

这一章实际上没什么讲的,就是把协议的标准搞懂,然后用数据结构将其实现就行。直接上代码吧,由底层到高层逐步实现。这些协议头是怎么使用的,将在下一章做出解释。#ifndef PROTOCOL_H#define PROTOCOL_H#define PROTO_ICMP 1#define PROTO_TCP 6 #define PROTO_UDP 17 #define
摘要由CSDN通过智能技术生成

这一章实际上没什么讲的,就是把协议的标准搞懂,然后用数据结构将其实现就行。直接上代码吧,由底层到高层逐步实现。这些协议头是怎么使用的,将在下一章做出解释。

#ifndef PROTOCOL_H
#define PROTOCOL_H

#define PROTO_ICMP 1
#define PROTO_TCP 6					
#define PROTO_UDP 17					 
#define LITTLE_ENDIAN 1234
#define BIG_ENDIAN    4321


//Mac帧头 占14个字节
typedef struct ethhdr
{
	u_char dest[6];			//6个字节 目标地址
	u_char src[6];				//6个字节 源地址
	u_short type;				//2个字节 类型
};

//ARP头
typedef struct arphdr
{
	u_short ar_hrd;						//硬件类型
	u_short ar_pro;						//协议类型
	u_char ar_hln;						//硬件地址长度
	u_char ar_pln;						//协议地址长度
	u_short ar_op;						//操作码,1为请求 2为回复
	u_char ar_srcmac[6];			//发送方MAC
	u_char ar_srcip[4];				//发送方IP
	u_char ar_destmac[6];			//接收方MAC
	u_char ar_destip[4];				//接收方IP
};

//定义IP头 
typedef struct iphdr
{
#if defined(LITTLE_ENDIAN)
	u_char ihl:4;
    u_char version:4;
#elif defined(BIG_ENDIAN)
	u_char version:4;
	u_char  ihl:4;
#endif
	u_char tos;				//TOS 服务类型
	u_short tlen;			//包总长 u_
  • 4
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值