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...