************************eth的结构**************************************
struct ethhdr
{ unsigned char
h_dest[ETH_ALEN]; unsigned char
h_source[ETH_ALEN]; __be16 h_proto; }
__attribute__((packed));
struct
ether_header { u_int8_t ether_dhost[ETH_ALEN]; //
destination eth addr u_int8_t ether_shost[ETH_ALEN]; // source ether
addr u_int16_t ether_type; // packet type ID field }
__attribute__ ((__packed__));
***********************IP的结构*********************************** struct
iphdr { #if __BYTE_ORDER == __LITTLE_ENDIAN unsigned int
ihl:4; unsigned int version:4; #elif __BYTE_ORDER ==
__BIG_ENDIAN unsigned int version:4; unsigned int
ihl:4; #else # error "Please fix <bits/endian.h>" #endif
u_int8_t tos; u_int16_t tot_len; u_int16_t id; u_int16_t
frag_off; u_int8_t ttl; u_int8_t protocol; u_int16_t
check; u_int32_t saddr; u_int32_t daddr; };
***********************TCP的结构**************************** struct
tcphdr { u_int16_t source; u_int16_t
dest; u_int32_t seq; u_int32_t ack_seq; # if __BYTE_ORDER ==
__LITTLE_ENDIAN u_int16_t res1:4; u_int16_t doff:4;
u_int16_t fin:1; u_int16_t syn:1; u_int16_t rst:1;
u_int16_t psh:1; u_int16_t ack:1; u_int16_t urg:1;
u_int16_t res2:2; # elif __BYTE_ORDER == __BIG_ENDIAN u_int16_t
doff:4; u_int16_t res1:4; u_int16_t res2:2; u_int16_t
urg:1; u_int16_t ack:1; u_int16_t psh:1; u_int16_t
rst:1; u_int16_t syn:1; u_int16_t fin:1; # else # error
"Adjust your <bits/endian.h> defines" # endif u_int16_t
window; u_int16_t check; u_int16_t
urg_ptr; }; ***********************UDP的结构***************************** struct
udphdr { u_int16_t source; u_int16_t
dest; u_int16_t len; u_int16_t check; };
|