struct iphdr 상세 정보

11247 단어
/usr/src/linux-2.6.19/include/linux/ip.h struct iphdr { #if defined(__LITTLE_ENDIAN_BITFIELD)     __u8    ihl:4,             version:4;
#elif defined (__BIG_ENDIAN_BITFIELD)     __u8    version:4,             ihl:4; #else #error "Please fix "#endif     __u8    tos;     __be16 -tot_len;     __be16 -
id;     __be16 -
frag_off;     __u8    ttl;     __u8    protocol;     __be16 -
check;     __be32 -
saddr;     __be32 -
daddr; };  31                                     0      |----|----|------|--|-------------------|----------      |ver |ihl | -tos | -|    tot_len        |      |----|----|------|--|-------------------|      |       id          |   frag_off       -|      |---------|---------|-------------------|      |   ttl   |protocol |    check          | 20 Bytes      |---------|---------|-------------------|      |                saddr                  |      |---------------------------------------|      |                daddr                  |      |---------------------------------------|----------      |                                       |     -|                options                | 40 Bytes      |              |||--------------------------------|IPv4(Internet Protocol) 헤드
  iphdr->version
     (4 ), 4, IP IPv4。

iphdr->ihl
     (4 ): IP 32 bit ( IP 4  -- 32 ), 。 4 , 60 。 IP ( )<==> 5 * 32 / 8 = 5 * 4 = 20 Bytes

iphdr->tos
     (8 ):  (TOS) 3 bit ( ),4 bit TOS 1 bit 0。4 bit TOS : 、 、
。4 bit 1 bit。 4 bit 0,

iphdr->tot_len
     (16 ) IP ,, IP 。 16 , IP 65535
      IP , ( ) 。 46 , IP 。 , IP 46 IP 。

iphdr->id
     (16 ) 。 1。

iphdr->frag_off (16 )
    frag_off 13  --  (Fragment offset) 。 , ( ) 8 。 8 。 13 , , 8192 。 , 65,536 , iphdr->tot_len 1。

iphdr->frag_off 3
    (1)  0 , 0;
    (2)  1 “ ”(MF -- More Fragment) 。 , 1。
    (3)  2 “ ”(DF -- DonDon't Fragment) , 1,IP , , ICMP 。
     
   |---|-------------|
   |DM0|   offset    |
   |---|-------------|
   15 1312          0 
       
    4 32 bit : 0~7bit, 8~15bit, 16~23bit, 24~31 bit。 big endian 。 TCP/IP , 。

좋은 웹페이지 즐겨찾기