精华内容
下载资源
问答
  • HDLC帧格式

    千次阅读 2020-06-18 14:36:41
    DLMS通信链路帧基本采用HDLC帧格式,HDLC除几个特殊域,其他域均为16进制数据,这章我主要分享什么是HDLC帧格式 如图一则为基本的HDLC帧格式: 图一 接下来的每个帧的解释我将按照一次标准报文应答进行解释HDLC...

    DLMS通信链路帧基本采用HDLC帧格式,HDLC除几个特殊域,其他域均为16进制数据,这章我主要分享什么是HDLC帧格式

    如图一则为基本的HDLC帧格式:

    图一

    接下来的每个帧的解释我将按照一次标准报文应答进行解释HDLC帧格式,报文如下

    客户端:7E A0 46 48 68 FE FF 75 10 05 C1 E6 E6 00 60 35 A1 09 06 07 60 85 74 05 08 01 01 8A 02 07 80 8B 07 60 85 74 05 08 02 01 AC 0A 80 08 41 42 43 44 45 46 47 48 BE 10 04 0E 01 00 00 00 06 5F 04 00 00 00 14 00 00 BD BF 7E

    一,标志帧

            即为标志头,不同的网络协议标志头不同,此处报文头为7E。一次数据传输,假如是单帧,则一次请求的请求头和请求尾都为7E(此处7E标志着结束)。假如是多帧数据传输7E为第一帧请求头,也标志着下一帧的开始。此处需要注意的是多帧传输的等待时间一般由服务端设定,且多帧传输不能超过此等待时间。

    二,帧格式域

            帧格式域一般为两个字节,如文章头部报文即 A0 46 为帧格式域,它由三个子域组成:Frame_type子域(4 bit),分段位(S, 1 bit)和帧长度子域(11 bit),如下图二

    图二

    客户端:7E A0 46 48 68 FE FF 75 10 05 C1 E6 E6 00 60 35 A1 09 06 07 60 85 74 05 08 01 01 8A 02 07 80 8B 07 60 85 74 05 08 02 01 AC 0A 80 08 41 42 43 44 45 46 47 48 BE 10 04 0E 01 00 00 00 06 5F 04 00 00 00 14 00 00 BD BF 7E

          看着好像A0 46与图二没有关系,其实在此处需要把 A0 46分别转化为二进制然后拼接,并且不足8位二进制数据需要补0,如A0转为二进制即为10100000,46转为1000110,此时1000110为7位,我们需要把它转化为8位补0,可以得到01000110,此处拼接起来可得到1010000001000110,此时二进制数据即可和图二关系对应。

           格式类型子域(Frame_type)的值为1010(二进制)。

           分段位S表示是否有后续帧,如果服务端给客户端传送的数据能在一帧内传送完,那么S=0,如果有后续帧那么S=1,此处S=0。

           长度子域的值是除两个7E标志之外的8位位组数。在一般情况下,帧长度不会超过256,因此帧格式域第一个字节为 A0或者A8 ,第二个字节表示该帧的长度

    三,地址域

            这个帧有两个地址域:一个目的HDLC地址和一个源HDLC地址。根据数据的传输方向,客户机端地址和服务器地址都可以是目标地址或源地址。客户机端地址总是用一个字节表示。扩展地址的使用把客户机地址的范围限制在128。

            在服务器端,为了能在一个物理设备内寻址一个以上的逻辑装置并且支持多站配置,可以将HDLC地址分为两部分。 一部分称为“高端HDLC地址”用于逻辑设备(一个物理设备内可独立寻址的实体)寻址,而第二部分——“低端HDCL地址”将用于物理设备(多站配置的一个物理设备)寻址。高端HDLC地址总是存在,而低端HDCL地址在不需要时可不用。  

            HDLC地址扩展机制应用于以上两种地址域。这种地址扩展说明可变长度的地址域,但是考虑到该协议,一个完整的HDLC地址域的长度被限制为一字节,两字节或四字节如下图三:

         · 一字节:只有高端HDLC地址存在。

         · 两字节:一字节高端HDLC地址和一字节低端HDLC地址。

        · 四字节:两字节高端HDLC地址和两字节低端HDLC地址。

    图三

         看着好像有点麻烦,我们继续按照文章顶部报文进行解释地址域的解析方法,首先这条报文是客户端发给服务端的报文,目的地址为服务端(1到4个字节),源地址为客户端(固定为一个字节),然后我们之前的包括标志域,格式域已经解析完7E A0 46,地址域(目的地址)我们从48开始解析,首先将48转为二进制数据01001000(实际结果应该是1001000,我们要对对所有的16进制转二进制数据进行8位补0),此时01001000的第八位即是LSB位,此位为0表示地址域未结束,1表示结束,我们继续解析下一字节68,转为二进制01101000,继续解析FE转为二进制11111110,继续解析FF转为二进制11111111,此时可以看到第八位为1表示目的地址结束,继续解析(源地址)75转化为二进制位01110101。到此处,所有的地址域(目的地址和源地址)解析结束。可参考图四学习。

    客户端:7E A0 46 48 68 FE FF 75 10 05 C1 E6 E6 00 60 35 A1 09 06 07 60 85 74 05 08 01 01 8A 02 07 80 8B 07 60 85 74 05 08 02 01 AC 0A 80 08 41 42 43 44 45 46 47 48 BE 10 04 0E 01 00 00 00 06 5F 04 00 00 00 14 00 00 BD BF 7E 

     

    图四

    四,控制帧格式

            控制帧为一个字节,此处可以得到10为控制帧字节。

    客户端:7E A0 46 48 68 FE FF 75 10 05 C1 E6 E6 00 60 35 A1 09 06 07 60 85 74 05 08 01 01 8A 02 07 80 8B 07 60 85 74 05 08 02 01 AC 0A 80 08 41 42 43 44 45 46 47 48 BE 10 04 0E 01 00 00 00 06 5F 04 00 00 00 14 00 00 BD BF 7E 

    命令/应答帧控制字段的编码方式为模式8,如ISO/IEC 13239的5.5及图五规定。

    图五

    将10转为二进制00010000,即可对应上图

    这里RRR是接收序列号N(R),SSS是发送序列号N(S),P/F是查询/结束位。

    链路层链接好即SNRM UA帧后,RRR和SSS均为000,发送一帧I帧SSS加1,接收到一帧I帧RRR加1,客户端和服务端都是如此。P/F标志位中P是对客户端而言的,需要响应P=1,那么广播帧时P=0;F是对服务端而言的,F表示发送是否结束,也就是是不是没有后续帧,F=1表示有后续帧,因此当客户端收到服务端发送来的帧格式域中S=1和此处的F=1的帧时,需回应RR帧等待接收未接收完的数据。

    五,头校验序列(HCS)域

            HCS的长度是两个字节。HCS计算除开始标志和HCS本身外的头的字节数。HCS的计算方法跟帧校验序列(FCS)类似。不包含信息域的帧,仅含FCS(在这种情况下,HCS被看作FCS)。HCS(和FCS)的计算方法采用CRC校验算法,不等式X**0+X**5+X**12+X**16。CRC具体算法可百度查询,此处用到的X**0+X**5+X**12+X**16的算法,我自己写了一个JAVA版本,可供小伙伴参考一下,图六。

    图六

    具体计算方式依旧通过报文进行解释

    客户端:7E A0 46 48 68 FE FF 75 10 05 C1 E6 E6 00 60 35 A1 09 06 07 60 85 74 05 08 01 01 8A 02 07 80 8B 07 60 85 74 05 08 02 01 AC 0A 80 08 41 42 43 44 45 46 47 48 BE 10 04 0E 01 00 00 00 06 5F 04 00 00 00 14 00 00 BD BF 7E 

    根据HCS的长度是两个字节。HCS计算除开始标志和HCS本身外的头的字节数。我们先找出计算部分:A0 46 48 68 FE FF 75 10  对应的校验值05 C1,然后通过上述java算法进行比较即可算法是否正确,错误情况服务端不处理该报文。

    六,信息域

    客户端:7E A0 46 48 68 FE FF 75 10 05 C1 E6 E6 00 60 35 A1 09 06 07 60 85 74 05 08 01 01 8A 02 07 80 8B 07 60 85 74 05 08 02 01 AC 0A 80 08 41 42 43 44 45 46 47 48 BE 10 04 0E 01 00 00 00 06 5F 04 00 00 00 14 00 00 BD BF 7E

            信息域即是任意的通讯数据等等,具体解析方法,我将会在下一章解释

    七,帧校验序列(FCS)域

    客户端:7E A0 46 48 68 FE FF 75 10 05 C1 E6 E6 00 60 35 A1 09 06 07 60 85 74 05 08 01 01 8A 02 07 80 8B 07 60 85 74 05 08 02 01 AC 0A 80 08 41 42 43 44 45 46 47 48 BE 10 04 0E 01 00 00 00 06 5F 04 00 00 00 14 00 00 BD BF 7E 

    根据FCS的长度是末尾除7E标志尾两个字节。FCS域的长度是两个字节,用来计算除开始标志和FCS本身 外的完整的帧长度。不包含信息域的帧只包含FCS(这里HCS被看作FCS)我们先找出计算部分:A0 46 48 68 FE FF 75 10 05 C1  对应的校验值05 C1,然后通过上述java算法进行比较即可算法是否正确,错误情况服务端不处理该报文。

    结语:至此HDLC如何解析大概分享完了,大家有什么疑惑或者其他问题可留言     =。=  

     谢谢大家的点赞,我会努力写的!

    引用文献

    l IEC 62056-21, Electricity Metering-Data Exchange for Meter Reading, Tariff and Load Control-Part 21: Direct local data exchange.2001

    l IEC 62056-61, Electricity Metering-Data Exchange for Meter Reading, Tariff and Load Control-Part 61: Object Identification System(OBIS). 2001

    l IEC 62056-62, Electricity Metering-Data Exchange for Meter Reading, Tariffand Load Control-Part 62: Interface Classes. 2001 Data exchange of automatic meter reading system

    l IEC62056-46,Electricity Metering-Data Exchange for Meter Reading, Tariff and Load Control-Part 46: Data link layer using HDLC protocol

    l IEC 62056-53, Electricity Metering-Data Exchange for Meter Reading, Tariff and Load Control-Part 53: COSEM Application Layer. 2001

    l IEC 61334-6, A-XDR encoding rule

    展开全文
  • VRRP帧格式

    千次阅读 2018-02-01 15:04:08
    最近在一个生成各种网络封包的功能模块,其中到VRRP时,网上搜到的关于VRRP帧格式的描述,好多都是错的,最后在清默网络http://www.023wg.com/kkxpz/78.html搜到的才是正确的。  当然你也可以直接参考RFC文档 ...

          最近在写一个生成各种网络封包的功能模块,其中写到VRRP时,网上搜到的关于VRRP帧格式的描述,好多都是错的,最后在清默网络http://www.023wg.com/kkxpz/78.html搜到的才是正确的。
           当然你也可以直接参考RFC文档
           VRRPv2 参见RFC3768,https://tools.ietf.org/html/rfc3768
           VRRPv3 参见RFC5798,https://tools.ietf.org/html/rfc5798
           

    以下关于VRRP帧格式的描述摘自http://www.023wg.com/kkxpz/78.html:

    目前,VRRP协议包括两个版本:
    VRRPv2和VRRPv3。VRRPv2仅适用于IPv4网络,VRRPv3适用于IPv4和IPv6两种网络。
    基于不同的网络类型,VRRP可以分为VRRP for IPv4和VRRP for IPv6(简称VRRP6)。
    VRRP for IPv4支持VRRPv2和VRRPv3,而VRRP for IPv6仅支持VRRPv3。



    VRRPv2报文结构:
      VRRPv2报文结构.png

     
    VRRPv3报文结构
       VRRPv3报文结构.png

    各字段的含义如下表1所示:

        表1 VRRP报文字段含义

     

    报文字段

    含义

     

    VRRPv2

    VRRPv3

     

    Version

    VRRP协议版本号,取值为2。

    VRRP协议版本号,取值为3。

     

    Type

    VRRP通告报文的类型,取值为1,表示Advertisement。

    VRRP通告报文的类型,取值为1,表示Advertisement。

     

    Virtual Rtr ID(VRID)

    虚拟路由器ID,取值范围是1~255。

    虚拟路由器ID,取值范围是1~255。

     

    Priority

    Master设备在备份组中的优先级,取值范围是0~255。0表示设备停止参与VRRP备份组,用来使备份设备尽快成为Master设备,而不必等到计时器超时;255则保留给IP地址拥有者。缺省值是100。

    Master设备在备份组中的优先级,取值范围是0~255。0表示设备停止参与VRRP备份组,用来使备份设备尽快成为Master设备,而不必等到计时器超时;255则保留给IP地址拥有者。缺省值是100。

     

    Count IP Addrs/Count IPvX Addr

    备份组中虚拟IPv4地址的个数。

    备份组中虚拟IPv4或虚拟IPv6地址的个数。

     

    Auth Type

    VRRP报文的认证类型。协议中指定了3种类型:

    • 0:Non Authentication,表示无认证。
    • 1:Simple Text Password,表示明文认证方式。
    • 2:IP Authentication Header,表示MD5认证方式。

    -

     

    Adver Int/Max Adver Int

    VRRP通告报文的发送时间间隔,单位是秒,缺省值为1秒。

    VRRP通告报文的发送时间间隔,单位是厘秒,缺省值为100厘秒(1秒)。

     

    Checksum

    16位校验和,用于检测VRRP报文中的数据破坏情况。

    16位校验和,用于检测VRRP报文中的数据破坏情况。

     

    IP Address/IPvX Address(es)

    VRRP备份组的虚拟IPv4地址,所包含的地址数定义在Count IP Addrs字段。

    VRRP备份组的虚拟IPv4地址或者虚拟IPv6地址,所包含的地址数定义在Count IPvX Addrs字段。

     

    Authentication Data

    VRRP报文的认证字。目前只有明文认证和MD5认证才用到该部分,对于其它认证方式,一律填0。

     

     

    rsvd

     

    VRRP报文的保留字段,必须设置为0。

     

    由报文结构可以看出,VRRPv2和VRRPv3的主要区别为:

    1、支持的网络类型不同:

    VRRPv3适用于IPv4和IPv6两种网络,而VRRPv2仅适用于IPv4网络。

    2、认证功能不同:

    VRRPv3不支持认证功能,而VRRPv2支持认证功能。

    VRRPv2版本保留报文的认证字段,是为了兼容早期版本(RFC2338),VRRP认证并不能提高安全性。

    发送通告报文的时间间隔的单位不同。VRRPv3支持的是厘秒级,而VRRPv2支持的是秒级。



    展开全文
  • 802.11协议帧之数据帧格式解析

    万次阅读 2018-09-15 11:52:50
    在前面:802.11是国际电工电子工程学会(IEEE)为无线局域网络制定的...一、通用帧格式介绍 1、802.11通用帧格式  由上图可以看出,802.11帧总共有如下几个字段:Frame Control、Duration ID、Address1、Ad...

    写在前面:802.11是国际电工电子工程学会(IEEE)为无线局域网络制定的标准。所有802.11的帧分为三类:管理帧、控制帧、数据帧,本篇主要对数据帧协议讲解。欢迎讨论,QQ:993650814

     

    正文:

    一、通用帧格式介绍

    1、802.11通用帧格式

      由上图可以看出,802.11帧总共有如下几个字段:Frame Control、Duration ID、Address1、Address2、Address3、Seqctl、Address4、Frame Body、FCS。下面开始对每个字段进行解析。

    2、帧控制结构(Frame Control)

      (1)、Protocol version:  协议版本,通常为0

      (2)、Type与Sub Type:类型与次类型,用来制定所使用的帧类型,就是上文提到的控制帧、管理帧、数据帧。

              Type://00 管理帧 01控制帧 10数据帧 11保留

      (3)、ToDS 与 FromDS:

      (4)、More Fragment:用于说明长帧被分段的情况,如果还有其他帧,该位被置1

       (5)、Retry:重传帧位,重传的帧会将此位置1

       (6)、Power Management:802.11网卡为了提高电池的使用时间,通常可以关闭网卡以节省电力。此位用来指定传送端在完成目前的基本帧交换之后是否进入省电模式,1代表工作站即将进入省电模式,而0则代表工作站一直保持清醒状态。基站发出去的帧该位必为0

        (7)、More Data:为服务处于省电模式的工作站,基站会将这些由“传输系统”接收而来的帧加以暂存。基站如果设定此位,代表至少有一个帧待传送给休眠的工作站。

        (8)、Protected Frame :如果帧受到链路层安全协议的保护,该位置1.

        (9) 、Order:序号域,在长帧分段传输时,该位置1,表示接受者应该严格按照顺序处理该帧,否则设置为0.

    3、Duration/ID(持续时间/标识)

          表明该帧和它的确认帧将会占用信道多长时间,Duration 值用于网络分配向量(NAV)计算 。

    4、Address 部分

        一个802.11帧最多可以包含4个地址,帧类型的不同,这些地址也有所差异,基本上,address1代表接受端,address2代表传送端、address3代表接受端拿过来的过滤地址。

    5、Seqctl :Sequence Control,序列控制域

         用来过滤重复帧,即用来重组帧片段以及丢弃重复帧。

    6、Frame Body:帧主体

            帧主体(frameboby)又称数据位。负责在工作站间传送上层数据(payload)。在最初的指定的规格中,802.11帧最多可以传送2034字节的数据。802.2LLC标头具有八个字节,所以最多可以传送2296个字节。防止分段必须在协议层加以处理。

    7、FCS:帧检验序列

            FCS通常被视为循环冗余码(cyclic redundancy cheak,CRC),因为底层的数学运算相同。

            FCS计算范围涵盖MAC标头里所有位以及帧主体。如果FCS有误,随即丢弃。并且不进行应答。

    二、数据帧中的几点

        1、数据帧功能是为工作站与基站之间传递数据,由于数据的发送方和接收方的不同,所以数据帧也会有小分类。主要可分为四类:

        DS是分布式系统的简称,我们用它以区分不同类型帧中关于地址的解析方式。

            To DS=0,From DS=0:表示Station之间的AD Hoc类似的通信,或者控制侦、管理侦。

            To DS=0,From DS=1:Station接收的侦。

            To DS=1,From DS = 0:Station发送的侦。

            To DS=1,From DS = 1:无线桥接器上的数据侦。

    名词解释:

    IBSS(Independent BasicService Set)独立基本服务集

    BSSID(Basic Service SetIdentifier)基本服务集标识符(为AP的MAC地址)

    DA(Destination Address)目的地址,就是最终接受数据帧的地址,在以太网和wifi中帧格式转换的时候,互相可以直接复制。

    SA(Sender Address)源地址,就是发帧的最初地址,在以太网和wifi中帧格式转换的时候,互相可以直接复制。

    RA(Receiver Address)接收端地址,表示无线网络中,目前实际接收帧者的地址(可能是最终的接收者,也可能是接收帧以便转发给接收者的ap)。

    TA(Transmission Address)发送端地址,表示无线网络中目前实际发送帧者的地址(可能是最初发帧的人,也可能是转发时候的路由)。

    WDS(WirelessDistribution System)无线分布式系统

    注:无线网络中的Station想要通信,必须经过AP来进行“转发”。其实,TA和RA是无线网络中的发和收,也就是Radio;而SA和DA是真正的发送源和接收者。

    展开全文
  • 以太网帧格式详解

    万次阅读 2017-07-28 23:49:26
    浅谈以太网帧格式  一、Ethernet帧格式的发展 1980 DEC,Intel,Xerox制订了Ethernet I的标准 1982 DEC,Intel,Xerox又制订了Ehternet II的标准 1982 IEEE开始研究Ethernet的国际标准802.3 1983 迫不及待...

    浅谈以太网帧格式                                      

    一、Ethernet帧格式的发展

    1980 DEC,Intel,Xerox制订了Ethernet I的标准
    1982 DEC,Intel,Xerox又制订了Ehternet II的标准
    1982 IEEE开始研究Ethernet的国际标准802.3
    1983 迫不及待的Novell基于IEEE的802.3的原始版开发了专用的Ethernet帧格式
    1985 IEEE推出IEEE 802.3规范,后来为解决EthernetII与802.3帧格式的兼容问题,
    推出折衷的Ethernet SNAP格式

    (其中早期的Ethernet I已经完全被其他帧格式取代了 ,所以现在Ethernet只能见到后面几种Ethernet的帧格式,
    现在大部分的网络设备都支持这几种Ethernet的帧格式,
    如:cisco的路由器再设定Ethernet接口时可以指定不同的以太网的帧格式:arpa,sap,snap,novell-ether)

    二.各种不同的帧格式
    下面介绍一下各个帧格式 
    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的类型域相同。。。


    三.如何区分不同的帧格式
      
    Ethernet中存在这四种Frame那些网络设备又是如何识别的呢? 如何区分EthernetII与其他三种格式的Frame
    如果帧头跟随source mac地址的2 bytes的值大于1500,则此Frame为EthernetII格式的
       
    接着比较紧接着的两bytes如果为0xFFFF则为Novell Ether类型的Frame,
    如果为0xAAAA则为Ethernet SNAP格式的Frame ,如果都不是则为Ethernet 802.3/802.2格式的帧

    几种以太网帧格式
     
     
    相当长的一段时间里我都没搞明白一个很基础的问题---以太网的封装格式;最近查了查相关文档,总结如下;
     
    首先说明一下,Ethernet和802.3并不是一回事,虽然我们经常混用这两个术语;
     
    历史上以太网帧格式有五种:
     
    1.Ethernet V1:这是最原始的一种格式,是由Xerox PARC提出的3Mbps CSMA/CD以太网标准的封装格式,
    后来在1980年由DEC,Intel和Xerox标准化形成Ethernet V1标准;
     
    2.Ethernet V2(ARPA):这是最常见的一种以太网帧格式,也是今天以太网的事实标准,
    由DEC,Intel和Xerox在1982年公布其标准,主要更改了Ethernet V1的电气特性和物理接口,
    在帧格式上并无变化;Ethernet V2出现后迅速取代Ethernet V1成为以太网事实标准;
    Ethernet V2帧头结构为6bytes的源地址+6bytes的目标地址+2Bytes的协议类型字段+数据。
    常见协议类型如下:
    0800       IP
    0806       ARP
    8137       Novell IPX
    809b       Apple Talk
    如果协议类型字段取值为0000-05dc(十进制的0-1500),则该帧就不是Ethernet V2(ARPA)类型了,而是下面讲到的三种802.3帧类型之一;
    Ethernet可以支持TCP/IP,Novell IPX/SPX,Apple Talk Phase I等协议;RFC 894定义了IP报文在Ethernet V2上的封装格式;
     
    3.RAW 802.3:这是1983年Novell发布其划时代的Netware/86网络套件时采用的私有以太网帧格式,
    该格式以当时尚未正式发布的802.3标准为基础;
    但是当两年以后IEEE正式发布802.3标准时情况发生了变化—IEEE在802.3帧头中又加入了802.2 LLC(Logical Link Control)头,
    这使得Novell的RAW 802.3格式跟正式的IEEE 802.3标准互不兼容;可以看到在Novell的RAW 802.3帧结构中并没有标志协议类型的字段,
    而只有Length字段(2bytes,取值为0000-05dc,即十进制的0-1500),因为RAW 802.3帧只支持IPX/SPX一种协议;
     
    4.802.3/802.2 LLC:这是IEEE 正式的802.3标准,它由Ethernet V2发展而来。
    它将Ethernet V2帧头的协议类型字段替换为帧长度字段(取值为0000-05dc;十进制的1500);
    并加入802.2 LLC头用以标志上层协议,LLC头中包含DSAP,SSAP以及Crontrol字段;
    常见SAP值:
    0         Null LSAP        [IEEE]
    4        SNA Path Control         [IEEE]
    6        DOD IP        [79,JBP]
    AA         SNAP        [IEEE]
    FE        Global DSAP        [IEEE]
    SAP值用以标志上层应用,但是每个SAP字段只有8bits长,
    而且其中仅保留了6比特用于标识上层协议,因此所能标识的协议数有限(不超过32种);
    并且IEEE拒绝为某些重要的协议比如ARP协议定义SAP值(奇怪的是同时他们却定义了IP的SAP值);
    因此802.3/802.2 LLC的使用有很大局限性;
     
    5.802.3/802.2 SNAP:这是IEEE为保证在802.2 LLC上支持更多的上层协议同时更好的支持IP协议而发布的标准,
    与802.3/802.2 LLC一样802.3/802.2 SNAP也带有LLC头,但是扩展了LLC属性,
    新添加了一个2Bytes的协议类型域(同时将SAP的值置为AA),
    从而使其可以标识更多的上层协议类型;
    另外添加了一个3Bytes的OUI字段用于代表不同的组织,RFC 1042定义了IP报文在802.2网络中的封装方法和ARP协议在802.2 SANP中的实现;
     
    今天的实际环境中大多数TCP/IP设备都使用Ethernet V2格式的帧。
    这是因为第一种大规模使用的TCP/IP系统(4.2/3 BSD UNIX)的出现时间介于RFC 894和RFC 1042之间,
    它为了避免不能和别的主机互操作的风险而采用了RFC 894的实现;
    也由于大家都抱着这种想法,所以802.3标准并没有如预期那样得到普及;
     
    CISCO设备的Ethernet Interface默认封装格式是ARPA(Ethernet V2)

    不同厂商对这几种帧格式通常有不同的叫法,比如:
    Frame Type         Novel        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

    **************************************************************************************************************************************
    
    
    
    

    一、 以太网数据帧的格式分析

    大家都知道我们目前的局域网大多数是以太网,但以太网有多种标准,其数据帧有多种格式,恐怕有许多人不是太清楚,本文的目的就是通过帧格式和Sniffer捕捉的数据包解码来区别它们。

    以太网这个术语一般是指数字设备公司(DigitalEquipment)、英特尔公司(Intel)和施乐公司(Xerox)在1982年联合公布的一个标准(实际上它是第二版本,第一版本早在1972年就在施乐公司帕洛阿尔托研究中心PARC里产生了)。它是目前TCP/IP网络采用的主要的局域网技术。它采用一种称作CSMA/CD的媒体接入方法,其意思是带冲突检测的载波侦听多路接入(Carrier Sense, Multiple Access with CollisionDetection)。它的速率为10 Mb/s,地址为48 bit。

    1985年,IEEE(电子电气工程师协会)802委员会公布了一个稍有不同的标准集,其中802.3针对整个CSMA/CD网络,802.4针对令牌总线网络,802.5针对令牌环网络。这三者的共同特性由802.2标准来定义,那就是802网络共有的逻辑链路控制(LLC)。不幸的是,802.2和802.3定义了一个与以太网不同的帧格式,加上1983年Novell为其Netware开发的私有帧,这些给以太网造成了一定的混乱,也给我们学习以太网带来了一定的影响。

    1、通用基础

    数据链路层头(Header)是数据链路层的控制信息的长度不是固定的,根据以太网数据帧的格式的不同而不同,那么判断IEEE802.3、IEEE802.3 SNAP、Ethernet Version2、Netware 802.3“Raw”这些数据帧的最主要依据也源于Header的变化。

    从Sniffer捕捉数据包中也可以看出,Sniffer捕捉数据包的时候是掐头去尾的,不要前面的前导码,也丢弃后面的CRC校验(注意它只是不在Decode里显示该区域,但并不代表它不去做数据包CRC校验),这就是很多人困惑为什么Sniffer捕捉到的数据包长度跟实际长度不相符的原因。那么,Sniffer是如何来判断这些不同类型的以太网格式呢?

    Sniffer可以判断出不同的以太网格式,这里需要注意的是,Sniffer在数据包解码时有自己的格式,所以有Offset之说,offset ØE是指在SnifferHex解码窗口中从左向右第15位的数值。大家如果有点发懵的话,没有关系,看完后面的格式分析后再来分析前面提到的,相信一定能够明白?

    下面我们通过一些具体的数据包来说明各种以太网格式的具体区别。

    2、Ethernet Version2

    以太网版本2是先于IEEE标准的以太网版本。

    从数据包中可以看出,EthernetV2通过在DLC头中2个字节的类型(Type)字段来辨别接收处理。类型字段是用来指定上层协议的(如0800指示IP、0806指示ARP等),它的值一定是大于05FF的,它提供无连接服务的,本身不控制数据(DATA)的长度,它要求网络层来确保数据字段的最小包长度(46字节)。

    Sniffer捕获的Ethernet V2帧的解码,可以看到在DLC层,源DLC地址后紧跟着就是以太网类型(Etehertype)值0800,代表上层封装的是IP报文,0800大于05FF,因而我们可以断定它是Ethernet V2的帧。

     

    3、IEEE802.3

    IEEE802.3把DLC层分隔成明显的两个子层:MAC层和LLC层,其中MAC层主要是指示硬件目的地址和源地址。LLC层用来提供一些服务:

    – 通过SAP地址来辨别接收和发送方法

    – 兼容无连接和面向连接服务

    – 提供子网访问协议(Sub-network Access Protocol,SNAP),类型字段即由它的首部给出。

    MAC层要保证最小帧长度不小于64字节,如果数据不满足64字节长度就必须进行填充。

    是Sniffer捕获的IEEE802.3帧的解码,可以看到在DLC层源地址后紧跟着就是802.3的长度(Length)字段0026,它小于05FF,可以肯定它不是Ethernet V2的帧,而接下来的Offset0E处的值“4242”(代表DSAP和SSAP),既不是Novell 802.3 “Raw”的特征值“FFFF”,也不是IEEE 802.3SNAP的特征值“AAAA”,因此它肯定是一个IEEE802.3的帧。

     

    4、IEEE802.3 SNAP

    SNAP (Sub-Network AccessProtocol)子网访问协议,是逻辑链路控制(Logical LinkControl)的一个子集,它允许协议不用通过服务访问点(SAP)即可实现IEEE兼容的MAC层功能,因此它在DSAP和SSAP域里的值是固定的(AAAA)。也正源于此,它需要额外提供5个字节的头来指定接收方法,3个字节标识厂商代码,2个字节标识上层协议。

    其MAC层保证数据帧长度不小于64字节,不足的话需要进行数据填充。

    是Sniffer捕获的IEEE802.3SNAP帧的解码,可以看到在DLC层源地址后紧跟着就是802.3的长度(Length)字段0175,它小于05FF,可以肯定它不是Ethernet V2的帧,而接下来的Offset 0E处的值“AAAA”(代表DSAP和SSAP),这是IEEE 802.3SNAP的特征值“AAAA”,因此可以断定它是一个IEEE802.3 SNAP的帧。

     

    5、Novell Netware 802.3 “Raw”

    虽然它的产生先于IEEE802.3规范,但已成为IEEE802.3规范的一部分。它仅使用DLC层的下半部,而不使用LLC。

    802.3 “Raw”帧通过在DLC头中2个字节的长度(Length)字段来标记数据帧长度,而在长度字段后紧跟着就是两个字节的十六进制值FFFF,它是用来标识IPX协议头的开始。为了确保最小数据帧长度为64字节,MAC层会进行填充数据区域来确保最小长度。

    在所有工作站都使用同一种数据帧类型情况下不会有什么问题,但如果是在混合以太网帧类型环境中,Novell的这种以太网帧会造成负面影响:当Novell发出广播帧时,其FF字段正好是IEEE802.3帧中的服务访问点(SAP)域,它的“FF”值代表着广播SAP,因此所有的工作站(不管是不是Netware工作站)都会拷贝,这会造成不必要的广播影响。

    Sniffer捕获的Netware 802.3“RAW”帧的解码,可以看到在DLC层源地址后紧跟着就是802.3的长度(Length)字段0120,它小于05FF,可以肯定它不是Ethernet V2的帧,而接下来的Offset 0E处的值“FFFF”(代表IPX协议的开始),这是Netware 802.3“Raw”的特征值“FFFF”,因此可以断定它是一个Novell 802.3 “Raw”的帧。

     

    二、 Ethernet V2帧与IEEE 802.3帧的比较

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

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

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

    展开全文
  • AVTP 帧格式

    千次阅读 2020-04-28 15:10:25
    音视频数据封装:将音视频数据封装成相应的格式在链路层传输。 媒体同步: 媒体时钟同步:不同的媒体类型有自己的媒体时钟,这些媒体时钟都映射到gPTP时间(同一个时间坐标系),接收端可以轻松进行媒体时钟恢复。...
  • WireShark 安装及帧格式解析(以太帧、IP包、ARP包)
  • can2.0B帧格式

    千次阅读 2020-08-31 12:05:55
    CAN帧格式(标准帧、拓展帧) 参考:https://www.cnblogs.com/fengliu-/p/9277165.html CAN2.0B标准帧 CAN 标准帧信息为11个字节,包括两部分:信息和数据部分。前3个字节为信息部分。 位置 7 ...
  • 以太网帧格式

    千次阅读 2016-07-23 16:05:58
    1 以太网相关背景 以太网这个术语通常是指由DEC,Intel和Xerox公司在1982年联合公布的一个标准,它是当今TCP/IP采用的主要的局域网技术,它采用一种称作CSMA/CD的媒体接入方法。...此三种的通用部分由802.2
  • 以太网数据帧格式及ARP协议

    千次阅读 2020-08-29 15:59:52
    一、以太网中数据结构 以太网是目前最流行的一种局域网组网技术(其他常见局域网组网技术还有令牌环局域网、无线局域网、ATM局域网),以太网技术的正式标准是IEEE 802.3标准,它规定了在以太网中传输的数据...
  • PPP帧和MAC帧格式

    千次阅读 2016-10-18 10:48:41
  • 感谢原博主的分享,原文链接:以太网帧格式、IP数据报格式、TCP段格式+UDP段格式 详解 转载只为方便自己梳理知识点,如有侵权请联系本人删除,再次感谢原博主:苍月代表我 图片同为转载 1、ISO开放系统有以下几层...
  • Ethernet的帧格式

    千次阅读 2012-10-25 19:45:51
    Ethernet的帧格式  局域网包括:以太网、令牌环、光纤分布式数据接口FDDI。 IP数据报必须用数据链路层的报文和报尾封装后才能在物理媒介上发送。数据链路层的报文和报尾提供以下服务: 1. 定界 帧彼此...
  • MODBUS帧格式整理

    千次阅读 2018-08-19 19:49:37
    功能码 0x01 读线圈   功能码 0x02 读离散量输入 ... 功能码 0x05 单个...在一个远程设备上,使用该功能码单个输出为 ON 或 OFF。 请求数据域中的常量说明请求的 ON/OFF 状态。十六进制值 FF 00 ...
  • MAC帧格式: 以太网帧格式由5个字段组成,前两个字段分别是6字节长的目的地址和源地址字段,是指网卡的硬件地址(MAC地址)。第三个字段是2字节的类型字段,用来标识上一层使用的是什么协议,以便把收到的MAC帧的...
  • 以太网(802.3)帧格式

    万次阅读 2016-10-10 22:08:44
    1. 以太网帧格式2. 字段说明 Preamble(前导码): 用于接收方与发送方的同步,7个字节,每个字节的值固定为0xAA. SFD(start frame delimiter): 帧起始定界符,用于标识一个以太网帧的开始,值固定为0xAB. DST && SRC...
  • Ethernet II帧格式

    万次阅读 2011-07-30 21:36:45
    Ethernet II帧格式 为什么帧长必须在64和1518字节之间  | DA | SA | TYPE |
  • 数据链路层各种帧格式

    千次阅读 2019-10-05 01:14:44
    有两个版本,帧格式是相同的,版本2 在 版本1的基础上 更改了 电器特性和 物理接口。是现在最常用的 帧格式。 类型字段取值范围: 必须大于 1500 具体多少没研究过 ^-^ 以太网帧数据部分长度:46 - 1500 2、...
  • h265帧格式

    千次阅读 2018-01-01 15:36:26
    H265 nalu head格式 000000 01 nalu type 01 content例如:(具体nalu type值对应的类型可以上网查一下)00 00 00 01 40 01 的nuh_unit_type的值为 32, 语义为视频参数集 VPS00 00 00 01 42 01 的nuh_unit_type的...
  • 详述——802.11帧格式

    千次阅读 2018-12-18 13:26:34
    1、802.11帧格式:最大长度2346个字节,基本结构如下图 帧头:控制和寻址 帧体:数据通信 FCS:帧的完整性校验 1)Frame Control:所有帧的开头均是长度两个元祖的Frame Control(帧控制)位。 Protocol:版本...
  • 以太网格式2. ARP协议2.1 ARP协议的作用2.2 ARP数据报的格式 1.以太网格式 源地址和目的地址是指网卡的硬件地址(也叫MAC地址),用来识别数据链路层中相应的结点,长度是48位即6个字节,是在网卡出厂...
  • MODBUS-RTU数据帧格式、报文实例

    万次阅读 多人点赞 2017-10-07 14:13:16
    MODBUS-RTU报文模型 设备地址 ...一个报文就是一数据,一个数据就一个报文: 指的是一串完整的指令数据,就像上面的一串数据。主机对从机数据操作如果单片机接收到一个报文那么就对报文进行解析
  • H264帧格式解析

    万次阅读 多人点赞 2019-02-19 19:28:49
    SPS和PPS按流的方式在一组GOP之前。 AVCC:使用NALU长度,固定字节,通常为4字节,分隔NALU;一般在每个NALU头部为4字节大端格式的长度字节,在一组GOP的头部包含extradata结构,用于存储sequence-header、SPS、...
  • UDP数据报帧格式

    千次阅读 2017-06-13 14:05:45
    UDP报文格式如下图:
  • IEEE MDIO帧格式

    千次阅读 2011-11-14 20:17:32
    字段描述 start op Phy_addr Reg_addr TA data 空间(bits) 2 2 5 ...op:读写操作,10为读,01为 phy_addr:标识phy地址 reg_addr
  • Opencv 视频的读写处理指导

    千次阅读 2019-09-06 22:38:09
    Opencv 视频的读写指导 思路指导 1.先打开视频文件 2.遍历视频 3.处理视频 4.保存所有的视频 1.打开视频 1.当读取的是保存的视频时,打开视频的方法为: cv::VideoCapture capture("视频名"); //将视频放到...
  • 以太网(RFC 894)帧格式以太网的帧格式如下所示:其中的源地址和目的地址是指网卡的硬件地址(也叫MAC地址),长度是48位,是在网卡出厂时固化的。用ifconfig命令看一下,“HWaddr 00:15:F2:14:9E:3F”部分就是硬件...
  • MODBUS_Rtu通讯(一):数据帧格式解读

    万次阅读 多人点赞 2019-01-29 12:43:19
    1.Modbus数据构成:地址域 + 功能码 + 数据 + 差错校验 下面逐一解释各部分的具体含义: (1)地址域:即主站要访问的从站地址,其范围0~247 (2)功能码:即主站想要从站执行什么动作。 从大的方面看分为读...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 88,334
精华内容 35,333
关键字:

帧的格式怎么写