首页 > 其他分享 >帧、报文和数据包的区别

帧、报文和数据包的区别

时间:2023-08-25 22:23:00浏览次数:40  
标签:以太 数据包 报文 区别 传输 802.3 IEEE 以太网

概念

帧(frame):数据链路层的协议数据单元,其中,帧头和帧尾包含一些必要的控制信息,比如同步信息、地址信息、差错控制信息等。

在以太网链路上的数据包称作以太帧。以太帧起始部分由前导码和帧开始符组成。后面紧跟着一个以太网报头,以MAC地址说明目的地址和源地址。以太帧的中部是该帧负载的包含其他协议报头的数据包(例如IP协议)。以太帧由一个32位冗余校验码结尾。它用于检验数据传输是否出现损坏。它包括三部分:帧头、数据部分、帧尾。

下面的表格显示了在以1500个八比特组为MTU传输(有些G比特以太网甚至更高速以太网支持更大的帧,称作巨型帧)时的完整帧格式。[note 2] 一个八比特组是八个位组成的数据(也就是现代计算机的一个字节)。

前导码帧开始符MAC 目标地址MAC 源地址802.1Q 标签 (可选)以太类型负载冗余校验帧间距
10101010 7个octet 10101011 1个octet 6 octets 6 octets (4 octets) 2 octets 46–1500 octets 4 octets 12 octets
  64–1522 octets  
72–1530 octets  
84–1542 octets

前导码和帧开始符

 一个帧以7个字节的前导码和1个字节的帧开始符作为帧的开始。快速以太网之前,在线路上帧的这部分的位模式是10101010 10101010 10101010 10101010 10101010 10101010 10101010 10101011。由于在传输一个字节时最低位最先传输(LSB),因此其相应的16进制表示为0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xD5。

10/100M 网卡(介质无关接口 PHY)一次传输4位(一个半字节)。因此前导符会成为7组0x5+0x5,而帧开始符成为0x5+0xD。1000M网卡(GMII)一次传输8位,而10Gbit/s(XGMII) PHY芯片一次传输32位。 注意当以octet描述时,先传输7个01010101然后传输11010101。由于8位数据的低4位先发送,所以先发送帧开始符的0101,之后发送1101。

报头

报头包含源地址和目标地址的MAC地址,以太类型字段和可选的用于说明VLAN成员关系和传输优先级的IEEE 802.1Q VLAN 标签。

帧校验码

帧校验码是一个32位循环冗余校验码,以便验证帧数据是否被损坏。

帧间距

当一个帧发送出去之后,发送方在下次发送帧之前,需要再发送至少12个octet(用于强调8bit)的空闲线路状态码。

以太帧类型

以太帧有很多种类型。不同类型的帧具有不同的格式和MTU值。但在同种物理媒体上都可同时存在。

  • 以太网第二版[note 3] 或者称之为Ethernet II 帧,DIX帧,是最常见的帧类型。并通常直接被IP协议使用。
  • Novell的非标准IEEE 802.3帧变种。
  • IEEE 802.2 逻辑链路控制 (LLC) 帧
  • 子网接入协议(SNAP)帧

所有四种以太帧类型都可包含一个IEEE 802.1Q选项来确定它属于哪个VLAN以及他的IEEE 802.1p优先级(QoS)。这个封装由IEEE 802.3ac定义并将帧大小从64字节扩充到1522字节(注:不包含7个前导字节和1个字节的帧开始符以及12个帧间距字节)。

IEEE 802.1Q标签,如果出现,需要放在源地址字段和以太类型或长度字段的中间。这个标签的前两个字节是标签协议标识符(TPID)值0x8100。这与没有标签帧的以太类型/长度字段的位置相同,所以以太类型0x8100就表示包含标签的帧,而实际的以太类型/长度字段则放在Q-标签的后面。TPID后面是两个字节的标签控制信息(TCI)。(IEEE 802.1p 优先级(QoS)和VLAN ID)。Q标签后面就是通常的帧内容。

Ethernet II

以太 II 帧 (也称作DIX以太网,是以这个设计的主要成员,DEC,Intel和Xerox的名字命名的。),把紧接在目标和源MAC地址后面的这个两字节定义为以太网帧数据类型字段。

例如,一个0x0800的以太类型说明这个帧包含的是IPv4数据报。同样的,一个0x0806的以太类型说明这个帧是一个ARP帧,0x8100说明这是一个IEEE 802.1Q帧,而0x86DD说明这是一个IPv6帧。

当这个工业界的标准通过正式的IEEE标准化过程后,在802.3标准中以太类型字段变成了一个(数据)长度字段。(最初的以太包通过包括他们的帧来确定它们的长度,而不是以一个明确的数值。)但是包的接收层仍需知道如何解析包,因此标准要求将IEEE802.2头跟在长度字段后面,定义包的类型。多年之后,802.3x-1997标准,一个802.3标准的后继版本,正式允许两种类型的数据包同时存在。实际上,两种数据包都被广泛使用,而最初的以太数据包在以太局域网中被广泛应用,因为他的简便和低开销。

为了允许一些使用以太II版本的数据报和一些使用802.3封装的最初版本的数据包能够在同一个以太网段使用,以太类型值必须大于等于1536(0x0600)。这个值比802.3数据包的最大长度1500byte (0x05DC)要更大。因此如果这个字段的值大于等于1536,则这个帧是以太II帧,而那个字段是类型字段。否则(小于1500而大于46字节),他是一个IEEE 802.3帧,而那个字段是长度字段。1500~1536(不包含)的数值未定义。

802.2 LLC

一些协议,尤其是为OSI模型设计的,会直接在802.2 LLC层上操作。802.2 LLC层同时提供数据报和面向连接的网络服务。

802.2以太网变种没有在常规网络中普遍使用。只有一些大公司的没有与IP网络融合的Netware设备。以前,很多公司Netware网络支持802.2以太网,以便支持从以太网到IEEE 802.5令牌环网或FDDI网络的透明桥接。当今最流行的数据包是以太网版本二,由基于IP协议的网络使用,将其以太类型设置为0x0800用于封装IPv4或者0x86DD来支持IPv6。

还有一个互联网标准来使用LLC/SNAP报头将IPv4封装在IEEE 802.2帧中。 这几乎从未在以太网中实现过。(但在FDDI以及令牌环网,IEEE 802.11和其他IEEE 802网络中使用)。如果不使用SNAP,IP传输无法封装在IEEE 802.2 LLC帧中。这是因为LLC协议中虽然有一种IP协议类型,却没有ARP。IPv6同样可使用LLC/SNAP在IEEE 802.2以太网上传播,但,如同IPv4,它也绝少被这样使用。(尽管LLC/SNAP的IPv6数据包在IEEE 802网络中被使用)。

子网接入协议

通过检查802.2 LLC头,可以确定他是否后继一个SNAP头。LLC头包含两个附加的8位地址字段,在OSI模型术语中称作服务访问点(SAPs)。当源和目标SAP都设置为0xAA时,就会使用SNAP服务。SNAP头允许以太类型值被任何IEEE 802协议使用,即使支持的是私有协议ID空间。在IEEE 802.3x-1997中,IEEE 以太标准被修改为明确允许紧接着MAC地址的16位字段即可用于长度字段,也可用于类型字段。

Mac OS使用 802.2/SNAP 数据包来实现以太网上的AppleTalk V2协议包("EhterTalk")。

Novell raw 802.3

Novell的"raw"802.3帧格式基于早期IEEE 802.3的工作。Novell以它作为起点来创建他自己的以太网上IPX协议的的第一个实现。他们没有使用LLC头,而是直接在长度字段后面开始IPX数据包。这不符合IEEE 802.3标准,但由于IPX的前两个字节一直是FF(而在IEEE 802.2 LLC中这种模式虽然理论上是可能的但实际上概率极其微小),实用中这种方式与其他以太实现共同存在。但须注意在一些早期的DECnet可能无法识别之。

直到90年代中期,Novell NetWare默认使用这个帧类型,而由于Netware曾如此流行,而那时IP还不是那么流行,在过去的一些时候,大多数的以太网上都运载着负载IPX的"raw" 802.3数据包。直到Netware 4.10,当使用IPX时,Netware才默认使用IEEE 802.2和LLC(Nerware 帧类型Ethernet_802.2)。

效率

我们可以计算以太网的效率和比特率:

 

Efficiency = Payload size Frame size {\text{Efficiency}}={\frac  {{\text{Payload size}}}{{\text{Frame size}}}}

当达到允许的最大负载值时可达到最高效率,对于无标签的以太网数据包是

而使用802.1Q VLAN标签时是

 

1500 1538 = 97.53 % {\displaystyle {\frac {1500}{1538}}=97.53\%},而使用802.1Q VLAN标签时是 1500 1542 = 97.28 % {\displaystyle {\frac {1500}{1542}}=97.28\%}

由效率中可计算比特率:

 不带802.1Q标签的100BASE-TX以太网的最大比特率是97.53 Mbit/s. 注:不带标签的最大帧尺寸=1518 + 20 (7-byte 前导符,1-byte 帧开始符, 12-byte 帧间距)= 1538。

矮帧

矮帧是一个尺寸不及IEEE 802.3定义的最小长度64字节的以太网帧。可能的原因是以太网碰撞,数据不足,网卡错误或软件错误。

注意

前导码和帧开始符无法在包嗅探程序中显示。这些信息会在OSI第1层被网卡处理掉,而不会传入嗅探程序采集数据的OSI第2层。也存在OSI物理层的嗅探工具以显示这些前导码和帧开始符,但这些设备大多昂贵,多用于检测硬件相关的故障。

前导码和帧开始符的位模式以位串的方式给出,最左的比特最先传输(而非以字节为单位,以太网传输最优先的位)。这个脚注与IEEE 802.3标准吻合。

第一版以太帧在早期以太网原型中使用,并使用8位MAC地址,从未在商业中使用

数据包

数据包(packet):在TCP/IP协议通信传输中的数据单元,也称为“包”。指自包含的,带有足够寻址信息,可独立地从源主机传输到目的主机,而不需要以来早期地源主机和目的主机之间交换信息以及传输网络地数据包。

一个数据包(packet)分成两个部分,包括控制信息,也就是表头资料(header),和资料本身,也就是负载(payload)。

我们可以将一个数据包比作为一封信,表头资料相当于信封,而数据包的数据部分则相当于信的内容。和信不同的是,有时候一个大数据包可以分成多个小数据包。

报文

是网路中交换与传输的数据单元,也是网络传输的单元,报文包含了将要发送的完整的数据信息,其长短不一。报文在传输过程中会不断地封装成分组、包、帧来传输,封装的方式就是添加一些控制信息组成的不受,那些就是报文头。

体系结构

一般来说,数据链路层发送的数据包称为frame,地址是链路层的地址,如mac地址。网络层发出的数据包称为packet,地址是网络层地址,如IP地址。传输层发出的数据包称为segment/datagram,地址是传输层地址,比如TCP的端口号

数据包的封装原理

 网络层传输的包(packet,又称分组),在数据链路层中传输的是“帧”(frame)。数据包到达数据链路层后加上数据链路层的协议头和协议尾就构成了一个数据帧。在每个帧的前部加上一个帧头部,在帧的结尾处加上一个帧尾部,把网络层的数据包作为帧的数据部分,就构成了一个完整帧。帧头和帧尾就是作为帧的起始和结束标志,也就是帧边界,如图所示。

 当数据数据链路层传输的时候叫做“帧”,当一个帧被接受并提交到第二次处理:剥开帧头帧尾,获得数据包(对于第二层来说它只认识帧头和帧尾,其他包括包头等都是帧承载的普通数据);然后这个包被提交到第三层:它能识别包头,得到被包在里面的信息(信息包含第四层TCP数据报头,对于第三层来说也是报头也是它承载的普通数据),第三层结束以后把去掉报头的数据给第四层,这些数据就是报文。

标签:以太,数据包,报文,区别,传输,802.3,IEEE,以太网
From: https://www.cnblogs.com/sawyerhan/p/17658034.html

相关文章

  • 组播与广播、单播的区别
    什么是组播?作为IP传输三种方式之一,组播指的是报文从一个源发出,被转发到一组特定的接收者,相同的报文在每条链路上最多有一份。相较于传统的单播和广播,组播可以有效地节约网络带宽、降低网络负载,所以被广泛应用于IPTV、实时数据传送和多媒体会议等网络业务中。组播和单播的区别是......
  • 【Java】Mapper # 和$的区别
    #'防止依赖注入'#是将传入的值当做字符串的形式,#防止依赖注入$是将传入的数据直接显示生成sql语句https://blog.csdn.net/hao65103940/article/details/79099159......
  • 传统项目管理VS敏捷项目管理区别及工具
    敏捷项目管理和传统项目管理在多个方面存在区别,包括但不限于以下几点:1、规划方式。传统项目管理更注重预先规划和控制,而敏捷项目管理更注重快速响应和调整。2、变更管理。传统项目管理对变更管理比较严格,需要经过详细的审批和评估,而敏捷项目管理更加灵活,更容易接受变更。3、文档量......
  • 视频集中存储/云存储平台EasyCVR国标GB28181协议接入的报文交互数据包分析
    安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。视频汇聚融合管理平台EasyCVR既具备传统安防视频监控的能力,......
  • Linux中su命令与sudo命令的区别
    su命令与sudo命令是Linux中比较常用的命令,sudo是以root用户方式执行命令,su是用来变更其他使用者的身份来执行命令。那么Linux中su命令与sudo命令的区别是什么?我们通过这篇文章详细讲解一下。1、关于密码两个命令的最大区别是:sudo命令需要输入当前用户的密码,su命令需要......
  • 模块化、组件化和插件化的区别
    单工程模式移动开发诞生,我们开发移动项目,我相信大多用的是单工程单任务的开发模式,二话不说,直接就开始写起,是不是这样呢?newProject->分包->写起。我相信都经历过,也写的比较爽,为什么呢?这种模式不涉及乱七八糟的处理方式,上手快,开发快,足够敏捷。那么原因是什么呢?MobileProject......
  • if if if 判断 和 if elif elif 判断有什么区别
    ififif判断和ifelifelif判断有什么区别在Python中,if语句和if-elif-else语句都用于条件控制,但它们在处理条件和执行逻辑上有一些区别。if语句:if语句用于执行一系列条件之一的代码块。你可以使用多个if语句来检查多个条件,但每个条件都会被逐一检查,即使前面的条件为真,后续......
  • 过滤器| 拦截器| 监听器的区别与使用
    骑士李四记录:1.过滤器(Filter):过滤器依赖于servlet容器。在实现上基于函数回调。几乎可以对所有请求进行过滤。缺点是一个过滤器实例只能在容器初始化时调用一次。2.拦截器(Interceptor)拦截器依赖于web框架,在SpringMVC中依赖于SpringMVC框架。实现上基于java反射机制,属于面向切......
  • java中 while循环和 do while循环的区别| while与do while的区别
    1、while循环:表示如果条件满足,程序一直循环执行,直到条件不满足为止。所以while循环的条件一般通过变量来进行控制,在循环体内对变量值做相应改变,以便在适当的时候退出,避免陷入死循环。inti=1;while(i<5){//业务逻辑if(i%2>0){System.out.print(“i是偶数”)}else{Sys......
  • pv ip uv区别
    PV访问量(PageView)页面访问量,每次刷新页面都加1IP访问数指独立IP访问数:计算一个独立的ip在一段时间内访问网站(在同一个局域网中对互联网访问时对外通常是同一个IP,如果该局域网中有10台终端在同一个计算时段内访问同一个网站,对该网站的独立IP访问数贡献为1,而不是10。而此时UV访问......