📄 inettype.h
字号:
union w{
unsigned long dwords;
struct {unsigned int high;unsigned int low;}words;
struct {unsigned char byte3;unsigned char byte2;unsigned char byte1;unsigned char byte0;}bytes;
};
union ethernet_address_type{
unsigned int words[3];
unsigned char bytes[6];
};
union ip_address_type{
unsigned long dwords;
unsigned int words[2];
unsigned char bytes[4];
};
union arp_table_type{
unsigned char bytes[12];
unsigned int words[6];
struct{
unsigned char status;
unsigned char ttl;
union ip_address_type ip_address;
union ethernet_address_type ethernet_address;
}arp; //状态,生存时间,ip地址,以太网地址
};
//以太网帧
struct ethernet{
unsigned char status; //接收状态
unsigned char nextpage; //下一个页
unsigned int length; //以太网长度,以字节为单位
unsigned int destnodeid[3]; //目的网卡地址
unsigned int sourcenodeid[3]; //源网卡地址
unsigned int protocal; //下一层协议
unsigned char packet[1500]; //包的内容
};
//IP包 仅当IHL=5时用 当不=5时作转换
struct ip{
unsigned int head[9]; //以太网包头
unsigned char verandihl; //版本与头长度
unsigned char typeofserver; //服务类型
unsigned int totallength; //总长度
unsigned int frameindex; //IP帧序号
unsigned int segment; //分段标志
unsigned char ttl; //生存时间
unsigned char protocal; //下一层协议
unsigned int crc; //校验和
unsigned int sourceip[2]; //源IP
unsigned int destip[2]; //目的IP
unsigned char packet[1484]; //IP包的内容
};
struct ippacket{
unsigned int head[9]; //以太网包头
unsigned int ippacket[750]; //IP包的内容
};
struct arp{
unsigned int head[9]; //以太网头
//arp报文的内容总长28字节
unsigned int harewaretype; //以太网为0x0001
unsigned int protocaltype; //ip 为0X0800
unsigned char halength; //=0X06
unsigned char palength; //=0X04
unsigned int operation; //操作 0X0001为请求 0X0002为应答 0X0003为反向地址请求 0X0004为反向地址应答
unsigned int sourcenodeid[3]; //源网卡地址
unsigned int sourceip[2]; //源IP地址
unsigned int destnodeid[3]; //目的网卡地址
unsigned int destip[2]; //目的IP地址
};
struct icmp{ //包含在IP包中,是IP的上层为0X01的应用
unsigned int head[9]; //以太网头
unsigned int iphead[10]; //IP头
unsigned char type; //0X08 PING请求 0X00 PING应答
unsigned char option; //0X00 PING
unsigned int crc;
unsigned int id;
unsigned int seq;
unsigned char icmpdata[1472];
};
struct tcp{
unsigned int head[9];
unsigned int iphead[10];
unsigned int sourceport; //源端口
unsigned int destport; //目的端口
unsigned long seqnumber; //顺序号
unsigned long acknumber; //确认号
unsigned char offset; //数据偏移量
unsigned char control; //连接控制
unsigned int window; //流控
unsigned int crc; //校验和 ,包括伪头部,TCP头部,数据
unsigned int urg; //紧急指针
unsigned char tcpdata[1460]; //TCP数据
};
struct udp{
unsigned int head[9];
unsigned int iphead[10];
unsigned int sourceport; //源端口
unsigned int destport; //目的端口
unsigned int length;
unsigned int crc; //校验和 ,包括伪头部,udp头部,数据
unsigned char udpdata[1472]; //udp数据
};
//所有协议的共用体
union netcard{
struct {unsigned char bytebuf[1536];}bytes;
struct{ unsigned int wordbuf[768];}words;
struct ethernet etherframe;
struct arp arpframe;
struct icmp icmpframe;
struct tcp tcpframe;
struct ip ipframe;
struct udp udpframe;
struct ippacket ippacket;
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -