TCP/IP协议头部结构体
网络协议结构体定义
1.// i386 is little_endian.
2.#ifndef LITTLE_ENDIAN
3.#define LITTLE_ENDIAN (1) //BYTE ORDER
4.#else
5.#error Redefine LITTLE_ORDER
6.#endif
7.//Mac头部,总长度14字节
8.typedef struct _eth_hdr
9.{
10. unsigned char dstmac[6]; //目标mac地址
11. unsigned char srcmac[6]; //源mac地址
12. unsigned short eth_type; //以太网类型
13.}eth_hdr;
14.//IP头部,总长度20字节
15.typedef struct _ip_hdr
16.{
17. #if LITTLE_ENDIAN
18. unsigned char ihl:4; //首部长度
19. unsigned char version:4, //版本
20. #else
21. unsigned char version:4, //版本
22. unsigned char ihl:4; //首部长度
23. #endif
24. unsigned char tos; //服务类型
25. unsigned short tot_len; //总长度
26. unsigned short id; //标志
27. unsigned short frag_off; //分片偏移
28. unsigned char ttl; //生存时间
29. unsigned char protocol; //协议
30. unsigned short chk_sum; //检验和
31.struct in_addr srcaddr; //源IP地址
32.struct in_addr dstaddr; //目的IP地址
33.}ip_hdr;
34.//TCP头部,总长度20字节
35.typedef struct _tcp_hdr
36.{
37. unsigned short src_port; //源端口号
38. unsigned short dst_port; //目的端口号
39. unsigned int seq_no; //序列号
40. unsigned int ack_no; //确认号
41. #if LITTLE_ENDIAN
42. unsigned char reserved_1:4; //保留6位中的4位首部长
度
43. unsigned char thl:4; //tcp头部长度
44. unsigned char flag:6; //6位标志
45. unsigned char reseverd_2:2; //保留6位中的2位
46. #else
47. unsigned char thl:4; //tcp头部长度
48. unsigned char reserved_1:4; //保留6位中的4位首部长
度
49. unsigned char reseverd_2:2; //保留6位中的2位
50. unsigned char flag:6; //6位标志
51. #endif
52. unsigned short wnd_size; //16位窗口大小
53. unsigned short chk_sum; //16位TCP检验和
54. unsigned short urgt_p; //16为紧急指针
55.}tcp_hdr;
56.//UDP头部,总长度8字节
57.typedef struct _udp_hdr
58.{
59. unsigned short src_port; //远端口号
60. unsigned short dst_port; //目的端口号
61. unsigned short uhl; //udp头部长度
62. unsigned short chk_sum; //16位udp检验和
63.}udp_hdr;
64.//ICMP头部,总长度4字节
65.typedef struct _icmp_hdr
66.{
67. unsigned char icmp_type; //类型
68. unsigned char code; //代码
69. unsigned short chk_sum; //16位检验和
70.}icmp_hdr;
全面的网络协议结构体定义
1./*********************************************/
2.//计算机网络各种协议的结构
3.#define ETHER_ADDR_LEN 6 //NIC物理地址占6字节
4.#define MAXDATA 10240
5./*
6.网络实验程序
7.数据包中的TCP包头,IP包头,UDP包头,ARP包,Ethernet包等.
8.以及各种表.路由寻址表,地址解析协议表DNS表等
9.*/
10.#define ETHERTYPE_IP 0x0800 //IP Protocal
11.#define ETHERTYPE_ARP 0x0806 //Address Resolution Prot
ocal
12.#define ETHERTYPE_REVARP 0x0835 //Reverse Address Reso
lution Protocal 逆地址解析协议
13./*********************************************/
14.//ethernet
15.typedef struct ether_header
16.{
17. u_char ether_dhost[ETHER_ADDR_LEN];
18. u_char ether_shost[ETHER_ADDR_LEN];
19. u_short ether_type;
20.}ETH_HEADER;
21./*********************************************/
22.//ether_header eth;
23./*********************************************/
24.//arp
25.typedef struct arphdr
26.{
27. u_short ar_hrd;
28. u_short ar_pro;
29. u_char ar_hln;
30. u_char ar_pln;
31. u_short ar_op;
32.}ARP_HEADER;
33./*********************************************/
34./*********************************************/
35.//IP报头
36.typedef struct ip
37.{
38. u_int ip_v:4; //version(版本)
39. u_int ip_hl:4; //header length(报头长度)
40. u_char ip_tos;
41. u_short ip_len;
42. u_short ip_id;
43. u_short ip_off;
44. u_char ip_ttl;
45. u_char ip_p;
46. u_short ip_sum;