The Ethernet header structure is shown in the illustration below:
以太网头部14 bytes
|  
      | 
     
      | 
     
      | 
     
      | 
     
      | 
   
|  
      | 
     
      | 
     
      | 
     
      | 
     
      | 
   
|  
      
      Ethernet header structure 
        | 
   ||||
 
 The IP header structure is as follows:IP头部20 bytes
 
  
   
    
      
      
       4 
       
      
      
       8 
       
      
      
       16 
       
      
      
       32 bits 
       
     
    
      
      
       Ver. 
        
      
      
       IHL 
        
      
      
       Type of service 
        
     Total length 
     
    
      
      
       Identification 
        
      
      
       Flags 
        
     Fragment offset 
     
    
      
      
       Time to live 
        
     Protocol 
      
      
       Header checksum 
        
     
    
      
      
       Source address 
        
     
    
      
      
       Destination address 
        
     
    
      
      
       Option + Padding 
        
     
    
      
      
       Data 
        
     
    
      
       
       IP header structure 
       
     
   
  
The TCP header structure is as follows:
TCP头部20 bytes
 
  
   
    
      
      
       16 
       
      
      
       32 bits 
       
     
    
      
      
       Source port 
        
     Destination port 
     
    
      
      
       Sequence number 
        
     
    
      
      
       Acknowledgement number 
        
     
    
      
      
       Offset 
        
      
      
       Resrvd 
        
      
      
       U 
        
      
      
       A 
        
      
      
       P 
        
      
      
       R 
        
      
      
       S 
        
      
      
       F 
        
      
      
       Window 
        
     
    
      
      
       Checksum 
        
      
      
       Urgent pointer 
        
     
    
      
      
       Option + Padding 
        
     
    
      
      
       Data 
        
     
    
      
       
       TCP header structure 
       
     
   
  
The UDP header structure is shown as follows:
UDP头部8 bytes
 
  
   
    
      
       
       16 
       
      
       
       32 bits 
       
     
    
      
       
       Source port 
        
      
       
       Destination port 
        
     
    
      
       
       Length 
        
      
       
       Checksum 
        
     
    
      
       
       
Data
 
        
     
    
      
       
       UDP header structure 
       
     
   
  
一些协议头部的定义:
 
 struct ip 
{
#if BYTE_ORDER == LITTLE_ENDIANu_char    ip_hl:4,        /* header length */ip_v:4;            /* version */
#endif
#if BYTE_ORDER == BIG_ENDIANu_char    ip_v:4,            /* version */ip_hl:4;        /* header length */
#endifu_char    ip_tos;            /* type of service */short    ip_len;            /* total length */u_short    ip_id;            /* identification */short    ip_off;            /* fragment offset field */u_char    ip_ttl;            /* time to live */u_char    ip_p;            /* protocol */u_short    ip_sum;            /* checksum */struct    in_addr ip_src,ip_dst;    /* source and dest address */
};struct udphdr 
{u_short    uh_sport;        /* source port */u_short    uh_dport;        /* destination port */short    uh_ulen;        /* udp length */u_short    uh_sum;            /* udp checksum */
};struct tcphdr 
{u_short    th_sport;        /* source port */u_short    th_dport;        /* destination port */tcp_seq    th_seq;            /* sequence number */tcp_seq    th_ack;            /* acknowledgement number */
#if BYTE_ORDER == LITTLE_ENDIANu_char    th_x2:4,        /* (unused) */th_off:4;        /* data offset */
#endif
#if BYTE_ORDER == BIG_ENDIANu_char    th_off:4,        /* data offset */th_x2:4;        /* (unused) */
#endifu_char    th_flags;u_short    th_win;            /* window */u_short    th_sum;            /* checksum */u_short    th_urp;            /* urgent pointer */
};