热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

802.3和以太网帧结构路由交换原理1【HCNA笔记】

1、RAW802.3帧格式前导字段:每个帧以7个字节的前导字段开头,以0、1间隔代码组成,用以通知目标端作好接收准备(1010101010101010101010101010101

1、RAW 802.3帧格式

前导字段 帧起始符 DMAC SMAC
Length
Data FCS
7字节 1字节 6字节 6字节 2字节 46-1500字节 4字节

前导字段:每个帧以7个字节的前导字段开头,以0、1间隔代码组成,用以通知目标端作好接收准备(10101010 10101010 10101010 10101010 10101010 10101010 10101010)。

帧起始符:紧跟前导字段,值为10101011,最后两位‘11’表示帧的实际开始。前导字段与起始符由物理设备自动加上用以同步两台通讯的设备,所以对端接收到的数据并不包含这两个字段,故帧长计算与帧校验也不包含这两个字段。

DMAC:目标MAC地址。

SMAC:源MAC地址。

Length:数据字段的长度,记录其后一字段Data的实际长度。

Data:数据字段,存放帧数据。在802.3中规定了一个帧的最小长度为64字节,帧长计算方法如下:

                    帧长= DMAC + SMAC + Length + Data + FCS

      其中DMAC、SMAC、Length、FCS的和为18字节,所以Data字段的最小长度为64-18=46字节。

      若帧长确实小于64字节,则发送端会自动在Data字段中填充0直到帧长等于64字节为止。

FCS:帧校验序列,接收端用以判断传输过程中是否有误,若发现错误则丢弃此帧。


2、EthernetII帧格式

前导字段 DMAC SMAC
Type Data FCS
8字节
6字节 6字节 2字节 46-1500字节 4字节

    EthernetII与802.3帧格式相近,区别在于EthernetII没有帧起始符,而前导字段占据了8个字节,作用与802.3中前导字段+帧起始符功能一致,都是实现两台设备的通讯同步。

    另一个区别在于802.3的Length字段由Type字段代替,用以表明该帧的协议类型。这是因为EthernetII帧支持多种协议类型,而RAW 802.3帧仅支持一种。


3、802.3与EthernetII的异同

    为方便802.3与EthernetII两种帧格式可以同时在网络中使用,人们规定802.3和EthernetII中Data字段的最大长度必须小于1500字节,也就是说802.3中Length字段的值必定是小于1500的。同时又规定了EthernetII中协议类型从数字1536(0x0600)开始分配,这样只要Type或Length字段的值小于1536那就说明这是一个802.3帧,值大于1536则证明其是一个EthernetII帧。

    在使用中EthernetII较802.3更适合传输大量的数据,而802.3的优势在于其具备严格的传输控制。所以大多数应用的以太网数据包使用EthernetII的帧格式(如HTTP、FTP、SMTP、POP3等),而交换机之间的BPDU数据包、思科的发现协议则是使用802.3的帧格式


4、以太网帧格式的发展

Ethernet V1(1980):这是最原始的一种格式,是由Xerox提出的3Mbps以太网标准的封装格式,后来在1980年由DEC、Intel和Xerox标准化形成Ethernet V1标准。

Ethernet V2(1982):也就是我们说的EthernetII,由DEC、Intel和Xerox在1982年公布的标准,主要更改了V1的电气特性和物理接口,帧格式并无变化。V2出现后取代V1成为沿用至今的以太网帧标准格式。

EthernetII帧格式
前导字段 DMAC SMAC
Type Data FCS
8字节
6字节 6字节 2字节 46-1500字节 4字节

RAW 802.3(Novell, 1983):1983年Novell发布其Netware/86网络套件时使用了此以太网帧格式,该格式借鉴了还未发布的IEEE802.3标准将Ethernet V2中的Type字段改为Length字段,因当时使用的RAW 802.3帧只需要支持IPX/SPX这一类协议。而两年后正式发布的IEEE802.3加入了LLC头,导致Novell使用的标准与IEEE正式标准互不兼容。为了与新推出的IEEE标准兼容,规定了RAW 802.3的Data字段前两个字节为RAW字段且值为0xFFFF用以区分RAW和后面发布的LLC标准。

802.3 RAW帧格式
前导字段 帧起始符 DMAC SMAC
Length
Data(46-1500)
FCS
7字节 1字节 6字节 6字节 2字节 RAW(0xFFFF) data 4字节

IEEE802.3 LLC(1985):这是IEEE正式的802.3标准,由Ethernet V2发展而来,它将Ethernet V2的Type字段替换为Length字段,同时将Data字段中的前3个字节命名为LLC头用以标识上层协议类型。LLC中包含了DSAP、SSAP、Control三个字段,每个字段的长度都为1字节。DSAP是目标端的协议类型,SSAP是源端协议类型。

802.3 LLC帧格式
前导字段 帧起始符 DMAC SMAC
Length
Data(46-1500)
FCS
7字节 1字节 6字节 6字节 2字节 LLC(DSAP/SSAP/Control) data 4字节

IEEE802.3 SNAP(1985):为了使802.3支持除LLC之外更多的上层协议类型并更好地支持IP协议而发布的标准,在加入了LLC头的基础上,将Data字段中LLC头之后的5个字节划分为SNAP头,其中包含了一个3字节的OUI字段用于代表不同的组织(通常等于MAC地址中网络适配器厂商的代码)和一个2字节的Type字段用以支持更多的上层协议类型。为了与LLC帧相区别,SNAP将LLC头的值固化,DSAP、SSAP的值固定为0xAA,Control的值固定为0x03(即Data字段前3个字节值为0xAAAA03则说明其是一个SNAP帧)。

802.3 SNAP帧格式
前导字段 帧起始符 DMAC SMAC
Length
Data(46-1500)
FCS
7字节 1字节 6字节 6字节 2字节 LLC(0xAAAA03) SNAP(OUI/Type) data 4字节


5、不同帧格式的区分

EthernetII与802.3:如果帧中Length或Type字段的值小于1536说明这是一个EthernetII帧,反之则是一个802.3的帧。

RAW、LLC、SNAP:如果Data字段前两个字节为0xFFFF则说明这是一个802.3(RAW)帧;如果Data字段中前三个字节为0xAAAA03则说明这是一个802.3(SNAP)帧;剩余的则是802.3(LLC)帧。


【上层协议类型的标识】802.3多达3种标准的原因就是他们使用了不同的上层协议类型标识方法,那么什么是上层协议类型的标识呢。

    IEEE将网络划分为OSI 7层模型,其中第一层为物理层,第二层为数据链路层,第三层为网络层,数据链路层又被细分为LLC层和MAC层。我们知道MAC层是用于物理寻址的,在数据帧上体现为DMAC和SMAC两个字段,分别记录了目标MAC地址和源MAC地址,网卡凭借这两个字段就能知道数据包是从那台设备来的目的地是那台设备。帧到达后应交由谁处理呢?在设备中不同的协议是交由不同进程处理的,LLC层的作用就是指明了该进程的协议类型,也就是EthernetII的Type字段(在IP报文中将进一步指定具体协议,定位数据的接收进程)。在RAW 802.3中只需要支持IPX/SPX这一类协议所以没有Type字段,802.3 LLC中使用LLC头中的DSAP和SSAP标识目标端的协议类型和源端协议类型,802.3 SNAP使用SNAP头中的Type字段标识协议类型与EthernetII类似。


【帧校验】数据帧在网络中传输时难免会出现数据丢失或位错误等情况,网卡在接收到帧后是如何判断这个数据帧在传输的过程中没有发生意外呢。

    这里不讲真实的校验方法(太复杂),只讲一个简单的例子。例如一组二进制数0111 1101 1001 0011从一个设备传输到另一个设备,接收设备并不能预防传输过程中错误的发生,只能对这组数据进行验证,如果不符合某种规则就判定为错误则将这个帧丢掉。校验规则由协议规定,不同的帧协议可能使用不同的校验规则,而FCS字段中则保存着这个规则执行的结果。比如发送端可以将二进制数每8位进行两两相加:0111 1101 + 1001 0011 = 0001 0001 0000;取其中后八位0001 0000,并将后八位存入FCS字段中。接收端收到帧后重复发送端的校验规则,并将计算结果与FCS字段中保存的结果进行比对,如果一致则表明传输过程无误,反之表明此帧无法使用。


【802.3名称由来】我们可以理解EthernetII是以太网协议的V2版本,可为啥802.3要叫802.3呢。

    以太网出现后,先是由DEC、Intel和Xerox对该网络进行了标准化制定了Ethernet V1协议,其中规定了实现以太网的物理层连线、电信号和介质等等内容,帧格式的定义只是其中的一部分。而后很快又推出了Ethernet V2,也就是现在最常用的EthernetII协议。两年后,由于以太网的发展成熟,IEEE协会在EthernetII的基础上对以太网进行了更加详细的规定,也就是IEEE802.3协议。IEEE协会由多个不同专业的协会和委员会组成,如IEEE航空和电子系统协会、IEEE通讯协会、IEEE生物测定学委员会等等,其中制定802.3协议的委员会叫做IEEE局域网/城域网标准委员会,成立的时间是1980年2月所以又称802委员会,该协会发布的这一系列标准名称均是以IEEE 802开头的,802后的.3则表明这是一系列标准的第三号。下面感受一下这个系列的标准中的一部分名称:

    IEEE 802.1 :局域网体系结构、寻址、网络互联和网络 

    IEEE 802.1A:概述和系统结构 

    IEEE 802.1B:网络管理和网络互连 

    IEEE 802.2 :逻辑链路控制子层(LLC)的定义。 

    IEEE 802.3 : 以太网介质访问控制协议 ( CSMA/CD)及物理层技术规范。 

    IEEE 802.4 :令牌总线网(Token-Bus)的介质访问控制协议及物理层技术规范。 

    IEEE 802.5 : 令牌环网(Token-Ring)的介质访问控制协议及物理层技术规范。 


【以太网名称由来】在早些年的时候,科学家认为这个世界是由一种看不见摸不着的介质“以太”所充斥的,而后以太的存在被证伪了,那么以太网跟以太是否有什么关联呢。

    有网上的段子说当年以太网之父Metcalfe在自己的博士论文中就是研究APRA网的,可他的论文答辩没过,被认为是缺乏理论支持,但是他的技术得到了很多厂商的看好,后来Metcalfe想到自己当年的论文没过就很不爽,于是就把自己设计的局域网技术称为以太网,调侃这是一种看不见,摸不着的技术。以上段子说明以太网就是局域网,是发明者自己瞎取的,没啥特别含义。

802.3和以太网帧结构-路由交换原理1-【HCNA笔记】


推荐阅读
  • 阿里云 Aliplayer高级功能介绍(八):安全播放
    如何保障视频内容的安全,不被盗链、非法下载和传播,阿里云视频点播已经有一套完善的机 ... [详细]
  • 本文介绍了一种使用CSS3和jQuery实现的35款SVG图标加载动画。这些动画不仅视觉效果出色,还能提升用户体验。通过本文,您可以了解如何在项目中应用这些动画。 ... [详细]
  • 本文介绍了如何使用Postman构建和发送HTTP请求,包括四个主要部分:方法(Method)、URL、头部(Headers)和主体(Body)。特别强调了Body部分的重要性,并详细说明了不同类型的请求体。 ... [详细]
  • 第七卷《英才》强调,即使有良药,若不对症,效果也不如低等药物;即使有贤才,若不适用,效果也不如普通人。文中通过多个比喻,阐述了人才使用的重要性,指出合适的人才在适当的时间和场合才能发挥最大效用。 ... [详细]
  • 本文介绍了多种开源数据库及其核心数据结构和算法,包括MySQL的B+树、MVCC和WAL,MongoDB的tokuDB和cola,boltDB的追加仅树和mmap,levelDB的LSM树,以及内存缓存中的一致性哈希。 ... [详细]
  • JavaSE For循环入门示例
    本文将介绍Java中For循环的基本概念和使用方法,通过几个简单的示例帮助初学者更好地理解和掌握For循环。 ... [详细]
  • SvpplyTable: 实现可扩展和可折叠的菜单动画
    SvpplyTable 是一个示例项目,旨在实现类似 Svpply 应用程序中的可扩展和可折叠的菜单动画效果。该项目托管在 GitHub 上,地址为 https://github.com/liuminqian/SvpplyTable。 ... [详细]
  • 本文介绍了如何在 Qt 应用程序中实现状态栏、浮动窗口(铆接部件)和中心部件。通过简单的代码示例,详细解释了每个组件的创建和设置方法。 ... [详细]
  • A*算法在AI路径规划中的应用
    路径规划算法用于在地图上找到从起点到终点的最佳路径,特别是在存在障碍物的情况下。A*算法是一种高效且广泛使用的路径规划算法,适用于静态和动态环境。 ... [详细]
  • NX二次开发:UFUN点收集器UF_UI_select_point_collection详解
    本文介绍了如何在NX中使用UFUN库进行点收集器的二次开发,包括必要的头文件包含、初始化和选择点集合的具体实现。 ... [详细]
  • 解决SQL Server数据库sa登录名无法连接的问题
    在安装SQL Server数据库后,使用Windows身份验证成功,但使用SQL Server身份验证时遇到问题。本文将介绍如何通过设置sa登录名的密码、启用登录名状态以及开启TCP协议来解决这一问题。 ... [详细]
  • MySQL 数据库连接方法
    本文介绍了如何使用 MySQL 命令行工具连接到指定的数据库。 ... [详细]
  • 如何解决8080端口被占用问题
    本文介绍了如何通过命令行和任务管理器查找并终止占用8080端口的进程,以确保该端口能够正常使用。 ... [详细]
  • Excel 数据分析基础
    Excel 是数据分析中最基本且强大的工具之一,具备多种实用功能和操作方法。本文将简要介绍 Excel 的不同版本及其兼容性问题,并探讨在处理大数据时的替代方案。 ... [详细]
  • 本文介绍了如何在 ASP.NET 中设置 Excel 单元格格式为文本,获取多个单元格区域并作为表头,以及进行单元格合并、赋值、格式设置等操作。 ... [详细]
author-avatar
互相体谅知足常乐
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有