📄 netprotocol.h
字号:
#ifndef __NETPROTOCOL_H__
#define __NETPROTOCOL_H__
#include "MyType.h"
#define PROTOCOL_IP 1
#define PROTOCOL_ARP 2
#define PROTOCOL_NULL 0
#define PROTOCOL_IP_ICMP 1
#define PROTOCOL_IP_TCP 2
#define PROTOCOL_IP_UDP 3
#define PROTOCOL_IP_NULL 0
#define PROTOCOL_ICMP_REQU 1
#define PROTOCOL_ICMP_RESP 2
#define PROTOCOL_ICMP_NULL 0
#define FRAME8019_HEADER_LEN 4
#define ETHER_FRAME_HEADER_LEN 14
#define FRAME8019_LEN 1518
#define PACKET_LEN 1500
#define RECV_STATUS_OFFSET 0
#define NEXT_PAGE_OFFSET 1
#define ETHERFRAME_LENTH_OFFSET 2
#define DES_MACADDR_OFFSET 4
#define SRC_MACADDR_OFFSET 10
#define PROTOCOL_OFFSET 16
#define PACKET_OFFSET 18
typedef struct {
BYTE Status; // 接收状态
BYTE NextPage; // 下一个页
BYTE Length[2]; // 以太帧长度(字节数)
BYTE DestMAC_Addr[6]; // 目的网卡地址
BYTE SrcMAC_Addr[6]; // 源网卡地址
BYTE Protocol[2]; // 下一层协议
BYTE Packet[1500]; // 包的内容
} Frame8019;
#define IP_ADDR_LEN 4 // IP地址的长度
#define MAC_ADDR_LEN 6 // MAC地址长度
#define FILL_DATA_LEN 18 // 填充数据长度
#define ARP_REQ 1 // ARP请求
#define ARP_RESP 2 // ARP响应
#define ARP_NULL 0 // ARP无效
typedef struct {
BYTE HardwareType[2]; // 硬件类型
BYTE ProtocolType[2]; // 协议类型
BYTE HardwareAddrLen; // 硬件地址长度
BYTE ProtocolAddrLen; // 协议地址长度
BYTE Operate[2]; // ARP操作字段
BYTE SrcMAC_Addr[MAC_ADDR_LEN]; // 源MAC地址
BYTE SrcIP_Addr[IP_ADDR_LEN]; // 源IP地址
BYTE DestMAC_Addr[MAC_ADDR_LEN]; // 目的MAC地址
BYTE DestIP_Addr[IP_ADDR_LEN]; // 目的IP地址
BYTE FillData[FILL_DATA_LEN]; //填充数据
} ARP_PACK;
typedef struct {
BYTE Version; // 数据报协议版本
BYTE HeaderLength; // 头部长度 (IHL*4)
BYTE ServiceType; // 服务类型 (声音传输、文件传输....)
BYTE TotalLength[2]; // 数据报总长,包括头部和数据
BYTE Idenfication[2]; // 标识,用来判断属于哪一个分组
BYTE DFragment; // 代表要不要分段
BYTE MFragment; // 代表还有进一步的分段
BYTE FragmentOffset[2]; // 分段偏移
BYTE LiveTime; // 分组生命周期计数器
BYTE Protocol; // 分组的协议 (TCP ,UDP ...)
BYTE HeaderChecksum[2]; // 头效验和
BYTE SrcIP_Addr[4]; // 源IP地址
BYTE DestIP_Addr[4]; // 目标IP地址
BYTE Options[40]; // 选项数据
} IP_Header;
typedef struct {
BYTE Type;
BYTE Code;
BYTE Checksum[2];
BYTE Identifier[2];
BYTE SequenceNumber[2];
} ICMP_Header;
typedef struct {
BYTE SrcPort[2];
BYTE DestPort[2];
BYTE TotalLength[2];
BYTE CheckSum[2];
} UDP_Header;
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -