一、Ethernet帧格式的发展

1980 DEC,Intel,Xerox制订了Ethernet I的标准
1982 DEC,Intel,Xerox又制订了Ehternet II的标准
1982 IEEE开始研究Ethernet的国际标准802.3
1983 迫不及待的Novell基于IEEE的802.3的原始版开发了专用的Ethernet帧格式 (因此802.3 Raw 先于 IEEE 802.3 出台)
1985 IEEE推出IEEE 802.3规范

后来为解决EthernetII与802.3帧格式的兼容问题推出折衷的Ethernet SNAP格式

(其中早期的Ethernet
I已经完全被其他帧格式取代了所以现在Ethernet只能见到后面几种Ethernet的帧格式

现在大部分的网络设备都支持这几种Ethernet的帧格式

如:cisco的路由器在设定Ethernet接口时可以指定不同的以太网的帧格式:arpa,sap,snap,novell-ether)

不同厂商对这几种帧格式通常有不同的叫法,比如:

Frame Type                          Novell公司                    Cisco 公司
Ethernet Version 2              Ethernet_II                   arpa
802.3 Raw                            Ethernet_802.3           novell_ether
IEEE 802.3/802.2                Ethernet_802.2           sap
IEEE 802.3/802.2 SNAP    ETHERNET_SNAP     snap

二、各种不同的帧格式

1. Ethernet II
就是DIX以太网联盟推出的,它由6个字节的目的MAC地址,6个字节的源MAC地址,2个字节的类型域(用于标示封装在这个Frame、里面数据的类型)以上为Frame Header,接下来是46--1500 字节的数据,和4字节的帧校验)

2. Novell Ethernet
它的帧头与Ethernet有所不同其中EthernetII帧头中的类型域变成了长度域,后面接着的两个字节为0xFFFF
用于标示这个帧是Novell Ether类型的Frame 由于前面的0xFFFF站掉了两个字节所以数据域缩小为44-1498个字节,帧校验不变。

3. IEEE 802.3/802.2
802.3的Frame Header和Ethernet
II的帧头有所不同EthernetII类型域变成了长度域。其中又引入802.2协议(LLC)在802.3帧头后面添加了一个LLC首部,由DSAP(Destination
Service Access Point)
1 byte,SSAP(Source SAP),一个控制域--1 byte!
SAP用于标示帧的上层协议

4. Ethernet SNAP
SNAP Frame与802.3/802.2 Frame的最大区别是增加了一个5 Bytes的SNAP
ID其中前面3个byte通常与源mac地址的前三个bytes相同为厂商代码!有时也可设为0,后2 bytes 与Ethernet
II的类型域相同。。。

常用的帧格式

MAC帧主要有两种格式,一种是以太网V2标准,一种是IEEE 802.3,常用的是前者。

 

1. Ethernet II帧

DMAC(Destination MAC)是目的MAC地址。DMAC字段长度为6个字节,标识帧的接收者。
    SMAC(Source MAC)是源MAC地址。SMAC字段长度为6个字节,标识帧的发送者。
    Type(类型字段)用于标识数据字段中包含的高层协议,该字段长度为2个字节。类型字段值为 0x0800的帧代表IP协议帧;类型字段值为0806的帧代表ARP协议帧。
    Data(数据字段)是网络层数据,最小长度必须为46字节以保证帧长至少为64字节,数据字段的最大长度为1500字节。
    FCS(循环冗余校验字段)提供了一种错误检测机制。该字段长度为4个字节。

2. 802.3帧

EEE802.3帧格式类似于Ethernet_II帧,只是Ethernet_II帧的Type域被802.3帧的Length域取代,并且占用了Data字段的8个字节作为LLC和SNAP字段。

Length字段定义了Data字段包含的字节数。
    LLC(逻辑链路控制 Logical Link Control)由目的服务访问点DSAP(Destination Service Access Point)、源服务访问点SSAP(Source Service Access Point)和Control字段组成。
    SNAP(Sub-network Access Protocol)由机构代码(Org Code)和类型(Type)字段组成。Org code三个字节都为0。Type字段的含义与Ethernet_II帧中的Type字段相同。

IEEE802.3帧根据DSAP和SSAP字段的取值又可分为以下几类:
    1)  当DSAP和SSAP都取特定值0xff时,802.3帧就变成了Netware-ETHERNET帧,用来承载NetWare类型的数据。
    2)  当DSAP和SSAP都取特定值0xaa时,802.3帧就变成了ETHERNET_SNAP帧。ETHERNET_SNAP帧可以用于传输多 种协议。
    3)  DSAP和SSAP其他的取值均为纯IEEE802.3帧。

802.3帧的长度也是64-1518字节之间

感觉网络层一些协议才用到802.3帧格式,是因为需要802.3帧携带一些控制信息

Ethernet帧格式的更多相关文章

  1. ETHERNET帧结构

    以太网帧http://blog.csdn.net/guoshaobei/article/details/4768514 Ethernet的帧格式 (转)  http://jiangqiaosun.bl ...

  2. TCP/IP协议(1):各层协议帧格式

    一. 1.OSI与TCP/IP对应: TCP/IP各层功能: 链路层:包括操作系统的设备驱动程序和计算机的网卡,提供底层传输服务.   网络层:为数据选择路由,在众多计算机和网络设备组成的网络中选择一 ...

  3. VLAN基础

    VLAN(Virtual Local Area Network)的中文名为"虚拟局域网".是将一个物理的局域网在逻辑上划分成多个广播域,从而实现二层隔离的技术. 一.VLAN的优点 ...

  4. 1.VLAN

    1.定位:VLAN,即虚拟局域网(Virtual Local Area Network),一种将局域网设备从逻辑上划分成一个个网段,从而实现虚拟工作组的新兴数据交换技术.VLAN是将一个物理的LAN在 ...

  5. 一次VLAN标签引发的网络事件的处置

    一次VLAN标签引发的网络事件的处置 一.背景介绍 事件背景: HZ某分公司新装一套业务系统,通过一条专线和BJ总公司连通.分配给HZ公司的ip地址为:a.b.c.X,掩码24位,网关a.b.c.1. ...

  6. HCNA Routing&Switching之二层交换技术VLAN基础

    前文我们主要聊了下交换机的工作原理和以太网接口的速率和双工相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15088183.html:今天我们主要来聊一 ...

  7. Networking - Ethernet II 帧

    Ethernet II 帧格式 DA SA Type Playload FCS DA(Destination Address): 该字段有 6 个字节,表示目的 MAC 地址. SA(Source A ...

  8. Ethernet II和802.3

    在卷一中:(章节二:数据链路层) 在T C P / I P协议族中,链路层主要有三个目的: (1)为IP模块发送和接收IP数据报: (2 )为ARP模块发送ARP请求和接收ARP应答: (3 )为RA ...

  9. TCP/IP协议栈与数据报封装 (802.3 Ethernet 以太网 802.11 WLAN 无线网 )

    http://blog.csdn.net/jnu_simba/article/details/8957242 一.ISO/OSI参考模型 OSI(open system interconnection ...

随机推荐

  1. Leetcode 617.合并二叉树

    合并二叉树 给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠. 你需要将他们合并为一个新的二叉树.合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新 ...

  2. [python][django学习篇][15]博客侧栏--自定义模板标签

    我们的博客侧边栏有四项内容:最新文章.归档.分类和标签云. 这些内容相对比较固定,且在各个页面都会显示,如果像文章列表或者文章详情一样,从视图函数中获取然后传递给模板,则每个页面对应的视图函数里都要写 ...

  3. csapp读书笔记-并发编程

    这是基础,理解不能有偏差 如果线程/进程的逻辑控制流在时间上重叠,那么就是并发的.我们可以将并发看成是一种os内核用来运行多个应用程序的实例,但是并发不仅在内核,在应用程序中的角色也很重要. 在应用级 ...

  4. input框的限制(仅数字以及电话号码的限制)

    电话号码限制 <input  type="text"  id="phone" maxlength="11" onkeyup=" ...

  5. include和require的区别误区

    面试时总会被问到include和require的区别,回答的时候一般也是有以下几种区别: 1.include引入文件的时候,如果碰到错误,会给出警告,并继续运行下边的代码. require引入文件的时 ...

  6. 【转】 Linux中记录终端输出到txt文本文件

    转载: http://blog.csdn.net/tengh/article/details/41823883 一,把命令运行的结果保存到文件当中:用 > 把输出转向就可以了 例子: $ ls ...

  7. bugs view:

    Expecially those business bugs! I should check better especially when data changes! This place requi ...

  8. split一些分开一些特殊字符

    查看 api ,你就会发现 String.split(String regex); 也就是说里面的参数是正则表达式.如果是一些普通的字符,它就会当做普通字符给拆分字符串.可是 ?是特殊字符,想让按照 ...

  9. 转:C#制作ORM映射学习笔记三 ORM映射实现

    现在开始实现ORM的主体模块,首先需要在项目中新建一个类,命名为DbAccess,然后在项目的引用中添加两个dll,分别是MySql.Data.dll和System.Data.SQLite.dll,这 ...

  10. java使用DBCP连接池创建工具类

    1.说明 java中有个扩展包 javax下面有个DataResource的接口  javax.sql.DataResource 该接口定义了连接池的方法规范 而DBCP框架有apache公司开发,他 ...