⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ip.h

📁 众所周知
💻 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 + -