zoukankan      html  css  js  c++  java
  • Ethernet帧格式

    一、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帧携带一些控制信息

  • 相关阅读:
    Scala中使用fastJson 解析json字符串
    SparkStreaming直连方式读取kafka数据,使用MySQL保存偏移量
    Spark 将DataFrame所有的列类型改为double
    Idea里面远程提交spark任务到yarn集群
    Spark-读写HBase,SparkStreaming操作,Spark的HBase相关操作
    scala之map,List,:: , +:, :+, :::, +++操作
    kafka auto.offset.reset参数解析
    spark-submit提交spark任务的具体参数配置说明
    docker plugin test
    docker ui
  • 原文地址:https://www.cnblogs.com/code1992/p/10370569.html
Copyright © 2011-2022 走看看