📄 ip.h
字号:
/*****************************************************************************\
FileName: IP.h
Purpose: IP协议的格式
Author: Ahfu, ah_fu126@hotmail.com
Comment:
Create At: 2007-01-02
\*****************************************************************************/
#ifndef _IP_HEAD_H_
#define _IP_HEAD_H_
#ifdef __cplusplus
extern "C"
{
#endif
#ifdef _CL
#pragma pack(1)
#define PACK
#else
#define PACK __attribute__ ((packed))
#endif
//注意:使用位域的时候,先存放低位,再存放高位
// 注意使用short或int字段的时候,要转换网络字节顺序
typedef struct _tag_ip
{
unsigned char HeadLen : 4 PACK; //头长度 *4
unsigned char Version : 4 PACK; //协议版本 4
unsigned char TOS PACK; //服务类型
unsigned short Length PACK; //总长度
unsigned short Sequence PACK; //标识,每发送一个数据包就会加一。新的共享检测基于此字段
unsigned short Flag : 3 PACK; //标志
unsigned short Excursion:13 PACK; //偏移
unsigned char TTL PACK; //生存时间
unsigned char Proto PACK; //协议
unsigned short CheckSum PACK; //校验和
unsigned int SrcIP PACK; //源IP
unsigned int DestIP PACK; //目的IP
}IP_HEADER;
typedef struct _tag_tcp
{
unsigned short SrcPort PACK; //源端口
unsigned short DestPort PACK; //目的端口
unsigned int Sequence PACK; //序列号
unsigned int Confirm PACK; //确认号
unsigned short FIN : 1 PACK;
unsigned short SYN : 1 PACK;
unsigned short RST : 1 PACK;
unsigned short PSH : 1 PACK;
unsigned short ACK : 1 PACK; //应答标志
unsigned short URG : 1 PACK; //紧急标志
unsigned short Reserved : 6 PACK; //保留
unsigned short HeadLen : 4 PACK; //首部长度
unsigned short WindowSize PACK; //窗口大小
unsigned short CheckSum PACK; //TCP校验和
unsigned short Img PACK; //紧急指针
}TCP_HEADER;
typedef struct _tag_udp
{
unsigned short SrcPort PACK; //源端口
unsigned short DestPort PACK; //目的端口
unsigned short Length PACK; //总长度
unsigned short CheckSum PACK; //校验和
}UDP_HEADER;
#define MAX_IP_LEN 1480 /*IP包数据域能够达到的最大长度*/
typedef struct _tagTcpData
{
TCP_HEADER head;
char data[MAX_IP_LEN - sizeof(TCP_HEADER)];
}TCP_DATA;
typedef struct _tagUdpData
{
UDP_HEADER head;
char data[MAX_IP_LEN - sizeof(UDP_HEADER)];
}UDP_DATA;
typedef union _ip_data
{
TCP_DATA tcp;
UDP_DATA udp;
char raw[MAX_IP_LEN];
}IP_DATA;
//定义协议标识
#define PROTOCOL_IP 0x0008
#define PROTOCOL_ARP 0x0608
#define PROTOCOL_TCP 0x06
#define PROTOCOL_UDP 0x11
#ifdef _CL
#pragma pack()
#endif
#ifdef __cplusplus
}
#endif
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -