计算机网络——数据链路层

数据链路层

数据链路层属于计算机网络的低层。数据链路层使用的信道主要有以下两种类型:

  1. 点对点信道。这种信道使用一对一的点对点通信方式。PPP协议则是目前使用最广泛的点对点协议。
  2. 广播信道。这种信道使用一对多的广播通信方式,因此过程比较复杂。广播信道上连接的主机很多,因此必须使用专用的共享信道协议来协调这些主机的数据发送。对于采用共享广播信道的有线局域网普遍使用CSMA/CD协议,而无线局域网则使用CSMA/CA协议,将在后文介绍。

局域网虽然是个网络,但我们并不把局域网放在网络层中讨论。这是因为在网络层要讨论的间题是多个网络互连的间题,是讨论分组怎样从一个网络,通过路由器,转发到另一个网络。在本章中我们研究的是在同一个局域网中,分组怎样从一台主机传送到另一台主机,但并不经过路由器转发。从整个的互联网来看,局域网仍属于数据链路层的范围。

本章首先介绍点对点信道和在这种信道上最常用的点对点协议PPP。然后再用较大的篇幅讨论共享信道的局域网和有关的协议。

本章最重要的内容是:

  1. 数据链路层的点对点信道和广播信道的特点,以及这两种信道所使用的协议(PPP协议以及CSMA/CD协议)的特点。
  2. 数据链路层的三个基本问题:封裝成帧,透明传输和差错检测。
  3. 以太网MAC层的硬件地址。
  4. 适配器,转发器,集线器,网桥,以太网交换机的作用以及使用场合。

一、数据链路层的功能

数据链路层是五层参考模型中的第二层,位于物理层之上,网络层之下。它在整个网络通信过程中扮演着至关重要的角色,主要负责确保在同一网络内两个相邻节点之间的数据能够可靠地传输。这一层的工作包括管理和控制数据的传输,以防止在传输过程中发生数据丢失、错误或重复,从而为网络层提供高质量的服务。

为了深入理解数据链路层的功能,我们需要先弄清楚几个核心概念:链路、数据链路和帧。

链路、数据链路、帧的概念

  1. 链路
    链路是指两个直接相连的网络设备(如计算机、交换机等)之间的物理连接介质。链路可以是铜缆、光纤,或者无线电波等传输媒介。链路的作用是提供一个物理通道,使得两个设备能够在其上进行数据传输。

  2. 数据链路
    数据链路不仅包括物理链路,还涉及在该链路上传输的数据的逻辑控制,也就是通信协议。数据链路定义了如何在物理链路上组织、管理和控制数据的传输。数据链路层的主要任务就是通过这些逻辑控制机制,保证数据在链路上的可靠传输。


  3. 数据链路层对等实体之间进行逻辑通信的协议数据单元,帧是数据链路层传输的基本单位。在数据链路层,数据包被封装成帧,以便在网络中传输。每一帧包含了数据本身以及控制信息,如源地址、目的地址、帧序号、校验和等。这些控制信息有助于接收方识别数据、验证数据的完整性,以及在必要时进行错误恢复。

(一)为网络层提供服务

数据链路层的一个关键任务是为网络层提供服务。具体来说,数据链路层的服务类型通常分为三种:无确认无连接服务、有确认无连接服务和面向连接的服务。

  • 无确认无连接服务:这种服务类似于“尽力而为”的传输,数据链路层不提供帧的确认和重传机制。数据帧在传输过程中可能会丢失、重复或出现错误,但数据链路层并不对这些问题进行处理,由高层处理。这种服务通常用于那些对传输可靠性要求不高或者是误码率较低的场合,速度快,但缺乏保障,例如用于以太网。

  • 有确认无连接服务:在这种服务中,数据链路层为每一个帧提供确认机制。当接收方收到帧后,会发送确认信号给发送方。如果发送方未收到确认,将会重传该帧。这种服务适用于需要一定传输可靠性的场合,该服务用于误码率较高的信道,例如无线通信。

  • 面向连接的服务:这种服务在传输前需要建立连接,并在数据传输完成后释放连接。它提供了一种可靠的传输机制,通过流量控制和差错控制,确保数据帧按序到达,并且没有丢失或重复。这种服务适用于需要高度可靠传输的场合,如远程登录或数据库访问。

不存在无确认面向连接的服务,因为要建立连接一定要相互确认。

(二)链路管理

链路管理是数据链路层的重要功能之一。它主要负责在两个相邻节点之间建立、维护和释放链路,以确保数据能够顺利传输。在链路的建立阶段,数据链路层会进行必要的协商,确保链路的配置符合传输需求。在传输过程中,数据链路层通过持续监控链路状态,来维持链路的有效性和可靠性。如果在传输过程中链路发生故障,数据链路层将采取相应措施,如重新建立链路或报告错误。当数据传输完成后,数据链路层负责释放链路资源,确保不会对后续通信产生干扰。这主要用于面向连接的服务。

(三)封装成帧

封装成帧是指在一段数据的前后分别添加首部和尾部,构成帧。封装成帧是数据链路层的核心功能之一,帧是数据链路层的数据传送单元。在数据链路层,来自网络层的数据包被封装成帧,添加了包括源地址、目的地址、帧序号、校验和等控制信息。这些控制信息对数据传输的正确性和有效性至关重要。

帧的封装过程不仅仅是对数据进行简单的打包,还涉及到数据链路层对数据传输的管理。比如,通过添加帧序号,接收方可以判断帧的顺序,确保数据按序重组;通过校验和,接收方可以验证数据的完整性,发现并纠正传输过程中可能出现的错误。

下面是一些重要的概念:

  • 帧长:帧长是指一个帧的总长度,它由数据部分的长度和帧首部与尾部的长度之和构成。帧首部和尾部包含了用于控制和管理数据传输的关键信息,如地址信息、校验码等,因此帧长不仅仅取决于数据的长度,还包括这些控制信息的长度。

  • 帧定界:帧定界指的是通过在帧的首部和尾部添加特定的控制信息来标识帧的边界。这些控制信息使得接收方能够明确区分每个帧的起始和结束位置,确保数据传输的完整性和正确性。

  • 帧同步:帧同步是指接收方能够在接收到的连续二进制比特流中,准确地识别出帧的起始和终止位置。例如,在HDLC(高级数据链路控制)协议中,标志位F(01111110)用于表示帧的开始和结束。在数据传输过程中,一旦检测到标志位F,接收方便认为这是一个帧的开始;当再次检测到标志位F时,则认为这是帧的结束。这种机制确保了接收方能够正确同步并解析收到的数据帧。

  • 最大传送单元(MTU):最大传送单元(MTU)是指数据链路层中帧的数据部分所允许的最大长度。设定MTU的目的在于平衡数据传输的效率与可靠性。帧长过大会增加传输错误的概率,因为较长的帧在传输过程中更容易受到干扰和错误影响。然而,帧的数据长度过短则会导致传输效率的降低,因为在较小的数据帧中,控制信息占据了相对较大的比例。因此,MTU规定了帧的数据部分的长度上限,以确保在传输过程中既能保持较高的传输效率,又能将错误率控制在合理范围内。

(四)透明传输

在数据传输过程中,数据链路层需要保证帧能够被透明地传输到接收方。这意味着帧在传输过程中,不应受到传输介质的限制,必须能够无损地到达接收方。然而,在某些情况下,帧的数据内容可能会与帧的控制信息(如帧的起始或结束标志01111110)产生冲突,从而导致帧的传输出现问题。

为了避免这种情况,数据链路层引入了“透明传输”技术。例如,在HDLC(高级数据链路控制)协议中,通过在帧的内容中出现的标志位前插入“转义字符”来解决冲突问题。这种方法确保了接收方能够正确识别帧的边界,并且不会将帧的数据内容误认为是控制信息。因此,透明传输保障不论所传的数据是什么样的比特组合,都能够按原样无差错地在数据链路上进行传输。

(五)流量控制

流量控制是数据链路层的一项关键功能,其主要目的是协调发送方和接收方之间的数据传输速率,防止由于发送方传输速度过快而导致接收方的缓冲区溢出,从而造成数据丢失或出错。由于链路两端的节点在工作速率和缓存空间上存在差异,发送方的发送能力可能会超过接收方的接收能力。如果不对发送方的发送速率进行适当的限制,前面尚未接收完毕的帧将会被后续不断发送来的帧“淹没”,导致数据的丢失。因此,流量控制的本质在于通过某种机制限制发送方的发送速率,使其不会超过接收方的接收能力。

这种流量控制的实现依赖于某种反馈机制,通过该机制,接收方可以通知发送方当前的接收状态。发送方据此决定是否可以继续发送下一帧,或者需要暂时停止发送,等待接收方处理完当前的数据帧后再继续发送。在OSI参考模型中,流量控制的功能位于数据链路层,它主要控制的是相邻节点之间的数据链路上的流量。而在TCP/IP体系结构中,流量控制的功能则被移到了传输层,负责控制从源端到目的端之间的整体流量。两者虽然在控制对象上有所不同,但其核心目标都是确保数据传输的稳定性和可靠性。

在数据链路层中,常用的流量控制机制包括“停止-等待协议”和“滑动窗口协议”。

  • 停止-等待协议:这种协议的工作原理非常简单。发送方每发送一个帧后,必须等待接收方的确认信号(ACK),才能继续发送下一个帧。如果发送方没有收到确认,则会重发该帧。尽管这种方法可以有效地防止数据丢失,但由于发送方必须在每次发送后都等待确认,因此传输效率较低,尤其是在高延迟的链路上,等待时间可能会大幅降低整体数据传输速率。

  • 滑动窗口协议:为了提高传输效率,滑动窗口协议允许发送方在未收到确认的情况下连续发送多个帧。发送方维护一个滑动窗口,窗口内的帧可以一次性发送出去,而无需等待每个帧的确认。接收方则通过发送确认帧(ACK)来逐步“滑动”窗口,确认哪些帧已正确接收。滑动窗口的大小决定了发送方可以连续发送的帧的数量,从而在发送效率和可靠性之间取得平衡。该协议大幅提高了数据传输的效率,同时也增强了传输过程中的可靠性。

后面将会详细介绍这些流量控制与可靠传输机制

(六)差错检测

差错检测是数据链路层的另一项核心功能,旨在确保数据在传输过程中的完整性和准确性。在数据传输的过程中,由于信道噪声、干扰等多种原因,帧可能会发生错误。如果这些错误未能被及时检测并处理,可能会引发严重的通信问题,导致数据的丢失或不正确的处理。

错误主要分为两类:位错帧错

  1. 位错:位错是指帧中的某些比特在传输过程中发生了错误,导致接收到的比特与发送时的比特不一致。为了检测这些位错误,数据链路层通常使用循环冗余校验(CRC)技术。CRC是一种高效的检错机制,在发送方,数据链路层对帧的数据部分进行CRC运算,生成一个校验和,将其附加在帧的末尾。接收方接收到帧后,使用相同的CRC算法对帧的数据部分重新计算校验和,并与帧中附带的校验和进行比较。如果两者不一致,说明帧在传输过程中发生了位错,接收方可以选择丢弃该帧并请求发送方重传。

  2. 帧错:帧错包括帧丢失、帧重复以及帧失序等错误。帧错通常被归类为传输差错。这些问题可能导致接收方无法正确解析收到的数据,影响通信的可靠性。为了解决这些问题,传统的OSI模型中,数据链路层不仅使用CRC来检测位错,还引入了帧编号、确认和重传机制。每个发送的帧都带有一个唯一的编号,接收方在正确接收帧后,向发送方发送确认。如果发送方在一定时间内没有收到确认,则认为帧出现了错误并会重新发送该帧。这种机制确保了帧的可靠传输,尤其是在通信质量较差的网络环境中,如无线网络。

然而,随着有线通信技术的进步,尤其是在通信质量较高的有线链路中,数据链路层的设计理念也发生了变化。在这些环境中,数据链路层通常不再负责帧的确认和重传,而是仅依赖CRC进行差错检测。如果检测到错误,接收方会简单地丢弃该帧,不再尝试重传,确保上层接收到的帧都是没有错误的。这种设计将数据的可靠性交由传输层的协议(如TCP)来处理。传输层通过其自身的确认和重传机制来保证从源端到目的端的数据可靠传输,这样可以简化数据链路层的设计,并提高网络传输的整体效率。

二、组帧

封装成帧部分已经介绍了如何将网络层传来的数据包转换为数据链路层的帧格式,其中涉及添加首部和尾部、帧定界、帧同步等步骤。需要注意的是,封装成帧和组帧是两个相关但不同的过程。

封装成帧关注的是如何将网络层传来的数据包转换为数据链路层的帧格式。这个过程包括添加帧的首部和尾部、确保帧的定界和同步,以及帧的格式化等。封装成帧的核心任务是将一个完整的网络层数据包包装成数据链路层能够识别和处理的帧。

组帧则是在封装成帧的基础上进一步处理帧的生成和管理。组帧主要关注的是如何将原始数据划分为适当大小的数据块,如何对这些数据块进行处理以形成帧,以及如何有效地管理这些帧的发送和接收过程。与封装成帧不同,组帧更多地侧重于数据块的处理和帧的生成策略,这包括数据流的组织、帧之间的顺序控制以及错误控制等。

(一)透明传输

透明传输是指在数据链路层实现的一个重要功能,它确保数据可以不受内容限制地在链路上传输。具体来说,透明传输需要解决帧定界符与数据内容之间的冲突问题,以避免帧边界被错误地识别。

1. 字符填充

在字符填充过程中,如果数据部分包含与帧定界符相同的字符,发送方会在这些字符前插入一个特殊的转义字符,以避免它们被误认为帧定界符。这个转义字符通常是一个预定义的控制字符,例如ASCII码中的ESC字符。

当接收方收到数据时,它会检查数据流中的每个字符。如果检测到转义字符,接收方会将紧随其后的字符视为数据的一部分,而不会将其误认为帧的定界符。通过这种方式,即使数据中包含与帧定界符相同的字符,也能够确保这些字符被正确处理,不会干扰帧的定界。举例来说,若帧定界符是FLAG字符,且数据部分包含FLAG,发送方会在该FLAG字符前插入一个ESC字符。接收方在遇到ESC字符时,会理解后面的FLAG只是数据而非定界符,从而保证帧的透明传输。

2. 比特填充

在比特填充中,当数据链路层使用特定的比特序列(例如01111110)作为帧的定界符时,如果数据部分包含了与该定界符相同的比特序列,为避免冲突,发送方会在这个序列中的特定位置插入一个额外的比特。

具体来说,在数据部分的比特流中,每当发送方检测到连续的五个1时,便会自动插入一个0,以破坏可能形成的定界符序列。这种插入通常称为“零比特填充”。接收方在解析数据时,同样会检查连续的五个1,并在这种情况下自动删除紧随其后的一个0。这样做能够确保即使数据部分包含与定界符相似的比特序列,也不会被误识别为帧的边界。

例如,如果原始数据包含比特序列01111110,发送方会在检测到连续的11111之后插入一个0,变为011111010。接收方收到该数据时,在发现五个连续的1后,删除紧跟的0,还原出原始的比特序列。这种机制有效避免了数据中的比特序列被误认为定界符,保证了数据链路层的透明传输。

(二)组帧的方法

组帧是数据链路层中将数据划分为帧并进行传输的重要步骤,确保数据能够正确地从发送方传递到接收方。根据具体需求和通信环境,可以使用多种组帧方法。以下是几种常见的组帧方法的详细描述:

1. 定长帧法

定长帧法是最简单的组帧方法之一。在这种方法中,帧的长度是固定的,每个帧包含一个固定数量的字节。这种方法的优点在于接收方不需要额外的处理步骤即可识别帧的边界,因为帧的长度是预先已知的。

  • 优点

    • 实现简单,易于硬件支持。
    • 接收方可以轻松地根据固定长度进行帧的分离,无需额外的定界符。
    • 因为帧的长度固定,计算和处理时间相对较短且稳定。
  • 缺点

    • 如果实际数据的长度小于帧的长度,可能会造成帧的浪费,需要填充冗余数据。
    • 如果数据长度超过帧的长度,则必须将数据拆分到多个帧中,增加了复杂性。
    • 不适用于数据长度变化较大的场景。

2. 字符计数法

字符计数法是在帧的首部添加一个计数字段,用于指示帧中数据部分的字节数。接收方根据这个计数值来确定帧的边界,从而分离出每一个帧。

  • 优点

    • 能够支持变长帧,适应不同长度的数据。
    • 比定长帧法更灵活,减少了因数据填充带来的空间浪费。
  • 缺点

    • 计数字段可能会出错,导致帧定界的错误(例如,由于传输错误导致计数字段被篡改)。
    • 如果计数字段错误,接收方可能会误判帧的长度,导致数据失真或丢失。

3. 字符标志法

字符标志法通过在帧的开始和结束位置插入特定的标志字符来指示帧的边界。通常,ASCII码中的一些特殊字符(如STX表示帧的开始,ETX表示帧的结束)被用作标志字符。

  • 优点

    • 直观简单,容易理解和实现。
    • 可以支持变长帧,适用于数据长度不固定的场景。
    • 适用于简单的通信协议和有限的数据环境。
  • 缺点

    • 如果数据中包含与标志字符相同的字符,可能会导致帧定界的混淆,需引入字符填充技术。
    • 帧定界依赖于标志字符,容易受到传输错误或干扰的影响。

4. 比特标志法

比特标志法与字符标志法类似,但使用一串特定的比特序列作为帧的定界符。常见的比特标志为01111110,作为帧的起始和结束标志。这种方法常用于高级数据链路控制(HDLC)协议中。

  • 优点

    • 在传输高效的同时提供数据透明性,可以通过比特填充来避免标志比特序列出现在数据中。
    • 可以处理变长帧,支持灵活的数据传输。
  • 缺点

    • 需要额外的处理来实现比特填充和剥离,增加了复杂性。
    • 如果标志序列受到干扰或传输错误,可能导致帧定界错误。

5. 违反编码法

违反编码法利用编码规则的故意破坏来标识帧的边界。在某些编码方法中(例如曼彻斯特编码),正常数据传输遵循特定的编码规则,但在帧的开始和结束处,故意制造不符合编码规则的比特模式,以此来标识帧的边界。

  • 优点

    • 高度可靠,能够在物理层级别上区分帧的开始和结束。
    • 因为是基于物理层的编码特性,数据链路层处理更为简单直接。
  • 缺点

    • 需要特殊的硬件支持来识别和处理编码规则的违反。
    • 编码规则复杂,且不容易调试和实现。
    • 只适用于某些特定的物理层和链路层协议,通用性较差。

三、差错控制

现实的通信链路都不会是理想的,在传输过程中总会无法避免的出现差错,如0变成11变成0,这就叫做比特差错

(一)检错编码

(二)纠错编码

四、流量控制与可靠传输机制

(一)流量控制、可靠传输与滑动窗口机制

(二)停止 - 等待协议

(三)后退N帧协议( GBN )

(四)选择重传协议( SR )

五、介质访问控制

(一)信道划分

信道复用技术的概念在第8版课本物理层中p56-p61

1. 频分多路复用

2. 时分多路复用

3. 波分多路复用

4. 码分多路复用

(二)随机访问

1. ALOHA 协议

2. CSMA 协议

3. CSMA/CD 协议

4. CSMA/CA 协议

(三)轮询访问

令牌传递协议。

六、局域网

(一)局域网的基本概念与体系结构

(二)以太网与IEEE 802.3

(三)IEEE 802.11无线局域网

(四)VLAN 基本概念与基本原理

七、广域网

(一)广域网的基本概念

(二)PPP 协议

八、数据链路层设备

(一)以太网交换机

(二)以太网交换机工作原理


计算机网络——数据链路层
https://blog.cxhap.top/2024/08/16/计算机网络——数据链路层/
作者
DingWH03
发布于
2024年8月16日
许可协议