Bootstrap

数据链路层分析

目录

一、数据链路层的概述

二、终端之间的通信

三、帧格式

1、Ethernet II 和IEE802.3 两种帧的格式

2、Ethernet II详解

3、IEEE 802.3详解

MTU介绍

1、MTU的作用

2、不同网络环境下的MTU

三、数据帧传输

        1、数据链路层基于MAC 地址进行帧的传输。

2、MAC地址

3、单播、管播和组播

1、单播

 2、广播

 3、组播

4、数据帧的收发


一、数据链路层的概述

        数据链路层(data link layer),是OSI 参考模型中的第二层,介乎于物理层和网络层之间。
        数据链路层在物理层提供服务的基础上向网络层提供服务,其最基本的服务是将源自物理层的数据可靠地传输到相邻节点的目标机网络层。
        数据链路层的传输单元:帧。
        工作在二层的网络设备:交换机。

二、终端之间的通信

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

三、帧格式

1、Ethernet II 和IEE802.3 两种帧的格式

        Ethernet II 帧格式,是上世纪80 年代初提出的DIX v2 格式。Ethernet II 后来被IEEE 802 标准接纳,并写进了IEEE 802.3x-1997 的3.2.6节。
        IEEE 802.3 帧格式,是1983 年提出的。
        Ethernet II 和IEEE 802.3 两种格式的主要区别在于Ethernet II 格式中包含一个Type 字段,标识以太帧处理完成之后将被发送到哪个上层协议进行处理,IEEE 802.3 格式中,同样的位置是长度字段。
如何区别Ethernet II 和IEEE 802.3:(如下图1所示)
  • 不同的Type 字段值可以用来区别这两种帧的类型。
  • 当Type 字段值小于等于1500(或者十六进制的0x05DC)时,帧使用的是IEEE 802.3 格式。
  • 当Type 字段值大于等于1536 (或者十六进制的0x0600)时,帧使用的是Ethernet II 格式。
  • 以太网中大多数的数据帧使用的是Ethernet II 格式。
不管是哪一种帧都具有帧头帧尾结构:
帧结构
说明
帧头目标MAC 地址 + 源MAC 地址 + Type 类型
帧尾
FCS 帧校验序列(帧校验序列字段,用于检验传输过程中帧的完整性。)
图1 Ethernet II 和IEEE802.3 帧的区别

2、Ethernet II详解

Ethernet II 的帧中各字段说明如下:

字段长度(字节)
D.MAC(Destination MAC)6B
标识帧的接收者
S.MAC(Source MAC)6B标识帧的发送者3
Type2B
用于标识数据字段中包含的上层协议:
大于等于0x0600()
0x0800 IP 协议帧
0x0806 ARP 协议帧
Data46 B<= Data  <=1500 B网络层数据
FCS(循环冗余校验)4B一种错误检测机制

         数据部分的最小值46字节原因:这一要求主要是为了支持最短帧长度的要求,并确保冲突检测机制(如CSMA/CD)能够在共享介质网络中正常工作。当发送的数据不足46字节时,将以零或其他指定模式进行填充,以达到最小帧长度要求。

3、IEEE 802.3详解

 IEEE 802.3 的帧中各字段说明如下:

字段长度(字节)说明
Length(长度)2B
小于等于0x05DC
Data 字段包含的字节数
LLC (Logical Link Control,逻辑链路控制)
 
3B
组成字段:
①目的服务访问点DSAP(Destination Service Access Point)
②源服务访问点SSAP(Source Service Access Point)
③Control
SNAP (Sub-network Access Protocol,子网访问协议)5B
组成字段
①机构代码(Org Code)
②类型(Type)
        Control字段的具体格式和内容会根据所使用的帧类型(I帧(信息帧)、S帧(监控帧)、U帧(无编号帧))有所不同,但其核心目的是为了确保数据的有效传输、错误检测与纠正、以及对通信过程的精确控制。通过这种方式,LLC子层能够在不同的网络环境下提供灵活而强大的数据链路层服务。         
       SAP 服务访问点,它是一个层次系统的上下层之间进行通信的接口,N 层的SAP 就是N+1 层可以访问N 层服务的地方。SSAP 可以理解为来源设备的服务点。DSAP 可以理解为目的设备的服务点。
        Org Code 三个字节都为0。Type 字段的含义与Ethernet II 帧中的Type 字段相同。

MTU介绍

        MTU,全称为Maximum Transmission Unit(最大传输单元),是指在网络中通过特定链路层协议传输的数据帧或数据包的最大尺寸(以字节为单位)。MTU的大小直接影响网络通信的效率和性能。

1、MTU的作用

  • 避免分片:当一个数据包的大小超过了路径上任意一跳的MTU时,这个数据包就需要被分片。分片增加了网络负担,并可能导致各种问题,如丢失部分分片导致整个数据包需要重传。因此,设置合适的MTU可以减少不必要的分片。
  • 提高传输效率:选择适当的MTU值可以帮助优化网络性能,减少延迟并提高吞吐量。过大的MTU值可能会增加传输失败的风险,而过小的MTU值则会导致过多的头部开销,降低有效载荷的比例。

2、不同网络环境下的MTU

  • 以太网:传统以太网的标准MTU是1500字节,这包括了IP头和TCP/UDP头等所有信息。不过,随着技术的发展,例如使用Jumbo Frames,某些环境下MTU可以扩展到9000字节甚至更高。
  • PPPoE(Point-to-Point Protocol over Ethernet):由于额外的PPPoE头占用8字节,因此在这种情况下,MTU通常需要减小到1492字节来适应这种封装方式。
  • IPv6:IPv6默认的最小MTU是1280字节,确保在任何支持IPv6的网络中都能正常工作,同时允许更大的MTU以提高效率。
  • IEEE802.3802.3 对数据帧的长度都有一个限制,其最大值是1492 字节

三、数据帧传输

        1、数据链路层基于MAC 地址进行帧的传输。

        以太网在二层链路上通过MAC 地址来唯一标识网络设备,并且实现局域网上网络设备之间的通信。MAC 地址也叫物理地址,大多数网卡厂商把MAC地址烧入了网卡的ROM 中。发送端使用接收端的MAC 地址作为目的地址。以太帧封装完成后会通过物理层转换成比特流在物理介质上传输。

2、MAC地址

        MAC 地址,也称为物理地址,是被烧入到网卡的全球唯一标识。

        MAC 地址由两部分组成,分别是供应商代码和序列号。其中前24 位代表该供应商代码,由IEEE 管理和分配。剩下的24 位序列号由厂商自己分配。

         如同每一个人都有一个名字一样,每一台网络设备都用物理地址来标识自己,这个地址就是MAC 地址。

        MAC 地址包含两部分:前24 比特是组织唯一标识符(OUI,Organizationally Unique Identifier),由IEEE 统一分配给设备制造商。例如,华为的网络产品的MAC 地址前24 比特是0x00e0fc。后24 位序列号是厂商分配给每个产品的唯一数值,由各个厂商自行分配。

        MAC 地址 = 厂家标识 + 内部编号,实现了全球唯一。可以使用命令ipconfig /all 查看自己的MAC 地址。
        以太帧封装完成后会通过物理层转换成比特流在物理介质上传输。
局域网上的帧可以通过三种方式发送:
  • 单播
  • 广播
  • 组播

3、单播、管播和组播

1、单播

        单播是一种网络通信模式,其中数据从单一的一个发送者传输到单一的一个特定的接收者。

        每个主机接口有一个MAC 地址唯一标识,MAC 地址的OUI(组织唯一标识符)中,第一字节第8 个比特表示地址类型。( 为0表示单播,为1表示组播
        对于主机MAC 地址,这个比特固定为0,表示目的MAC 地址为此MAC 地址的帧都是发送到某个唯一的目的端。
        在共享式网络中,所有主机都能收到源主机发送的单播帧,但是其他主机发现目的地址与本地MAC 地址不一致后会丢弃收到的帧,只有真正的目的主机才会接收并处理收到的帧。如下图所示:

 单播案例:

 2、广播

        广播是一种网络通信模式,其中数据从一个发送者传输到同一网络中的所有其他设备。

        广播帧的目的MAC 地址为十六进制的 FF:FF:FF:FF:FF:FF ,所有收到该广播帧的主机都要接收并处理这个帧。
        广播方式会产生大量流量,导致带宽利用率降低,进而影响整个网络的性能。
        当需要网络中的所有主机都能接收到相同的信息并进行处理的情况下,通常会使用广播方式。

 广播案例:

 3、组播

        组播是一种网络通信模式,其中数据从一个发送者传输到一组特定的接收者。

        组播比广播更加高效。组播转发可以理解为选择性的广播,主机侦听特定组播地址,接收并处理目的MAC 地址为该组播MAC 地址的帧。组播MAC 地址和单播MAC 地址是通过第一字节中的第8 个比特区分的。组播MAC 地址的第8 个比特为1。
        当需要网络上的一组主机(而不是全部主机)接收相同信息,并且其他主机不受影响的情况下通常会使用组播方式。

        注意:单播的目标地址第八位为0,组播的目标地址第八位为1,广播的目标地址为FF:FF:FF:FF:FF:FF

4、数据帧的收发

        当主机接收到的数据帧所包含的目的MAC 地址是自己时,会把以太网封装剥掉后送往上层协议。
        帧从主机的物理接口发送出来后,通过传输介质传输到目的端。共享网络中,这个帧可能到达多个主机。主机检查帧头中的目的MAC 地址,如果目的MAC 地址不是本机MAC 地址,也不是本机侦听的组播或广播MAC 地址,则主机会丢弃收到的帧。
        如果目的MAC 地址是本机MAC 地址,则接收该帧,检查帧校验序列(FCS)字段,并与本机计算的值进行对比来确定帧在传输过程中是否保持了完整性。如果帧的FCS 值与本机计算的值不同,主机会认为帧已被破坏,并会丢弃该帧。如果该帧通过了FCS 校验,则主机会根据帧头部中的Type 字段来确定将帧发送给上层哪个协议处理。本例中,Type 字段的值为0x0800,表明该帧需要发送到IP 协议上处理。在发送给IP 协议之前,帧的头部和尾部会被剥掉。

 

;