📄 net.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 + -