以太网协议实现RFC894规定的功能,能发送接收采用RFC894封装格式的帧,同时也能够兼容与RFC894混合的RFC1042(IEEE802)封装格式的帧。
 

Ethernet: 1980年,数字设备公司(DEC)、Intel公司、施乐(Xerox)公司推出了DIX V1.0标准。1982年又推出了DIX V2.0标准,也就是现在通常所说的Ethernet II, 它采用了CSMA/CD(Carrier Sense, Multiple Access with Collision Detection)含冲突检测的载波侦听多路接入。

802.3:1985年,IEEE推出了"802.3 含冲突检测的载波侦听多路访问(CSMA/CD)访问方式和物理层规范",即802.3CSMA/CD标准

以太网上IP包的封装(RFC 894): 

     Header   
   ...--------+--------+--------+------+
       前导码  | 目的地址|  源地址  |   类型 |                 
   ...--------+--------+--------+------+
                        6          6            2

      类型:0x0800---IP    0x0806---ARP  等
     

IEEE802上IP包的封装(RFC 1042):
   
    Header
   ...--------+--------+--------+
              MAC Header             |                    802.{3/4/5} MAC头
   ...--------+--------+--------+
  
   +----------+----------+--------+
   | DSAP=K1| SSAP=K1 | Control |              802.2 LLC     
   +----------+----------+--------+
          1               1               1

   +--------+--------+---------+-------+
   |Protocol Id or Org Code =K2|    类型  |      802.2 SNAP
   +--------+--------+---------+-------+
       1         1               1             2  

   The K1 value is 170 (decimal) = 0xAA.
   The K2 value is 0 (zero).
   The control value is 3 (Unnumbered Information) = 0x03.  
   EtherType (IP = 2048, ARP = 2054)    "Assigned Numbers", RFC-1010
  
  
IPX包的封装:
  IPX有以下四种封装帧格式:
     1.  Ethernet II
     2.  IEEE 802.3 with LLC     
     3.  IEEE 802.3 "raw"
     4.  IEEE 802.3 with SNAP
 
   
   1.  Ethernet II(以太网v2)
  
   ...--------+--------+--------+------+--------+-- ... --+----------+
       前导码  |目的地址 |  源地址 |  类型  |  IPX头  |  Data   | FCS(校验) |    
   ...--------+--------+--------+------+--------+-- ... --+----------+
                        6            6         2      
      IPX类型 = 0x8137                 
   
   2.  IEEE 802.3 with LLC  
   ...--------+--------+--------+------+------+--------+-- ... --+----------+
       前导码  | 目的地址|  源地址 |  类型   |  LLC |   IPX头  |  Data   | FCS(校验)|    
   ...--------+--------+--------+------+------+--------+-- ... --+----------+
                         6             6        2        3   
  
       LLC:
     --------+--------+--------
     | DSAP  | SSAP   |   Ctrl   |
     --------+--------+--------      
           1         1           1
        
     IPX DSAP=SSAP=0xE0   ctrl=0x03
     DSAP=0xE0意味着包的类型是Novell IPX包         
                 
  3.  IEEE 802.3 "raw"                 
   ...--------+--------+--------+------+--------+-- ... --+----------+
       前导码  |目的地址 | 源地址   | 长度  |    IPX头 |  Data   | FCS(校验)|    
   ...--------+--------+--------+------+--------+-- ... --+----------+
                         6           6          2 
                        
    ipx的出现要早于802.2(LLC),因此早先的ipx包直接封装在802.3上,就有了802.3 raw的封装。注意到这种封装模式没有表示类型的字段。
   
    要说明的是IPX头最开始的两个字节是 0xFFFF,这个值与llc中所有的dsap的定义都不同,所以也用这个值来区分ipx包。在内核eth.c的eth_type_trans()函数的处理中,可以看到如下描述:
       /*
          * This is a magic hack to spot IPX packets. Older Novell breaks
          * the protocol design and runs IPX over 802.3 without an 802.2 LLC
          * layer. We look for FFFF which isn't a used 802.2 SSAP/DSAP. This
          * won't work for fault tolerant netware but does for the rest.
          */
         if (*(unsigned short *)rawp == 0xFFFF)
                return htons(ETH_P_802_3);
         
         
  4.  IEEE 802.3 with SNAP 
  
 ...--------+--------+--------+------+------+------+--------+-- ... --+----------+
     前导码  | 目的地址|  源地址 |   类型 |  LLC  | SNAP |  IPX头  |  Data    | FCS(校验)|    
 ...--------+--------+--------+------+------+------+--------+-- ... --+----------+
                      6           6          2         3        5
   
      LLC:
     --------+--------+--------
     | DSAP  | SSAP   | Ctrl   |
     --------+--------+--------      
         1      1        1
        
     DSAP=SSAP=0xAA   ctrl=0x03
     使用SNAP,必须设置DSAP=SSAP=0xAA         
    
       SNAP:
      -----------+--------
     |  Org Code|  type   |
      -----------+--------
          3          2
      IPX 类型=0x8137 
     
 
 
参考文档:
    1.  Ethernet/IEEE802.3 附件 ethernet.pdf:http://blog.blogchina.com/upload/2005-01-25/200501251721262581.pdf
    2.  A Brief History of Frame Types. 
        http://developer.novell.com/research/appnotes/1993/septembe/05/02.htm