zoukankan      html  css  js  c++  java
  • Ethernet、VLAN、QinQ

    以太网帧格式:

    各字段解释:

    DMAC:目的MAC地址,该字段确定帧的接收者。

    SMAC:源MAC地址,该字段标识发送帧的工作站。

    Type:上层协议类型(0x0800:IP;0x0808:ARP;0x8100:VLAN;)

    Data:数据字段的最小长度必须为46字节以保证帧长至少为64字节,这意味着传输一字节信息也必须使用46字节的数据字段。如果填入该字段的信息少于46字节,该字段的其余部分也必须进行填充。数据字段的最大长度为1500字节。

    CRC:用于帧内后续字节差错的循环冗余检验(也称为FCS或帧检验序列)。


    VLAN帧格式:

    各字段解释:

    Destination address:目的MAC地址。

    Source address:源MAC地址。

    Type:表示帧类型。取值为0x8100时表示802.1Q Tag帧。如果不支持802.1Q的设备收到这样的帧,会将其丢弃。

    PRI:表示帧的优先级,取值范围为0~7,值越大优先级越高。用于当阻塞时,优先发送优先级高的数据包。如果设置用户优先级,但是没有VLANID,则VLANID必须设置为0x000。

    CFI:用于区分以太网帧、FDDI帧和令牌环网帧。在以太网中,CFI的值为0。

    VID:表示该帧所属的VLAN。

    Length/Type:指后续数据的字节长度,但不包括CRC检验码。

    Data:数据。

    CRC:帧检验序列。

    帧示例


    深入理解:

    1、data数据为什么是46~1500个字节?

    以太网帧的最小长度64byte是由CSMA/CD限制所致

    通过比较,选择1518(6+6+2+1500+4)个字节的帧长度,有效传输效率最高。

    2、CRC如何校验帧?

    在要发送的帧后面附加一个校验码,生成一个新帧发送给接收端。(当然,这个附加的校验码不是随意的,它要使所生成的新帧能与发送端和接收端共同选定的某个特定数整除。)到达接收端后,再把接收到的新帧除以(同样采用“2除法”)这个选定的除数。(因为在发送端发送数据帧之前就已通过附加一个数,做了“去余”处理(也就已经能整除了)),所以结果应该是没有余数。如果有余数,则表明该帧在传输过程中出现了差错。

    ps:

    2除法:二进制下的除法,异或,即相同为0,不相同为1。

    CSMA/CD带冲突检测的载波监听访问,其工作原理简单总结为:先听后发,边发边听,冲突停发,随机延迟后重发。


    QinQ帧格式:

    重要字段解释:

    ETYPE:长度为2字节,表示帧类型。取值为0x8100时表示802.1Q Tag帧。如果不支持802.1Q的设备收到这样的帧,会将其丢弃。

    对于内层VLAN tag,该值设置为0x8100;对于外层VLAN tag,有下列几种类型

    • 0x8100:思科、华为路由器使用
    • 0x88A8:Extreme Networks switches使用
    • 0x9100:Juniper路由器使用
    • 0x9200:Several路由器使用

    帧示例

  • 相关阅读:
    netstat
    Android总结篇——Intent机制详解及示例总结
    Android系统介绍与框架
    三个绘图工具类详解
    Android 调用 WebService
    Android JSON数据解析
    Android 总结:ContentProvider 的使用
    Android Service完全解析,关于服务你所需知道的一切(下)
    Android Service完全解析,关于服务你所需知道的一切(上)
    Activity的四种加载模式详解:
  • 原文地址:https://www.cnblogs.com/tcheng/p/7994816.html
Copyright © 2011-2022 走看看