標籤:blog http io os ar div art 代碼 log
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_ENDIANunsigned char ihl:4; //首部長度unsigned char version:4, //版本 #elseunsigned char version:4, //版本unsigned char ihl:4; //首部長度#endifunsigned 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_ENDIANunsigned char reserved_1:4; //保留6位中的4位首部長度unsigned char thl:4; //tcp頭部長度unsigned char flag:6; //6位標誌unsigned char reseverd_2:2; //保留6位中的2位#elseunsigned char thl:4; //tcp頭部長度unsigned char reserved_1:4; //保留6位中的4位首部長度unsigned char reseverd_2:2; //保留6位中的2位unsigned char flag:6; //6位標誌 #endifunsigned 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協議頭部結構體