路徑 所在行數
課本頁數


1.Ether_header ----> /usr/include/net/ethernet.h line 39
page 15、139

程式碼:
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    */


接收端 u_int8_t  ether_dhost[ETH_ALEN] U:無符號;INT:整數;8:8位元;T:Type;
來源端 u_int8_t  ether_shost[ETH_ALEN] U:無符號;INT:整數;8:8位元;T:Type;
類型欄 u_int16_t ether_type U:無符號;INT:整數;16:16位元;T:Type;





2.ip_header ----> /usr/include/netinet/ip.h line 45             
page 126



程式碼:
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 "
#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;
    /*The options start here. */
  };


3.ICMP ----> /usr/include/netinet/ip_icmp.h line 27
page 139

struct icmphdr
{
  u_int8_t type;        /* message type */
  u_int8_t code;        /* type sub-code */
  u_int16_t checksum;
  union
  {
    struct
    {
      u_int16_t    id;
      u_int16_t    sequence;
    } echo;            /* echo datagram */
    u_int32_t    gateway;    /* gateway address */
    struct
    {
      u_int16_t    __unused;
      u_int16_t    mtu;
    } frag;            /* path mtu discovery */
  } un;
};


4.TCP ----> /usr/include/netinet/tcp.h line 62             
page 47

struct tcphdr
  {
    u_int16_t th_sport;        /* source port */
    u_int16_t th_dport;        /* destination port */
    tcp_seq th_seq;        /* sequence number */
    tcp_seq th_ack;        /* acknowledgement number */
#  if __BYTE_ORDER == __LITTLE_ENDIAN
    u_int8_t th_x2:4;        /* (unused) */
    u_int8_t th_off:4;        /* data offset */
#  endif
#  if __BYTE_ORDER == __BIG_ENDIAN
    u_int8_t th_off:4;        /* data offset */
    u_int8_t th_x2:4;        /* (unused) */
#  endif
    u_int8_t th_flags;
#  define TH_FIN    0x01
#  define TH_SYN    0x02
#  define TH_RST    0x04
#  define TH_PUSH    0x08
#  define TH_ACK    0x10
#  define TH_URG    0x20
    u_int16_t th_win;        /* window */
    u_int16_t th_sum;        /* checksum */
    u_int16_t th_urp;        /* urgent pointer */
};


5.UDP ----> /usr/include/netinet/udp.h line 58
page 50

struct udphdr
{
  u_int16_t uh_sport;        /* source port */
  u_int16_t uh_dport;        /* destination port */
  u_int16_t uh_ulen;        /* udp length */
  u_int16_t uh_sum;        /* udp checksum */
};



6.ARP/RARP ----> /usr/include/net/if_arp.h line 55
page 40


struct arphdr
  {
    unsigned short int ar_hrd;        /* Format of hardware address.  */
    unsigned short int ar_pro;        /* Format of protocol address.  */
    unsigned char ar_hln;        /* Length of hardware address.  */
    unsigned char ar_pln;        /* Length of protocol address.  */
    unsigned short int ar_op;        /* ARP opcode (command).  */
#if 0
    /* Ethernet looks like this : This bit is variable sized
       however...  */
    unsigned char __ar_sha[ETH_ALEN];    /* Sender hardware address.  */
    unsigned char __ar_sip[4];        /* Sender IP address.  */
    unsigned char __ar_tha[ETH_ALEN];    /* Target hardware address.  */
    unsigned char __ar_tip[4];        /* Target IP address.  */
#endif
  };


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 Joy 的頭像
    Joy

    正Man's World

    Joy 發表在 痞客邦 留言(0) 人氣()