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

📄 netprotocol.h

📁 S3C44B0X接8019的源代码
💻 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 + -