查看原文
其他

802.3?以太网?看完你就懂了

Firefly 知晓编程 2021-11-06

关注、星标公众,不错过精彩内容

上一篇文章《以太网数据包结构》讲解了以太网数据包结构,其中牵扯到了802.3,以太网数据包等名词,本文将详解讲解一下这方面的内容。

在TCP/IP世界中,以太网IP数据报的封装是在RFC894中定义的,IEEE802网络的IP数据报封装是在RFC1042中定义的。最常使用的封装格式是RFC 894定义的格式。下图显示了两种不同形式的封装格式。

从上图看到,两种帧格式都采用48bit(6字节)的目的地址和源地址。

接下来的2个字节在两种帧格式中互不相同。

在802标准定义的帧格式中,长度字段是指它后续数据的字节长度,但不包括CRC检验码。

以太网的类型字段定义了后续数据的类型。而在802标准定义的帧格式中,类型字段则由后续的子网接入协议的首部给出。

幸运的是,802定义的有效长度值与以太网的有效类型值无一相同,这样,就可以对两种帧格式进行区分。

长度/类型有两个意义,小于1518,代表后面字段的长度(也就是IEEE802.2/802.3(RFC1042)),大于1518,代表不同的类型(以太网的封装格式(RFC894))

0800 指IP数据类型

0806 指ARP协议,通过IP地址获得对应的MAC地址,称为地址解析协议

8035 指RARP协议,通过MAC地址来获得对应的IP地址,称为逆向地址解析协议

在以太网帧格式中,类型字段之后就是数据。而在802帧格式中,后面是3字节的802.2LLC,它是由目的服务访问点(DestinationService Access Point,DSAP)、源服务访问点(SourceService Access Point,SSAP)和Ctrl字段组成,DSAPSSAP默认值是0xaaCtrl默认是3。再接下来的2个字节类型字段和以太网帧格式一样。

802.3标准定义的帧和以太网的帧都有最小长度要求。802.3规定数据部分必须至少为38字节,而对于以太网,则要求最少要有46字节。为了保证这一点,必须在不足的空间插入填充(pad)字节。

下面只讲最常用的以太网的封装格式(RFC894

特别说明:上面的目的地址和源地址是MAC,不是IP!!!!

MAC地址解析

MAC地址前3个字节:组织身份标记  后3个字节:组织自行分配

第1个字节

b0:0表示单播,1表示组播

b1:0表示被某个组织使用,1表示个人使用

例子:

02-00-00-00-00-01:本地分配

00-50-C2-xx-xx-xx:ST的MAC地址

01-00-5E-xx-xx-xx:IPv4的多播地址

FF-FF-FF-FF-FF-FF:广播地址


上文说到,以太网和802.3对数据帧的长度都有一个限制,其最大值分别是1500和1492字节。链路层的这个特性称作MTU,最大传输单元。不同类型的网络大多数都有一个上限。如果IP层有一个数据包要传,而且数据的长度比链路层的MTU还大,那么IP层就需要进行分片,把数据包分成若干片,这样每一片都小于MTU,IP分片的问题会在讲解IP协议的时候讲解。下图列出了一些典型的MTU值。

我们将用netstat命令打印出网络接口的MTU。

- i参数将打印出接口信息,- n参数则打印出IP地址,而不是主机名字。

这个命令打印出每个接口的MTU、输入分组数、输入错误、输出分组数、输出错误、冲突以及当前的输出队列长度。

STM32 IIC详解

☛STM32 SPI详解

☛STM32 GPIO详解

☛STM32 延时函数的四种方法

设计一款兼容ST207和GD207的开发板

: . Video Mini Program Like ,轻点两下取消赞 Wow ,轻点两下取消在看

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存