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

📄 net.h

📁 44B0+8019系统
💻 H
字号:
//-----------------------------------------------------------------------------
// NET.H
//
//-----------------------------------------------------------------------------
#ifndef __NET_H__
#define __NET_H__

// Constants
#define TRUE      					1
#define ON								1
#define OK                    	1
#define FALSE     					0
#define OFF								0
#define MATCH							0
#define RET		   					0x0D
#define LF								0x0A
#define SPACE		 					0x20

// Port numbers
#define ECHO_PORT						7
#define DAYTIME_PORT					13
#define CHARGEN_PORT					19
#define TIME_PORT						37
#define HTTP_PORT  					80


// Event word bits
#define EVENT_ETH_ARRIVED			0x00000001
#define EVENT_AGE_ARP_CACHE		0x00000002
#define EVENT_TCP_RETRANSMIT		0x00000004
#define EVENT_TCP_INACTIVITY		0x00000008
#define EVENT_ARP_RETRANSMIT		0x00000010
#define EVENT_READ_ANALOG			0x00000020
#define EVENT_TX_TIMEOUT         0x80000000


// Type number field in Ethernet frame
#define IP_PACKET             	0x0800
#define ARP_PACKET            	0x0806
#define RARP_PACKET					0x8035

// Protocol identifier field in IP datagram
#define ICMP_TYPE             	1
#define IGMP_TYPE						2
#define TCP_TYPE              	6
#define UDP_TYPE              	17

// Message type field in ARP messages 
#define ARP_REQUEST           	1
#define ARP_RESPONSE          	2
#define RARP_REQUEST		        	3
#define RARP_RESPONSE         	4

// Hardware type field in ARP message
#define DIX_ETHERNET          	1
#define IEEE_ETHERNET         	6

typedef struct
{
   unsigned int       ipaddr;
   unsigned char      hwaddr[6];
   unsigned char      timer; 
} ARP_CACHE;


typedef struct
{
   unsigned char      buf[1520];
	unsigned int       ipaddr;
	unsigned char      proto_id;        //协议ID分别有TCP,UDP,ICMP,IGMP         
	unsigned short int len;
	unsigned char      timer;
} WAIT;


typedef struct
{
	unsigned short int  hardware_type;        //硬件类型
   unsigned short int  protocol_type;         //协议类型         
   unsigned char       hwaddr_len;
   unsigned char       ipaddr_len;               
   unsigned short int  message_type;
   unsigned char       source_hwaddr[6];      //源MAC        
   unsigned int        source_ipaddr;         //源IP
   unsigned char       dest_hwaddr[6];        //目的MAC
   unsigned int        dest_ipaddr;           //目的IP
} ARP_HEADER;


typedef struct
{
  unsigned char      dest_hwaddr[6];          //目的MAC
  unsigned char      source_hwaddr[6];        //源MAC    
  unsigned short int frame_type;          //ip or arp or...
} ETH_HEADER;


//有20个字节
typedef struct
{
   unsigned char       ver_len;             //4位版本,4位首部长度
   unsigned char       type_of_service;     //服务类型
   unsigned short int  total_length;        //16位的总长度(字节数)
   unsigned short int  identifier;          //标识符
   unsigned short int  fragment_info;       //段信息。3位标志,13位片偏移。
   unsigned char       time_to_live;        //生存时间
   unsigned char       protocol_id;         //协议ID分别有TCP,UDP,ICMP,IGMP
   unsigned short int  header_cksum;        //首部校验和。
   unsigned int        source_ipaddr;       //源IP
   unsigned int        dest_ipaddr;         //目的IP
} IP_HEADER;


typedef struct
{
   unsigned char       msg_type;
   unsigned char       msg_code;
   unsigned short int  checksum;
   unsigned short int  identifier;
   unsigned short int  sequence;
	unsigned char       echo_data;
} PING_HEADER;


typedef struct
{
   unsigned char       msg_type;
   unsigned char       msg_code;
   unsigned short int  checksum;
   unsigned int        msg_data;
   unsigned char       echo_data;
} ICMP_ERR_HEADER;


typedef struct 
{
   unsigned short int  source_port; //34
   unsigned short int  dest_port;   //36
   unsigned short int  length;      //38    指UDP首部长度加上UDP数据长度。最小为8,即无数据。
   unsigned short int  checksum;    //40
	unsigned char       msg_data;    //42   UDP数据,如收到4个数据则length = 0x0c
} UDP_HEADER;


typedef struct
{
   unsigned short int  source_port; //34
   unsigned short int  dest_port;   //36
   unsigned int        sequence;    //38
   unsigned int        ack_number;  //42
   unsigned short int  flags;       //46
   unsigned short int  window;      //48
   unsigned short int  checksum;    //50
   unsigned short int  urgent_ptr;  //52
	unsigned char       options;     //54
} TCP_HEADER;


typedef struct
{
  unsigned int        ipaddr;
  unsigned short int  port;
  unsigned int        his_sequence;
  unsigned int        my_sequence;
  unsigned int        old_sequence;
  unsigned int        his_ack;
  unsigned char       timer;
  unsigned char       inactivity;	 
  unsigned char       state;
  char                query[20];
} CONNECTION;

/*Ethernet 网数据定义*/
typedef struct
{
    unsigned char    Status;
    unsigned char    Nextpage;
    unsigned short   Length;

    unsigned short   Packet[757];
    unsigned char*   pPacket;

    unsigned short*  pDestnodeid;
    unsigned short*  pSourcenodeid;
    unsigned short*  pProtocol;

}Ethernet;


#endif
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -