首页 > 代码库 > TCP/IP协议头部结构体
TCP/IP协议头部结构体
http://blog.csdn.net/ithomer/article/details/5662383
IP和TCP都20字节,IP存放地址,TCP存放端口。TCP还存放一些用于TCP特定协议的内容,序列号、确认号
// i386 is little_endian.#ifndef LITTLE_ENDIAN#define LITTLE_ENDIAN (1) //BYTE ORDER#else#error Redefine LITTLE_ORDER#endif//Mac头部,总长度14字节typedef struct _eth_hdr{ unsigned char dstmac[6]; //目标mac地址 unsigned char srcmac[6]; //源mac地址 unsigned short eth_type; //以太网类型}eth_hdr;//IP头部,总长度20字节typedef struct _ip_hdr{ #if LITTLE_ENDIAN unsigned char ihl:4; //首部长度 unsigned char version:4, //版本 #else unsigned char version:4, //版本 unsigned char ihl:4; //首部长度 #endif unsigned char tos; //服务类型 unsigned short tot_len; //总长度 unsigned short id; //标志 unsigned short frag_off; //分片偏移 unsigned char ttl; //生存时间 unsigned char protocol; //协议 unsigned short chk_sum; //检验和 struct in_addr srcaddr; //源IP地址 struct in_addr dstaddr; //目的IP地址}ip_hdr;//TCP头部,总长度20字节typedef struct _tcp_hdr{ unsigned short src_port; //源端口号 unsigned short dst_port; //目的端口号 unsigned int seq_no; //序列号 unsigned int ack_no; //确认号 #if LITTLE_ENDIAN unsigned char reserved_1:4; //保留6位中的4位首部长度 unsigned char thl:4; //tcp头部长度 unsigned char flag:6; //6位标志 unsigned char reseverd_2:2; //保留6位中的2位 #else unsigned char thl:4; //tcp头部长度 unsigned char reserved_1:4; //保留6位中的4位首部长度 unsigned char reseverd_2:2; //保留6位中的2位 unsigned char flag:6; //6位标志 #endif unsigned short wnd_size; //16位窗口大小 unsigned short chk_sum; //16位TCP检验和 unsigned short urgt_p; //16为紧急指针}tcp_hdr;//UDP头部,总长度8字节typedef struct _udp_hdr{ unsigned short src_port; //远端口号 unsigned short dst_port; //目的端口号 unsigned short uhl; //udp头部长度 unsigned short chk_sum; //16位udp检验和}udp_hdr;//ICMP头部,总长度4字节typedef struct _icmp_hdr{ unsigned char icmp_type; //类型 unsigned char code; //代码 unsigned short chk_sum; //16位检验和}icmp_hdr;
TCP/IP协议头部结构体
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。