精华内容
下载资源
问答
  • 以太网帧格式 IP数据报格式 TCP数据报格式 MTU MSS
    千次阅读
    2021-08-18 16:28:42

    一、以太网帧格式

    下图摘自《TCP IP详解卷1:协议(第2版)》第3.2.2节以太网帧格式。
    以太网(IEEE 802.3)帧格式
    以太网帧有最小和最大尺寸。最小的帧是64字节,要求数据区(有效载荷)长度(无标签)最小为48字节。当有效载荷较小时,填充字节(值为0)被添加到有效载荷尾部,以确保达到最小长度。

    传统以太网的最大帧长度是1518字节(包括4字节CRC和14字节头部)。选择这个值出于一种折中:如果一个帧中包括一个错误(接收到不正确的CRC校验),只需重发1.5kB以修复该问题。另一方面,MTU大小限制为1500字节。为了发送一个更大的消息,则需要多个帧(例如,对于TCP/IP网络常用的较大尺寸64KB,需要至少44个帧,64*1024/1500向上取整)。

    二、IP数据报格式

    IP数据报格式
    IP数据报格式

    • 4位版本号(version)指定IP协议的版本。对IPv4来说其值是4.
    • 4位头部长度(header length)表示该IP头部有多少个32bit(4字节)。4位最大15,所以IP头部最长60字节。
    • 8位服务类型(Type Of Service, TOS)包括一个三位的优先权字段(现在已经被忽略),4位的TOS字段和1位保留字段(必须置0)。4位TOS字段分别表示:最小延时,最大吞吐量,最高可靠性和最小费用。最多有一个能置1。
    • 16位总长度是指整个IP数据报的长度,以字节为单位,因此IP数据报最大长度是65535字节。由于MTU限制,超过MTU的数据报会被分片传输。
    • 16位标识唯一标识主机发送的每一个数据报,同一个数据报的所有分片都具有相同的标识值。
    • 3位标识字段第一位保留。第二位(Don’t Fragment,DF)表示“禁止分片”。第三位(More Fragment,MF)表示“更多分片”,除了数据报的最后一个分片外,其它分片都要把它置1。
    • 13位分片偏移是分片相对于原始IP数据开始处(仅指数据部分)的偏移。实际的偏移值是该值左移3位(乘8)后得到的。由于这个原因,除了最后一个IP分片外,每个IP分片的数据部分的长度必须是8的整数倍。
    • 8位生存时间(time to live,TTL)使用“跳数“作为TTL的单位。数据报每经历一个路由器时对应的TTL值就会减 1 ,防止数据报发送在路由器中出现环路,因为数据报在传送的过程中要占用一定的带宽(TTL值为零时路由器将自动丢弃该数据包并向源端发送一个ICMP差错报文)。
    • 8位协议用来区分上层协议。ICMP是1,TCP是6,UDP是17。
    • 16位头部校验和由发送端填充,接收端对其IP头部使用CRC进行循环冗余检验。
    • IPv4最后一个选项字段是可变长的可选信息,最多40字节。包括记录路由、时间戳、松散源路由选择和严格源路由选择。

    三、TCP数据报格式

    TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的通信协议,数据在传输前要建立连接,传输完毕后还要断开连接。

    客户端在收发数据前要使用 connect() 函数和服务器建立连接。建立连接的目的是保证IP地址、端口、物理链路等正确无误,为数据的传输开辟通道。

    下面为TCP数据报的结构:
    TCP数据报结构
    TCP数据报结构.jpg

    • 序号:Seq(Sequence Number)序号占32位,用来标识从计算机A发送到计算机B的数据包的序号,计算机发送数据时对此进行标记。
    • 确认号:Ack(Acknowledge Number)确认号占32位,客户端和服务器端都可以发送,Ack = Seq + 1。
    • 首部长度/数据偏移:4bits。由于首部可能含有可选项内容,因此TCP报头的长度是不确定的,报头不包含任何任选字段则长度为20字节,4位首部长度字段所能表示的最大值为1111,转化为10进制为15,15*32/8 = 60,故报头最大长度为60字节。首部长度也叫数据偏移,是因为首部长度实际上指示了数据区在报文段中的起始偏移值。
    • 标志位:每个标志位占用1Bit,共有6个,分别为 URG、ACK、PSH、RST、SYN、FIN,具体含义如下:
      • URG:紧急指针(urgent pointer)有效。
      • ACK:表示确认号Ack有效。
      • PSH:表示有 DATA数据传输,接收方应该尽快将这个报文交给应用层。
      • RST:重置连接。
      • SYN:建立一个新连接。
      • FIN:断开一个连接。
    • 窗口:滑动窗口RWND16位滑动窗口大小,代表其socket接收缓冲区大小的字节数,最大65535。
    • 校验和:奇偶校验,此校验和是对整个的 TCP 报文段,包括 TCP 头部和 TCP 数据,以 16 位字进行计算所得。由发送端计算和存储,并由接收端进行验证。
    • 紧急指针:只有当 URG 标志置 1 时紧急指针才有效。紧急指针是一个正的偏移量,和32位序号字段中的值相加表示紧急数据的下一字节的序号。 TCP 的紧急方式是发送端向另一端发送紧急数据的一种方式。
    • 选项和填充:最常见的可选字段是最长报文大小,又称为MSS(Maximum Segment Size),每个连接方通常都在通信的第一个报文段(为建立连接而设置SYN标志为1的那个段)中指明这个选项,它表示本端所能接受的最大报文段的长度。选项长度不一定是32位的整数倍,所以要加填充位,即在这个字段中加入额外的零,以保证TCP头是32的整数倍。
    • 数据部分: TCP 报文段中的数据部分是可选的。在一个连接建立和一个连接终止时,双方交换的报文段仅有 TCP 首部。如果一方没有数据要发送,也使用没有任何数据的首部来确认收到的数据。在处理超时的许多情况中,也会发送不带任何数据的报文段。

    对标志位英文字母缩写的总结:Seq 是 Sequence 的缩写,表示序列;Ack(ACK) 是 Acknowledge 的缩写,表示确认;SYN 是 Synchronous 的缩写,愿意是“同步的”,这里表示建立同步连接;FIN 是 Finish 的缩写,表示完成。

    四、MTU MSS

    传统上,以太网的有效载荷一直是1500字节,它代表以太网的MTU。
    目前,大多数系统为以太网使用1500字节的MTU,虽然在必要时它也可设置为一个较小的值。
    有效载荷有时被填充(添加)数个0,以确保帧总体长度符合最小长度要求。

    • MTU: Maximum Transmit Unit,最大传输单元。即物理接口(数据链路层)提供给其上层(通常是IP层)最大一次传输数据的大小;以普遍使用的以太网接口为例,缺省MTU=1500 Byte,这是以太网接口对IP层的约束,如果IP层有<=1500 byte 需要发送,只需要一个IP包就可以完成发送任务;如果IP层有> 1500 byte 数据需要发送,需要分片才能完成发送,这些分片有一个共同点,即IP Header ID相同。

    • MSS:Maximum Segment Size ,最大段大小。TCP提交给IP层最大分段大小,不包含TCP Header和 TCP Option,只包含TCP Payload(有效负载),MSS是TCP用来限制application层最大的发送字节数。如果底层物理接口MTU= 1500 byte,则 MSS = 1500- 20(IP Header) -20 (TCP Header) = 1460 byte,如果application 有2000 byte发送,需要两个segment才可以完成发送,第一个TCP segment = 1460,第二个TCP segment = 540。

    更多相关内容
  • 三速以太网,网络帧格式,ARP,IP,TCP,UDP帧格式
  • 802.1x认证过程及EAPOL帧格式详细叙述了802.1x认证的过程,通过抓取网络上的报来分析EAPOL帧的格式,相比较枯燥的文字更能直观的理解,有助于对802.1x和EAPOL的学习
  • CAN扩展帧和标准帧格式对比分析.docx
  • Ethernet的帧格式

    2016-01-04 11:08:48
    1980 DEC,Intel,Xerox制订了...1983 迫不及待的Novell基于IEEE的802.3的原始版开发了专用的Ethernet帧格式 1985 IEEE推出IEEE 802.3规范 后来为解决EthernetII与802.3帧格式的兼容问题推出折衷的Ethernet SNAP格式
  • 湘潭大学网络协议TCP/IP实验一, 以太网链路层帧格式分析实验报告,仅供参考
  • 蓝牙4.0帧格式详解

    2016-03-16 14:30:20
    详细介绍了蓝牙4.0帧格式,包括各字段含义,长度与取值。在此申明:本资料是经搜索网上资料后整理而得,如有侵权,请发CSDN私信。
  • CAN 2.0帧格式解析

    2017-02-06 13:46:42
    CAN 2.0帧格式解析
  • 以太网帧格式、IP数据报格式、TCP段格式+UDP段格式 详解
  • WLAN帧格式(简述WLAN帧格式),适合搞802.11无线的同志
  • 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

    展开全文
  • 一、CAN协议帧格式 CAN协议帧的格式十分重要,部分MCU中的CAN外设寄存器就是根据对应帧结构来进行设计的。 数据帧:用于发送单元向接收单元传送数据的帧 遥控帧:用于接收单元向具有相同ID的发送单元请求数据的帧...

    目录

    一、CAN协议帧格式

    1、数据帧

    2、遥控帧

    3、错误帧

     4、过载帧

     5、帧间隔


    一、CAN协议帧格式

    CAN协议帧的格式十分重要,部分MCU中的CAN外设寄存器就是根据对应帧结构来进行设计的。

    • 数据帧:用于发送单元向接收单元传送数据的帧
    • 遥控帧:用于接收单元向具有相同ID的发送单元请求数据的帧
    • 错误帧:用于当检测出错误时向其他单元通知错误的帧
    • 过载帧:用于接收单元通知其尚未做好接收准备的帧
    • 帧间隔:用于将数据帧和遥控帧与前面的帧分离开来的帧

    1、数据帧

    (1)帧起始:标识一个数据帧的开始,用于同步,一个显性位,只有在总线空闲期间节点才能发送SOF

    (2)仲裁段(场):ID、RTR、IDE、SRR

    • ID:唯一确定一条报文,表明报文的含义和优先级;(标准帧:11位ID;拓展帧:29位ID)
    • RTR 远程传送请求位(0:数据帧。              1:远程帧)
    • IDE 标识符拓展位     (0:11位ID,标准帧。1:29位ID,拓展帧)
    • SRR 远程代替请求位   SRR = 1

    以Renesas RH850的用户手册中的Receive Rule ID Register举例:其中就设计到CAN数据帧的相关设置

    (3)控制段(场):主要用于表示数据段有多少个字节

    • r1、r0 为保留位,默认为显性电平(逻辑0)
    • DLC 数据长度码:表示数据段的字节数,表示为0~8

    (4)数据段(场):CAN数据帧要发送的数据内容

    (5)CRC段(场):用于进行CRC校验

    • CRC:接收到的CRC数据,用于进行校验
    • DEL 界定符:用于界定CRC序列,固定1个隐性电平(逻辑1),CRC界定符之前会进行位填充,CRC之后的位域都是固定格式,不允许位填充

    (6)ACK段(场):确定报文被至少一个节点正确接收

    发送节点在ACK发送隐性位(逻辑1):

    • 正确接收到报文的节点 =》 ACK发送显性位(逻辑0)
    • 未正确接收到报文的节点 =》ACK发送隐性位(逻辑1)

    发送节点检测应答位是否被显性电平覆盖(即ACK变为显性位,逻辑0)

    • 没有 =》 ACK错误

    (7)帧结束7个连续的隐性位(逻辑1),表示帧结束;节点在检测11个连续的隐性位后,认为总线空闲

    2、遥控帧

     具体各位信息可以参考数据帧

    3、错误帧

    (1)CAN中的错误检测:

    • 位检测:节点检测到的位域自身送出的位数值不同。(注:仲裁段与ACK段不参与位检测
    • 填充检测:在使用位填充编码的帧段,不允许出现6个连续相同的电平
    • CRC检测:节点计算CRC序列与接收到的CRC序列不同
    • 格式检测:固定格式位场(CRC界定符之后),含有一个或更多非法位
    • ACK检测:发送节点在ACK位期间未检测到“显性”电平

    发送节点的产生错误一般有:位错误、格式错误、ACK错误

    接收节点的产生错误一般有:填充错误、格式错误、CRC错误

    (2)CAN中的错误帧:

    一般流程:检测错误=》发送错误帧=》通知报文错误

    主动错误与被动错误的区别:

    • 主动错误:只要检查到错误,它立即“主动地”发送错误标志,连续6个显性位(不满足CAN协议的“最多5个连续的同性位”要求)。
    • 被动错误:如果检查到错误,它只能“被动地”等其他站点报错,等待的时候不能去动总线,发送了6个隐性位(不满足CAN协议的“最多5个连续的同性位”要求,能够部分或全部被其他节点的显性位覆盖),直到识别出其他站点报错,然后就可以去竞争总线,该干啥干啥。

    错误帧的发送

    • 位错误、填充错误、格式错误或ACK错误产生后:当前发送的一下位发送错误帧
    • CRC错误:紧随ACK界定符后的位发送错误帧
    • 错误帧发送后:总线空闲时重发出错的数据帧

     

     

     4、过载帧

     5、帧间隔

    展开全文
  • MP3解码编码时必须要了解MP3文件格式, 而解码时主要是对数据的解码。 文档里详细介绍了数据的第几位表示什么, 有什么作用。
  • 详解以太网MAC帧格式

    千次阅读 2022-03-12 16:34:37
    终端之间的通信 二、帧格式 三、Ethernet Ⅱ 帧格式 1. 各字段说明 2. 两个问题 3. 抓包示意 4. 参考标准 四、IEEE 802.3 帧格式 1. 字段说明 2. 抓包示意 3. 参考标准 一、引入 1. 前言 20 世纪60 年代以来,...

    目录

    一、引入

    1. 前言

    2. 网络通信协议

    3. 终端之间的通信

    二、帧格式

    三、Ethernet Ⅱ 帧格式

    1. 各字段说明

    2. 两个问题

    3. 抓包示意

    4. 参考标准

    四、IEEE 802.3 帧格式

    1. 字段说明

    2. 抓包示意

    3. 参考标准


    一、引入

    1. 前言

    20 世纪60 年代以来,计算机网络得到了飞速发展。各大厂商和标准组织为了在数据通信网
    络领域占据主导地位,纷纷推出了各自的网络架构体系和标准,如IBM 公司的SNA 协议,
    Novell 公司的IPX/SPX 协议,以及广泛流行的OSI 参考模型和TCP/IP协议。同时,各大厂
    商根据这些协议生产出了不同的硬件和软件。标准组织和厂商的共同努力促进了网络技术
    的快速发展和网络设备种类的迅速增长。
    网络通信中, " 协议" 和" 标准" 这两个词汇常常可以混用。同时, 协议或标准本身又常
    常具有层次的特点。一般地, 关注于逻辑数据关系的协议通常被称为上层协议, 而关注于
    物理数据流的协议通常被称为底层协议。IEEE 802 就是一套用来管理物理数据流在局域网
    中传输的标准, 包括在局域网中传输物理数据的802.3 以太网标准。除以太外, 还有一些用
    来管理物理数据流在广域网中传输的标准, 如PPP ( Point-to- Poi nt Protocol ) , 高级数
    据钅连路控制HDLC ( High-LeveI Data Link ControI ) 。

    2. 网络通信协议

    3. 终端之间的通信

     数据包在以太网物理介质上传播之前必须封装头部和尾部信息, 封装后的数据包称为数据
    帧, 数据帧中封装的信息决定了数据如何传输。以太网上传输的数据帧有两种格式, 选择
    哪种格式由TCP/IP 协议簇中的网络层决定。

    二、帧格式

    以太网上使用两种标准帧格式。第一种是世纪80 年代初提出的DIX v2 格式, 即Ethernet
    II 帧格式。Ethernet II 后来被IEEE802 标准接纳, 并写进了IEEE 802.3x-1997 的3.2.6 节。

    Ethernet Ⅱ 帧格式


    第二种是1983 年提出的IEEE 802.3 格式。这两种格式的主要区别在于Ethernet II 格式中包
    含一个Type 字段, 标识以太帧处理完成之后将被发送到哪个上层协议进行处理, IEEE
    802.3格式中, 同样的位置是长度(length)字段。

    IEEE  802.3 帧格式


    不同的Type 字段值可以用来区别这两种帧的类型, 当Type 字段值小于等于1500 ( 或者十
    六进制的0x05DC) 时, 帧使用的是IEEE 802.3 格式。当Type 字段值大于等于1536 ( 或者
    十六进制的0x0600)时, 帧使用的是Ethernet II 格式。以太网中大多数的数据帧使用的是
    Ethernet II 格式


    以太帧中还包括源和目的MAC 地址分别代表发送者的MAC 和接收者的MAC , 此外还有
    帧校验序列字段, 用于检验传输过程中帧的完整性。

    以太网帧格式

    三、Ethernet Ⅱ 帧格式

    1. 各字段说明

    DMAC6字节目的MAC地址,IPV4为6字节,该字段确定帧的接收者。
    SMAC6字节源MAC地址,IPV4为6字节,该字段标识发送帧的工作站。
    Type2字节协议类型。取值表示了数据字段包含的高层协议。下表列出了链路直接封装的协议。
    Data变长

    数据字段的最小长度必须为46字节以保证帧长至少为64字节,这意味着传输一字节信息也必须使用46字节的数据字段。

    如果填入该字段的信息少于46字节,该字段的其余部分也必须进行填充。数据字段的最大长度为1500字节。

    CRC4字节用于帧内后续字节差错的循环冗余检验(也称为FCS或帧检验序列)。这个字段只是提供检错功能,并不提供纠错功能。该效验和效验的范围为:目的地址,源地址,类型,数据等字段。CRC效验的生成多项式为:

    G(x)=X(32)+X(26)+X(23)+X(22)+X(16)+X(12)+X(11)+X(10)+X(8)+X(7)+X(5)+X(4)+X(2)+X(1)+1

    对于Type 字段来说,不同的取值代表数据字段封装的不同上层协议,具体如下:

    0x0800Internet Protocol (IP) [RFC894]
    0x0801X.75 Internet
    0x0805X.25 Level 3
    0x0806Address Resolution Protocol (ARP)[RFC7042]
    0x0808Frame Relay ARP [RFC1701]
    0x8000IS-IS
    0x8035Reverse Address Resolution Protocol (RARP) [RFC903]
    0x8137Novell NetWare IPX/SPX (old)
    0x8138Novell, Inc.
    0x8100IEEE Std 802.1Q - Customer VLAN Tag Type
    0x814CSNMP over Ethernet [RFC1089]
    0x86DDIP Protocol version 6 (IPv6) [RFC7042]
    0x8808IEEE Std 802.3 - Ethernet Passive Optical Network (EPON) [RFC7042]
    0x880BPoint-to-Point Protocol (PPP) [RFC7042]
    0x880CGeneral Switch Management Protocol (GSMP)
    0x8847MPLS (multiprotocol label switching) label stack - unicast [RFC 3032]
    0x8848MPLS (multiprotocol label switching) label stack - multicast [RFC 3032]
    0x8863PPP over Ethernet (PPPoE) Discovery Stage [RFC2516]
    0x8864PPP over Ethernet (PPPoE) Session Stage [RFC2516]
    0x888EIEEE Std 802.1X - Port-based network access control
    0x88A8IEEE Std 802.1Q - Service VLAN tag identifier (S-Tag)
    0x88B7IEEE Std 802 - OUI Extended Ethertype
    0x88C7IEEE Std 802.11 - Pre-Authentication (802.11i)
    0x88CCIEEE Std 802.1AB - Link Layer Discovery Protocol (LLDP)
    0x88E5IEEE Std 802.1AE - Media Access Control Security
    0x88F5IEEE Std 802.1Q - Multiple VLAN Registration Protocol (MVRP)
    0x88F6IEEE Std 802.1Q - Multiple Multicast Registration Protocol (MMRP)

    这个以太网V2的前导域为8B,而IEEE802.3的前导域为7B,将空余出来的一个字节用作帧起始分解符,它的位模式为10101011,这样做的目的就是为了和IEEE802.4和IEEE802.5兼容。

    还有的就是IEEE802.3帧规定的第三个字段是“长度/类型域”。当这个字段值大于1536时,表示类型,这个就是和V2以太网一样的标准了;当这个字段值小于1500时,才表示“长度”,这时,接收方无法确定对接收到的帧做如何处理,必须通过在数据部分增加一个小的LLC头部,用它来提供帧类型的

    2. 两个问题

    1.在以太网V2的MAC帧中,其首部并没有一个帧长度(或数据长度)的字段,那么MAC子层如何知道从接收到的以太网帧中取出多少字节的数据交给上一层的协议?

    D:  这是因为以太网采用曼彻斯特编码,曼彻斯特编码的一个重要特点是:在曼彻斯特的每一个码元的正中间一定有一次电压的转化(从高到低或者从低到高)。当发送方把一个以太网帧发送完毕后,就不再发送其他码元(帧之间有着一定的间隔),这样发送方适配器上的电压就不再变化,于是接收方就可以很容易地找到以太网帧的结束位置,这个位置上往前数4B(效验和),就能确定数据字段的结束位置。

    2.当数据字段不足46B时候,必须通过填充字段来扩充数据字段的长度,使其满足最小长度64B的要求,那么接收端的MAC子层在从接收到的帧中剥去首部和尾部后把数据字段交给上一层协议后,上一层协议如何识别有效的数据字段的长度?

    D: 上一层协议要识别数据帧的数据字段的有效长度,一般是通过上层协议的类似“总长度”字段推断出来的。例如,如果上层协议使用的是IP协议的时候,其IP头中就有一个“总长度字段”,因此“总长度”字段加上填充字段,应当等于MAC帧中数据字段的长度。例如,当IP数据包的总长度为42B时,填充字段共有4B,当MAC帧将46B的数据交给IP层时,IP层就把其中的4B的填充字段丢弃。

    3. 抓包示意

    抓包实例

    4. 参考标准

    标准描述
    IEEE 802.3Carrier sense multiple access with collision detection (CSMA/CD) access method and physical layer specifications
    IEEE 802.3aeMedia Access Control (MAC) Parameters, Physical Layers, and Management parameters for 10Gb/s Operation
    RFC 894A Standard for the Transmission of IP Datagrams over Ethernet Networks
    RFC 1042A Standard for the Transmission of IP Datagrams over IEEE 802 Networks

    四、IEEE 802.3 帧格式

     

    1. 字段说明

    DMAC6目的MAC地址
    SMAC6源MAC地址
    Length2指后续数据的字节长度,但不包括CRC检验码
    DSAP1目的服务访问点
    SSAP1源服务访问点
    Data44~1498负载
    CRC4用于帧内后续字节差错的循环冗余检验(也称为FCS或帧检验序列)

    IEEE  802.3 帧格式

    IEEE802.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取值为其它时,就是纯的IEEE 802.3 帧。

    2. 抓包示意

    3. 参考标准

    标准描述
    IEEE 802.3Carrier sense multiple access with collision detection (CSMA/CD) access method and physical layer specifications
    IEEE 802.3aeMedia Access Control (MAC) Parameters, Physical Layers, and Management parameters for 10Gb/s Operation
    RFC 894A Standard for the Transmission of IP Datagrams over Ethernet Networks
    RFC 1042A Standard for the Transmission of IP Datagrams over IEEE 802 Networks
    展开全文
  • 802.11数据帧格式

    2013-06-01 11:41:46
    Short Interframe Space(SIFS):在802.11系列无线局域网中SIFS是固定值,SIFS是最小的间间隔,因此采用SIFS的节点具有访问无线链路的最高优先级。
  • 在介绍Modbus RTU数据帧格式之前,首先让我们先了解一下Modbus的通讯模式。 Modbus通讯模式 Modbus协议是典型的主-从通讯结构,链路中只能有一台主设备,可以有多台从设备。主设备向从设备发送请求指令,从设备对...
  • 异步同步通信数据帧格式

    千次阅读 2020-07-10 13:52:52
    1. 异步通信的特点及信息帧格式: 以起止式异步协议为例,下图显示的是起止式一帧数据的格式: 图1 起止式异步通信的特点是:一个字符一个字符地传输,每个字符一位一位地传输,并且传输一个字符时,总是以"起始位"开始,以...
  • LoRaWAN协议-MAC帧格式详解

    千次阅读 2021-12-14 10:03:55
    2 帧格式整体框图 3 MAC帧格式组成 3.1 分类 3.2 组成 4 MHDR(MAC Header) 4.1 帧类型FType 4.2 协议号Major 5 MIC消息校验码 5.1 校验算法 6 MACPayload 6.1 FHDR(Frame Header) 1)DevAddr 2)F...
  • 80211帧格式--管理帧、数据帧、控制帧 因为无线数据链路所带来的挑战,MAC被迫采用了许多特殊的功能,其中包括使用四个地址位。并非每个帧都会用到所有的地址位,这些地址位的值,也会因为MAC帧种类的不同而有所...
  • 通俗易懂的UART协议帧格式

    千次阅读 多人点赞 2021-01-19 21:00:45
    今天的内容关于UART的帧格式,比较简单,玩过单片机的小伙伴应该都知道。 UART的英文全称是:Universal Asynchronous Receiver/Transmitter,意为通用异步收发传输器。 UART因为有两根线数据线TX和RX,可以以...
  • 概述 本文章主要讲下蓝牙RFCOMM协议(bluetooth rfcomm)的帧格式,包括Address,Control,Length Indicator,Information,FCS等 一. 声明 本专栏文章我们会以连载的方式持续更新,本专栏计划更新内容如下: 第一篇:...
  • 以太网帧格式

    2013-12-07 09:26:11
    以太网帧格式,详细描写以太网的帧格式,具体到每个帧代表的意思。
  • LoRa PHY帧格式详细介绍

    千次阅读 2021-12-25 15:52:54
    1. LoRa PHY帧格式 2. Preamble部分 2.1可变Preamble部分 2.2 Sync Word部分 2.3 SFD部分 3. Header部分 3.1 Payload数据包长度 3.2 CR因子选择 3.3 PHY中CRC存在控制 3.4 Header数据校验 4. LoRa空口...
  • 802.11 帧格式和分类详解

    千次阅读 2021-01-18 11:22:37
    一、类型 802.11主要有三种类型: 管理 它的主要作用是维护接入点和无线客户端之间的通信,管理框架拥有以下子类型: Authentication De-authentication Association Request Association Response...
  • 用Wireshark抓包分析帧格式

    千次阅读 2021-02-05 01:12:39
    摘要:该文从Ethernet和wifi的帧格式着手进行了分析,并讨论了帧结构的各个字段的含义且对于该如何分析进行了举例,加深了读者对帧格式的理解,增强了wireshark的应用。关键词:wireshark;ethernet;wifi中图分类号...
  • 数据链路层 PPP协议的帧格式

    千次阅读 2021-10-29 08:18:31
    PPP 协议的帧格式 PPP 帧的首部和尾部分别为 4 个字段和 2 个字段。 标志字段 F = 0x7E (符号“0x”表示后面的字符是用十六进制表示。十六进制的 7E 的二进制表示是 01111110)。 地址字段 A 只置为 0xFF。地址...
  • 以太网帧格式 常用的以太网MAC帧格式有两种标准,一种是EthernetV2标准(即以太网V2标准),另一种是IEEE的802.3标准。使用得最多的是以太网V2的MAC帧格式。 以太网的帧有三个字段,也就是CSMACD这个协议规定了...
  • 802.11 MAC帧结构/帧格式

    千次阅读 2020-11-16 01:41:29
    802.11帧格式 上图是802.11帧的通用格式,具体不同类型的帧会有不同的变体,802.11帧一共有三种类型: 控制帧:用于竞争期间的握手通信和正向确认、结束非竞争期等; 管理帧:主要用于STA与AP之间协商、关系的控制...
  • 四种以太帧格式

    千次阅读 2020-08-11 17:38:52
    四种以太帧格式 一般我们讨论的以太帧头不包括它的前导码和帧定界。 1、前导码:7字节0x55,一串1、0间隔,用于信号同步 2、帧起始定界符:1字节0xD5(10101011),表示一帧开始 转自四种格式的以太网帧结构 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 221,072
精华内容 88,428
关键字:

帧格式

友情链接: wp-autoblog-trial.1.2.9.zip