上期回顾: 【计算机网络】物理层
个人主页:GUIQU.
归属专栏:计算机网络
目录
正文
1. 数据链路层概述
1.1 定义
数据链路层位于物理层和网络层之间,它主要负责将物理层接收到的原始比特流组合成帧(frame),并进行差错检测和纠正,以及控制对物理介质的访问。简单来说,数据链路层就像是一个“帧加工厂”,把物理层传来的杂乱无章的比特流加工成有组织、有格式的帧,确保数据在相邻节点之间能够准确、有序地传输。
1.2 作用
- 帧封装:将从网络层传来的数据包(packet)添加帧头和帧尾,构成帧。帧头包含了源地址、目的地址等控制信息,帧尾通常包含用于差错检测的信息。这就好比给货物(数据包)添加包装(帧头和帧尾),注明发货地(源地址)和收货地(目的地址),以及一些检验标签(差错检测信息)。
- 差错控制:通过采用差错检测和纠正技术,如循环冗余校验(CRC),数据链路层能够检测出在传输过程中是否出现错误,并在一定程度上进行纠正。例如,当接收方收到一帧数据后,通过计算CRC校验值并与帧尾的校验值进行对比,如果两者不相等,则说明数据在传输过程中出现了错误,可能会要求发送方重新发送。
- 介质访问控制:在共享介质的网络环境中,数据链路层要协调多个节点对物理介质的访问,以避免冲突。比如在一个使用以太网技术的局域网中,多个设备共享同一条网线,数据链路层会采用如载波监听多路访问/冲突检测(CSMA/CD)或载波监听多路访问/冲突避免(CSMA/CA)等机制来确保各个设备能够公平、有效地访问介质。
2. 数据链路层的帧结构
2.1 帧头
帧头通常包含了多种重要的控制信息。以以太网帧为例,帧头包含了目的MAC地址(6字节)和源MAC地址(6字节)。目的MAC地址指明了这一帧数据要发送到的目标设备的物理地址,源MAC地址则标识了发送该帧数据的设备的物理地址。这就像信件的信封上写着收件人地址和寄件人地址一样,确保数据能够准确地在网络中的设备之间传递。
2.2 数据部分
帧的数据部分是从网络层传来的数据包,其长度一般有一定的限制。例如,在以太网中,数据部分的长度范围是46 - 1500字节。这个数据部分包含了真正要传输给上层(网络层)的信息,如IP数据包等。如果数据部分过短,可以通过填充(padding)的方式达到最小长度要求;如果过长,则需要进行分片处理,将其分成多个帧进行传输。
2.3 帧尾
帧尾主要用于差错检测。常见的方式是采用循环冗余校验(CRC)码。发送方在发送帧之前,会根据帧头和数据部分的内容计算出CRC校验码,并将其添加到帧尾。接收方在收到帧后,按照相同的算法重新计算CRC校验码,然后与帧尾的校验码进行比较。如果两者一致,那么大概率数据在传输过程中没有出现错误;如果不一致,则说明数据出现了错误,需要采取相应的措施,如丢弃该帧或者请求发送方重新发送。
3. 差错控制
3.1 差错检测
- 循环冗余校验(CRC):这是一种广泛应用的数据链路层差错检测方法。它的基本原理是基于多项式除法。发送方将数据看成一个多项式的系数,用一个生成多项式去除这个多项式,得到的余数作为CRC校验码添加到帧尾。接收方收到帧后,用相同的生成多项式去除包含数据和校验码的多项式,如果余数为0,则说明数据没有错误;如果余数不为0,则说明数据出现了错误。例如,在一些工业控制网络中,对数据的准确性要求很高,CRC校验能够有效地检测出数据在传输过程中由于电磁干扰等因素导致的错误。
- 奇偶校验:奇偶校验是一种较为简单的差错检测方法。它通过在数据中添加一个奇偶位,使得数据(包括奇偶位)中1的个数为奇数(奇校验)或偶数(偶校验)。接收方在收到数据后,检查1的个数是否符合奇偶性要求。如果不符合,则说明数据出现了错误。不过,奇偶校验只能检测出奇数个错误,对于偶数个错误则无法检测出来。这种方法通常用于对错误检测要求不高、数据传输速率较低的场合,如一些简单的串口通信。
3.2 差错纠正
- 自动重传请求(ARQ):当接收方检测到数据出现错误时,会向发送方发送一个请求,要求发送方重新发送出错的数据。ARQ主要有三种方式:停止 - 等待ARQ、回退N帧ARQ和选择性重传ARQ。
- 停止 - 等待ARQ:发送方发送一帧数据后,等待接收方的确认。如果收到确认(ACK)信号,则发送下一个帧;如果收到否定确认(NAK)信号或者在一定时间内没有收到确认信号,则重新发送该帧。这种方式简单,但效率较低,因为发送方在等待确认的过程中不能发送其他帧。
- 回退N帧ARQ:发送方可以连续发送多个帧,当接收方检测到某一帧出错时,会发送一个NAK信号,发送方收到NAK信号后,会重新发送从出错帧开始的所有后续帧。这种方式比停止 - 等待ARQ效率高,但如果出错帧后面的帧实际上是正确的,重新发送会造成一定的资源浪费。
- 选择性重传ARQ:同样,发送方可以连续发送多个帧。当接收方检测到某一帧出错时,只请求发送方重新发送出错的那一帧,而不是后续的所有帧。这种方式能够更有效地利用网络资源,但实现起来相对复杂。
4. 介质访问控制
4.1 载波监听多路访问/冲突检测(CSMA/CD)
- 原理:这是以太网中常用的介质访问控制方法。在发送数据之前,每个节点首先要监听介质(如网线),查看是否有其他节点正在发送数据(载波监听)。如果介质空闲,则可以发送数据;如果介质忙,则需要等待。在发送数据的过程中,节点还要继续监听介质,以检测是否发生冲突(冲突检测)。如果检测到冲突,发送方会立即停止发送,并发送一个阻塞信号,让其他节点知道发生了冲突。然后,发送方会等待一段随机时间后,再次尝试发送数据。
- 应用场景:在早期的以太网局域网中,如10Base - T网络(传输速率为10Mbps),多个计算机连接到同一集线器(hub),共享同一条物理介质。CSMA/CD机制能够有效地协调这些计算机对介质的访问,避免数据冲突,确保数据能够顺利传输。
4.2 载波监听多路访问/冲突避免(CSMA/CA)
- 原理:与CSMA/CD类似,节点在发送数据之前也要先监听介质是否空闲。但不同的是,CSMA/CA主要用于无线网络环境。在无线网络中,由于信号传播的特殊性,很难像在有线网络中那样及时检测到冲突。所以,CSMA/CA采用了一些冲突避免的策略。例如,在发送数据之前,节点会先发送一个小的请求发送(RTS)信号,接收方收到RTS信号后,会回复一个允许发送(CTS)信号。只有当发送方收到CTS信号后,才会开始发送数据。这样可以在一定程度上避免冲突的发生。
- 应用场景:在Wi - Fi网络(如802.11标准)中,多个无线设备(如智能手机、笔记本电脑等)通过接入点(AP)连接到网络。CSMA/CA机制能够协调这些无线设备对无线介质的访问,确保数据传输的稳定性和高效性。
结语
感谢您的阅读!期待您的一键三连!欢迎指正!