TCPIP常用协议头格式

来源:互联网 发布:淘宝店怎么找上家 编辑:程序博客网 时间:2024/06/06 01:51

李国帅于2008.6编辑

包含TCP,UDP,IP,IPv6,Ethernet frame,FDDI 802等常见帧结构



TCP Header Format

/*RFC-793*/typedefstruct _tcphdr{unsigned short source; //原端口地址unsigned short dest; //目的端口地址unsigned long seq; //序号unsigned long ack_seq; //确认号unsigned short doff:4; //首部长度unsigned short resl:4; //保留unsigned short cwr:1; //控制unsigned short ece:1;unsigned short urg:1;unsigned short ack:1;unsigned short psh:1;unsigned short rst:1;unsigned short syn:1;unsigned short fin:1;unsigned short window;unsigned short check;unsigned short urg_ptr;}tcphdr;


IP Header Format

/*RFC-791*/typedefstruct _iphdr{unsigned char version:4; //版本unsigned char ihl:4; //首部长度unsigned char tos; //服务类型unsigned short tot_len; //总长度unsigned short id; //标志unsigned short frag_off; //分片偏移unsigned char ttl; //生存时间unsigned char protocol; //协议unsigned char check; //检验和unsigned long saddr; //源IP地址unsigned long daaddr; //目的IP地址}iphdr;

UDP Header Format

/*RFC-768--*/typedefstruct _udphdr{unsigned short source;unsigned short dest;unsigned short len;unsigned short check;}udphdr;

ICMP Header Format

/*RFC-792--*/typedefstruct _icmphdr{unsigned char type; //类型unsigned char code; //代码unsigned short checksum; //校验和union {struct {unsigned short id; //标识符unsigned short sequence; //序号} echo;unsigned long gateway; //目标路由器的IP地址struct {unsigned short unused; //unsigned short mtu;} frag;} un;} icmphdr;

IGMP Header Format

/*RFC-988--*/typedefstruct _igmphdr{unsigned char type;unsigned char code; /* For newer IGMP */unsigned short csum;unsigned long group;} igmphdr;

IPv6 Header Format

/*RFC-1365--*/typedefstruct _ipv6hdr{unsigned char version:4;unsigned char priority:4;unsigned char flow_lbl[3];unsigned short payload_len;unsigned char nexthdr;unsigned char hop_limit;struct in6_addr saddr;struct in6_addr daddr;} ipv6hdr;

Ethernet frame header

/** This is an Ethernet frame header.*/typedefstruct _ethhdr{unsigned char h_dest[ETH_ALEN]; // destination eth addrunsigned char h_source[ETH_ALEN]; // source ether addrunsigned short h_proto; // packet type ID field} ethhdr;

FDDI 802.2

/* Define 802.2 Type 1 header */struct fddi_8022_1_hdr{__u8 dsap; /* destination service access point */__u8 ssap; /* source service access point */__u8 ctrl; /* control byte #1 */} __attribute__ ((packed));/* Define 802.2 Type 2 header */struct fddi_8022_2_hdr{__u8 dsap; /* destination service access point */__u8 ssap; /* source service access point */__u8 ctrl_1; /* control byte #1 */__u8 ctrl_2; /* control byte #2 */} __attribute__ ((packed));/* Define 802.2 SNAP header */#define FDDI_K_OUI_LEN 3struct fddi_snap_hdr{__u8 dsap; /* always 0xAA */__u8 ssap; /* always 0xAA */__u8 ctrl; /* always 0x03 */__u8 oui[FDDI_K_OUI_LEN]; /* organizational universal id */__u16 ethertype; /* packet type ID field */} __attribute__ ((packed));/* Define FDDI LLC frame header */struct fddihdr{__u8 fc; /* frame control */__u8 daddr[FDDI_K_ALEN]; /* destination address */__u8 saddr[FDDI_K_ALEN]; /* source address */union{struct fddi_8022_1_hdr llc_8022_1;struct fddi_8022_2_hdr llc_8022_2;struct fddi_snap_hdr llc_snap;} hdr;} __attribute__ ((packed));