首页 > 代码库 > 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协议头部结构体