以太网帧http://blog.csdn.net/guoshaobei/article/details/4768514

Ethernet的帧格式 (转)  http://jiangqiaosun.blog.163.com/blog/static/260981820101022114138277/

数据链路层 http://rabbit.xttc.edu.cn/rabbit/htm/artical/2010831172946.shtml

Ethernet Frame http://www.infocellar.com/networks/ethernet/frame.htm (这是以上四篇中,写的最精炼的文章)

1. 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)

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

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

3. Ethernet V2帧与IEEE 802.3帧的比较

因为这两种帧是我们在现在的局域网里最常见的两种帧,因此,我们对它们进行一些比较。

Ethernet V2可以装载的最大数据长度是1500字节,而IEEE 802.3可以装载的最大数据是1492字节(SNAP)或是1497字节; Ethernet V2不提供MAC层的数据填充功能,而IEEE 802.3不仅提供该功能,还具备服务访问点(SAP)和SNAP层,能够提供更有效的数据链路层控制和更好的传输保证。那么我们可以得出这样的结 论:Ethernet V2比IEEE802.3更适合于传输大量的数据,但Ethernet V2缺乏数据链路层的控制,不利于传输需要严格传输控制的数据,这也正是IEEE802.3的优势所在,越需要严格传输控制的应用,越需要用 IEEE802.3或SNAP来封装,但IEEE802.3也不可避免的带来数据装载量的损失,因此该格式的封装往往用在较少数据量承载但又需要严格控制 传输的应用中。

在实际应用中,我们会发现,大多数应用的以太网数据包是Ethernet V2的帧(如HTTP、FTP、SMTP、POP3等应用),而交换机之间的BPDU(桥协议数据单元)数据包则是IEEE802.3的帧,VLAN Trunk协议如802.1Q和Cisco的CDP(思科发现协议)等则是采用IEEE802.3 SNAP的帧。大家有兴趣的话,可以利用Sniffer等协议分析工具去捕捉数据包,然后解码查看是不是这样的。

4. 如何区分不同的帧格式

Ethernet中存在这四种Frame那些网络设备又是如何识别的呢? 如何区分EthernetII与其他三种格式的Frame.

  Ethernet II (DIX),  IEEE 802.3 (LLC), and SNAP Frames

如果帧头跟随source mac地址的2 bytes的值大于1500,则此Frame为EthernetII格式的; [source  dest  xx_2bytes>1500 ]
接着比较之后紧接着的两bytes如果为0xFFFF则为Ethernet_802.3类型的Frame; [source  dest  xx_2bytes yy_2bytes=0xffff  ]
如果为0xAAAA则为ETHERNET_SNAP格式的Frame; [source  dest  xx_2bytes yy_2bytes=0xaaaa ]
如果都不是则为Ethernet_802.2格式的帧. [source  dest  xx_2bytes yy_2bytes=others]

5. 几种以太网帧结构图解

5.1 Ethernet II  (Ethernet Version 2,  Ethernet_II,  arpa)

Ethernet II类型以太网帧的最小长度为64字节(6+6+2+46+4),最大长度为1518字节(6+6+2+1500+4)。

(1)  前12字节分别标识出发送数据帧的源节点MAC地址和接收数据帧的目标节点MAC地址。

(2)  接下来的2个字节标识出以太网帧所携带的上层数据类型,类型字段的最小值是0x0600[大于1500, 根据这一点可以区分Ethernet IIEthernet_802.3].

0x0800   IP协议数据,

0x86dd   IPv6协议数据,

0x809B   AppleTalk协议数据,

0x8138   Novell类型协议数据等。

0x0806   ARP

0x0600   XNS (Xerox)

0x6003   DECNET

(3)  在不定长的数据字段后是4个字节的帧校验序列(Frame. Check Sequence,FCS),采用32位CRC循环冗余校验对从"目标MAC地址"字段到"数据"字段的数据进行校验。

 
以太网最小发送帧长为64字节,按照标准,10Mbps以太网采用中继器时,连接的最大长度是2500米,最多经过4个中继器,因此规定对10Mbps以太网一帧的最小发送时间为51.2微秒。这段时间所能传输的数据为512位,因此也称该时间为512位时。这个时间定义为以太网时隙,或冲突时槽。512 位=64字节,这就是以太网帧最小64字节的原因。现在基本上都是交换机或路由器直接连接计算机,集线器连接很少存在了,在交换机或路由器直接连接计算机时每个计算机与设备之间都是一个独立的冲突域,是不会产生冲突的,因此,此时发送长度小于64字节的帧理论上是可以的,但为了遵循原有标准,考虑到有些集线器设备依旧在使用,因此保持最小帧长64字节不变。
 
 
5.2 Ethernet_802.3  (802.3 Raw ,  Ethernet_802.3,  novell_ether)

目标地址:此数据包的目标MAC地址。
源地址:此数据包的源MAC地址。
长度:帧包含的数量必须或等于1500。(在Ethernet 802.3 raw类型以太网帧中,原来Ethernet II类型以太网帧中的类型字段被"总长度"字段所取代,它指明其后数据域的长度,其取值范围为:46-1500。)
数据:高层协议(IPX/SPX)、数据和填充符,范围在46~1500字节。(长度紧跟着的接下来的2个字节是固定不变的16进制数0xFFFF,它标识此帧为Novell以太类型数据帧。)

   FCS:数据帧校验序列,用于确定数据包在传输过程中是否损坏

5.3 Ethernet_802.2 (IEEE 802.3/802.2, Ethernet_802.2, sap)

Ethernet 802.2协议是IEEE正式的802.3标准,它由Ethernet II发展而来。

Ethernet 802.2将Ethernet II帧头的协议类型字段替换为帧长度字段和LLC-802.2头(用以标记上层协议)。LLC头包含目的服务访问点(DSAP)、源服务访问点 (SSAP)和控制(Control)字段。

目标地址:此数据包的目标mac地址;
源地址:此数据包的源mac地址;
长度:帧包含的数据量必须小于或等于1500(16进制的05DC);
DSAP:目标服务存取点(Destination  Service Access Point);
SSAP:源服务存取点(Source Service Access  Point);

常见SAP值:
0:Null LSAP[IEEE] 
4:SNA Path Control[IEEE] 
6:DOD IP[79,JBP] 
AA:SNAP[IEEE] 
FE:ISO DIS 8473[52,JXJ] 
FF:Global DSAP[IEEE]

控制:无连接或面向连接的C;
数据:高层协议、数据和填充符;
FCS:数据帧校验序列,用于确定数据包在传输过程中是否损坏。

5.4 ETHERNET_SNAP (IEEE 802.3/802.2 SNAP, ETHERNET_SNAP,    snap)

目标地址:.
源地址:.
长度:帧包含的数据量必须小于或等于1500(16进制的05DC);
DSAP:目标服务存取点(Destination  Service Access Point) = 0xAA;
SSAP:源服务存取点(Source Service Access  Point)= 0xAA;
控制:无连接或面向连接的C;
厂商代码:.
协议类型: 封装在 IEEE 802 网络中的协议.

IP    =  0x0800
ARP =  0x0806

数据:高层协议、数据和填充符;
FCS:数据帧校验序列,用于确定数据包在传输过程中是否损坏。

========================

洗脑图:

SNAP(Sub Network Access Prototol)

ETHERNET帧结构的更多相关文章

  1. Java虚拟机运行时栈帧结构--《深入理解Java虚拟机》学习笔记及个人理解(二)

    Java虚拟机运行时栈帧结构(周志明书上P237页) 栈帧是什么? 栈帧是一种数据结构,用于虚拟机进行方法的调用和执行. 栈帧是虚拟机栈的栈元素,也就是入栈和出栈的一个单元. 2018.1.2更新(在 ...

  2. CAN总线学习记录之二:系统结构与帧结构

    CAN总线系统结构 CAN 控制器  接收控制单元中微处理器发出的数据,处理数据并传给 CAN 收发器 CAN 收发器 将数据传到总线 or 从总线接收数据给 CAN 控制器 CAN 数据传递终端 避 ...

  3. CAN协议,系统结构和帧结构

    CAN:Controller Area Network,控制器局域网 是一种能有效支持分布式控制和实时控制的串行通讯网络. CAN-bus: Controller Area Network-bus,控 ...

  4. H.264帧结构详解

    6.1.2.源码简单浏览 6.1.3.重点1:h.264帧结构6.1.4.重点2:帧结构分析软件的使用6.1.5.重点3:rtsp网络编程6.1.6.重点4:wireshark网络抓包工具的使用 6. ...

  5. 深入理解java虚拟机(十) Java 虚拟机运行时栈帧结构

    运行时栈帧结构 栈帧(Stack Frame) 是用于虚拟机执行时方法调用和方法执行时的数据结构,它是虚拟栈数据区的组成元素.每一个方法从调用到方法返回都对应着一个栈帧入栈出栈的过程. 每一个栈帧在编 ...

  6. C语言函数调用及栈帧结构

    source:http://blog.csdn.net/qq_29403077/article/details/53205010 一.地址空间与物理内存 (1)地址空间与物理内存是两个完全不同的概念, ...

  7. 5G/NR 帧结构

    原文链接:http://www.sharetechnote.com/html/5G/5G_FrameStructure.html 在学术界和3GPP中对帧结构进行了长时间的讨论,现在我们就NR(5G) ...

  8. 分析Ethernet标准和Ieee802.3标准规定的MAC层帧结构

    分析所用软件下载:Wireshark-win32-1.10.2.exe 阅读导览 1. 学习Wireshark的安装与使用 2. 熟悉Wireshark的操作界面与功能 3. 设计应用以获取以太网链路 ...

  9. 图解JVM字节码执行引擎之栈帧结构

    一.执行引擎      “虚拟机”的概念是相对于“物理机”而言的,这两种“机器”都有执行代码的能力.物理机的执行引擎是直接建立在硬件处理器.物理寄存器.指令集和操作系统层面的:而“虚拟机”的执行引擎是 ...

随机推荐

  1. A Byte of Python 笔记(12)python 标准库:sys、os,更多内容

    第14章 python 标准库 Python标准库是随Python附带安装的,它包含大量极其有用的模块. sys 模块 sys 模块包含系统对应的功能.如 sys.argv 列表包含命令行参数. # ...

  2. JVM典型配置

    堆大小设置: JVM中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制:系统的可用虚拟内存限制:系统的可用物理内存 限制.32位系统下,一般限制在1.5G~2G:64为 ...

  3. IMP-00008: unrecognized statement in the export file: string的问题分析

    分类: Linux 上周需要将oracle10g中的某一个用户下的对象导入到oracle11g中去.用exp在10g的数据库服务器上导出的dump文件,再用imp在11g的数据库服务器上将dump文件 ...

  4. Maven本地

    <localRepository></localRepository>

  5. 干I​n​l​a​y​的​生​产​过​程​

    •天线的组成 天线的材料有0.38PET和0.16以及0.3的铝箔组成. 倒封装 •将IC倒装在天线焊盘位置. •方法:先点胶水, 然后把IC对准焊盘(IC一面有凸点),通过热压把IC 固定在焊盘上. ...

  6. JAVA 创建TXT文件,写入文件内容,读取文件内容

    [java]  view plain copy   package com.abin.facade.ws.mail.function; import java.io.BufferedReader; i ...

  7. Roman Roulette(约瑟夫环模拟)

    Roman Roulette Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)To ...

  8. android TDD平台插入双卡时,查看允许返回发送报告的选项,去掉勾选,不起作用

    请在MultiSimPreferenceActivity.java 下修改 修改1: 函数 isChecked()     private boolean isChecked(String prefe ...

  9. c 输入两个数,第一个数决定一个nXn的矩阵,第二个数决定从1开始赋值,赋值的上限 (MD花了半天时间,思路不对害死人)

    输入两个数,第一个数决定一个nXn的矩阵,第二个数决定从1开始赋值,赋值的上限 比如: 输入: 输出: 输入: 输出: #include<stdio.h> int main(void) { ...

  10. Ubuntu 15.04 设置thin1.6.4作为Rails4.2.5的默认服务器

    0. gem install thin //安装1.6.4 1. 进入到Raisl项目的根目录. 2. 在Gemfile中加入一行 gem 'thin' 3. 运行 bundle install 4. ...