链路层简介
概念

数据链路层OSI中的一种协议层,数据链路层用于在网段节点之间通过物理媒介传输数据,通常指以太网、无线局域网等通信手段。数据链路层提供了在网络的两个实体之间传输数据的功能,并且提供了差错检测用于纠正物理层中发生的错误。链路层是软件和硬件的结合体,链路层的主体部分是在网络适配器,又叫网络接口卡上实现的,而位于网络适配器的核心是链路层控制器,该控制器是实现了众多链路层服务的专用芯片,因此链路层的许多功能是硬件实现的,但任有部分链路层是由运行与主机CPU 上的软件中实现的,它们实现了高层链路层功能,如:组装链路层寻址信息和激活控制器硬件。
链路层中的协议定义了互联网络的两个设备之间传输数据的规范,数据链路层需要以通信介质 作为传输载体,通信媒介包含双绞铜线、光纤、电波等红外装置。在数据分发装置上有 交换机、网桥、中继器 等中转数据,链路层中的任何设备又被称为节点(node),而沿着通信路径相邻节点之间的通信信道被称为 链路(link)。实际上,在链路层上传输数据的过程中,链路层和物理层都在发挥作用。因为在计算机中,信息是以 0 1 这种二进制的形式进行传输,而实际的链路通信却是以电压的高低、光的闪灭以及电波的频谱来进行的,所以物理层的作用就是把二进制转换成为链路传输所需要的信息来进行传输。数据链路层传输也不只是单个的 0 1 序列,它们通常是以 帧为单位进行的。
关键特点
打包成帧
在每个网络层数据报在传输之前,几乎所有的链路层协议都会将数据报用链路层封装起来。数据链路层从网络层获取数据后将其封装成为 帧,如果帧太大的话,数据链路层会将大帧拆分为一个个的小帧,小帧能够使传输控制和错误检测更加高效。一个帧由 Header、Payload Field、Trailer 组成,网络层数据报就封装在 Payload Field 字段中。根据不同的物理介质,每个帧的结构也不同。帧的组成如下:
- 帧头(Frame header):它包含帧的源地址和目的地址
- 有效载荷(Payload Field):它包含要传递的数据和信息
- 尾部标记(Trailer):它包含错误检测和错误纠正位
- 标记(Flag):它标记了帧的开始和结束
Flag 位位于帧的开头和结尾,两个连续的标志指示帧的结束和开始
帧的类型主要有两种,固定大小的帧和可变大小的帧。
- 固定大小的帧(Fixed-sized Framing):表示帧的大小是固定的,帧的长度充当帧的边界,因此它不需要额外的边界位来标识帧的开始和结束。
- 可变大小的帧(Sized Framing):表示每个帧的大小是不固定的,因此保留了其他机制来标记一帧的结束和下一帧的开始。它通常用于局域网,在可变大小的帧中定义帧定界符的两种方法是
- 长度字段(Length Field): 使用长度字段来确定帧的大小。它用于以太网(IEEE 802.3)
- 结束定界符(End Delimiter): 经常用于令牌环
链路接入
在链路层中,有一个Mac地址的概念,它用于标识接入链路层中的节点(主机、路由器、交换机…),如图:
MAC 地址长 48 bit,在使用网卡(NIC) 的情况下,MAC 地址一般都会烧入 ROM 中。因此,任何一个网卡的 MAC 地址都是唯一并且固定的,MAC 地址的结构如下:
MAC 地址中的 3 - 24 位表示厂商识别码,每个 NIC 厂商都有特定唯一的识别数字。25 - 48 位是厂商内部为识别每个网卡而用。因此,可以保证全世界不会有相同 MAC 地址的网卡。注意: MAC地址可能也会有例外,即 MAC 地址也会有重复的时候,比如网卡的MAC地址被手动修改了。但是问题不大,只要两个 MAC 地址是属于不同的数据链路层就不会出现问题。
那么有了IP地址,为什么还需要MAC地址了?参考文章:
- https://mp.weixin.qq.com/s/jiPMUk6zUdOY6eKxAjNDbQ 描述了网络是如何从无到有发展起来的,非常牛逼的文章
https://blog.csdn.net/weixin_43919932/article/details/122435157
可靠交付
网络层提供的可靠交付更多指的是端系统到端系统的交付,而数据链路层提供的可靠交付更多指的是单端链路节点到节点地的传送。当链路层协议提供可靠交付时,它能保证无差错地经链路层移动每个网络层数据报。链路层提供可靠交付的方法和 TCP 类似,也是使用确认和重传取得的。链路层的可靠交付通常用于出错率很高的链路,例如无线链路,它的目的是在本地纠正出错的帧,而不是通过运输层或应用层协议强制进行端到端的数据传输。对于出错率较低的链路,比如光纤、同轴电缆和双绞线来说,链路层的交付开销是没有必要的,由于这个原因,这些链路通常不提供可靠的交付。
差错校验和纠正
链路层数据以帧的形式发送,在发送的过程中,接收方节点的链路层硬件可能会由于信号干扰或者电磁噪音等原因错误的把 1 识别为 0 ,0 识别为 1。这种情况下没有必要转发一个有差错的数据报,所以许多链路层协议提供一种机制来检测这样的比特差错。通过让方节点在帧中包括差错检测比特,让接收节点进行差错检查,以此来完成这项工作,差错检测和纠正的技术主要有:
奇偶校验:它主要用来差错检测和纠正
- 校验和:这是一种用于运输层检验的方法
- 循环冗余校验:它更多应用于适配器中的链路层
有线网络和无线网络
有线网络
有线网络就是通过线连接,现在的家庭网络,以前上网基本都通过电话线接入,现在都是光纤入户,通过光缆接入网络,然后在通过网线连接电脑和路由器设备。
注意: 光纤是目前传输速度最快的线缆了,而且抗干扰能力强
无线网络
无线网络和有线网络其实都是使用同一种协议(TCP/IP协议),只是传输介质不一样罢了。无线网络使用无线电波传输,这样无线电有频率和波段,大多数咱们使用的无线路由器WiFi都是2.4G或5G 波段的信号传输。与有线传输相比,无线传输具有许多优点,或许最重要的是,它更灵活。无线信号可以从一个发射器发出到许多接收器而不需要电缆。所有无线信号都是随电磁波通过空气传输的,电磁波是由电子部分和能量部分组成的能量波。在无线通信中频谱包括了9khz到300000Ghz之间的频率。每一种无线服务都与某一个无线频谱区域相关联。无线信号也是源于沿着导体传输的电流。电子信号从发射器到达天线,然后天线将信号作为一系列电磁波发射到空气中。
