当前位置:文档之家› TCPIP协议头部结构体

TCPIP协议头部结构体

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;

相关主题