2.数据链路层技术

本文最后更新于 2024年1月27日 下午

数据链路层技术

数据链路控制是为了更有效地进行数据通信、对传输过程起到控制作用而设立的。系统之间传输的媒体称为数据链路。数据链路层涉及到的通信任务是:
- 帧同步:传输时需要保证收发两方开始和结束发送一帧的时间点双方都已知。做到这一点的方法有两种:
- 每一帧的长度相同,但是这种方式在通信环境不理想的情况下可靠性不强。
- 每一帧都有标志(flag)表示一帧的起点和终点。
- 流量控制:在数据发送时需要考虑接收端的容量,保证发送端发送数据的速度要小于等于接收端处理这些帧的速度。
- 差错控制:差错控制包括两种:重传和纠错。具体采用哪一种取决于传输的时延和误码率。
- 寻址:指明发送端和接收端的身份。
- 控制信息和数据在同一链路上:改善通信资源利用效率。
- 链路管理:管理数据交换的过程。

流量控制技术

流量控制是一种保证发送端发送的数据不会超过接收端接收数据能力的一种技术。接收端一般会配备缓存来对传输数据进行暂存,流量控制保证的方法是通过控制传输速度实现的。
在无丢帧和无码的前提下,传输速度受到两方面的影响:
- 传输时间(transmission time):数据包从端到端通过的时间,取决于带宽、数据包的大小和传播时间。
- 传播时间(propagation time):一个比特从端到端通过的时间,取决于传输介质的性质。

基本的流量控制的方法有两种,停等协议和滑动窗口。

停等协议

顾名思义,发送方在发送一帧之后,必须要等收到接收方的确认信息(称为ACK/acknowledgement)后,才能发送下一帧。接收方可以通过是否发送确认信息来控制数据传输的停止。

从链路的利用率角度出发,期望的情况是链路上随时都能够占满数据、不会留出空闲,这样对链路的利用率就是100%。但是无论帧的长度是否大于数据链路的长度,停等协议都无法使得链路上能够随时占满数据,因此,停等协议对两点通信的链路的利用率非常低下。

在分组交换的多点通信中,停等协议在停等过程中的资源可以被网络中的其他终端所利用,但是停等过程中仍然在浪费终端的通信资源(比如计算力,时间等等),因此停等协议对通信终端的通信资源的利用率不高。

显然,停等协议保证了传输的可靠性,但是等待时延降低了传输效率。停等协议适用于总帧数小、单帧包含数据量大的传输情况。在总帧数大、单帧包含数据量小时,停等协议显得十分低效。

滑动窗口

滑动窗口的改进是一个批次一批次地发送多个帧,只需要在一个批次的帧传输完成后,接收方才需要发送确认信息。每一个批次的长度称为滑动窗口的长度。

具体而言,数据被划分成帧之后被循环编码,编码的范围为\(0∼2^k-1\)
起始时,发送机一次性发送编号为\(0∼i\)的帧,接收机处理这些帧,并返回一个包含接收机处理的下一个帧的帧序号\(n\)的ACK。发送机收到ACK后,通过将ACK中的序号与发送的最后一个序号进行比对,从而得知上一批已经被接收机处理的帧的个数\(i-n+1\)。发送机再发送后续的\(i-n+1\)个帧,并等待接收机的下一个ACK,如此直到所有帧被发送完毕。

如果在两个站点之间交换数据,那么每个站点都要维护两个窗口:一个用于发送,另一个用于接收,且双方都需要向对方发送数据和确认帧ACK。更有效的双方的交换数据的方式是捎带。

相比于停等协议,通过对窗口大小的合理设置,可以使链路被数据占满,实现对链路的高利用率。
简单来说,如果窗口的大小为:
\[[\frac{t_{ACK}}{t_{transmission}}]\] 向上取整。其中\(t_{ACK}\)为ACK的传输时间,\(t_{transmission}\)为帧的传输时间。
那么可以使得整个链路被占满。

差错控制技术

自动请求重发

帧传输的差错包括两种:帧丢失和帧损伤。保证帧传输可靠性的机制是自动请求重发(automatic repeat request, ARQ)。
ARQ所起的作用是将不可靠的数据通过重发变得可靠。有三种形成ARQ的标准。

停等ARQ

利用停等协议进行设计的ARQ机制。停等ARQ针对两个类型的差错有如下处理:
- 到达终点的帧可能已经被损伤
针对这样的差错,接收端使用差错检测技术检测出差错的存在,并直接丢弃这个帧。在发送端存在一个计时器,发送端发送一个帧之后,计时器开始计时,并等待接收端的ACK。如果等待时间超过阈值,那么发送端将再次发送同一个帧。
- ACK损伤/确认损伤
当ACK在传输中被损伤,使得发送端无法辨认时,发送端的计时器也会超时,并且重传一个帧。此时接收端会受到两个完全相同的帧。为了使接收端能够识别这个帧是重复帧,而并非携带有效信息的帧,在传输时将发送的帧交替编码为0,1,并且ACK也交替编码为0,1.
ACK0确认的是为编号1的帧,ACK0确认的是编号为0的帧。

简单来说,停等ARQ对这两种损伤的应对机制都是使发送端的计时器超时,然后重传。

停等ARQ的优点是简单易行,主要缺点是由于停等ARQ基于低效率的停等协议,效率也十分低下。

返回N ARQ

返回N ARQ基于滑动窗口协议。如果终端在某个帧中检测到差错,那么终端会为这个帧发送一个否认确认(REJ),终端将丢弃这个帧和接收到的这个帧之后的所有帧。没有差错的情况下,终端会发送一个肯定确认(RR)。

返回N ARQ针有如下两种机制来对无效帧进行重发:
如果接收到的帧是无效帧,接收端则丢弃该帧。
- 如果接收端接收到帧,发现帧\(i+1\)有错且此时发送端仍然还在发送其后的帧,于是接收端发送\(REJi\),则发送端必须重传帧\(i\)即以后的后继帧。
- 如果接收端没接收到帧,且此时发送端不发送之后的帧,发送端超时,此时发送端会发送一个包含询问信息的RR,询问接收端想要开始重传的帧序号,接收端发送这个帧序号\(i\)后发送端必须重传帧\(i\)即以后的后继帧。

选择拒绝ARQ

在选择拒绝ARQ中,被重传的只有那些接收到否认或者超时的帧。选择拒绝ARQ的优点是被重传帧的数量被降低到了最小,增大了传输过程中的资源利用率。但是由于重传帧需要重新以原序插入到原来的帧序列中,这样的的机制对发送端和接收端的逻辑和缓存大小有非常高的要求,因此选择拒绝ARQ的应用范围比返回N ARQ更窄。
因此,选择拒绝ARQ适用于重传成本很高的通信链路,比如卫星通信链路。

高速数据链路控制协议

高速数据链路控制协议(HDLC)是一个具体的数据链路控制协议。HDLC使用同步传输,其帧结构如下图所示:

  • 标志字段
    HDLC中使用唯一的“01111110”字段在帧的两头作为分界。一个帧的标志即是前一个帧的结束,也是后一个帧的开始。为了保证信息内容中不会出现“01111110”与标志混淆、破坏同步的情况,需要使用比特填充的技术。具体是在帧的标志之间,当内容连续出现五个“1”时,发送器会插入一个附加的0。

交换技术

交换式通信网

在交换式通信网中,超出局部范围的数据传输需要经过一个中间交换结点构成的网络传输到目的地。节点承担的功能是数据的交换:这些结点接收网络中来自其他结点或者终端的数据,同时将数据发送给其他结点或者终端。

在计算机网络中,节点的功能不只是交换,还可以是存储和计算。随着通信网不断地和计算机网络融合,新型通信网中的某些节点也具有这些功能。


节点之间通过一定的拓扑结构连接在一起,与终端(或者称之为站点(station))一起构成交换式通信网。
如何制定节点之间的数据交换规则,使得在特定应用场景下的可靠性或者有效性或者节约程度突出是交换式通信网中需要讨论的问题。
常见的交换技术有四种:电路交换、分组交换、帧中继和ATM。
这些交换技术可分为两类:电路交换和分组交换。这两种交换可以采用不同的业务类型,业务类型分为面向连接的和无连接的。
- 面向连接的(connecting-oriented)
在双方通信之前需要通过通讯会话建立连接,直到通信结束后才能释放这个链接。需要注意的是,对于电路交换,在建立连接后,无论双方是否通信,连接都会持续占用整个网络的通信资源,因此面向连接的服务通常是以连接时间计费。
面向连接的通信包括三个阶段:
- 双方建立连接 - 通过连接双方进行通信 - 释放连接

相比于无连接的交换,面向连接的交换会消耗更多的资源和时间,但是通常可靠性会比无连接的交换更好。

  • 无连接的(connectionless)
    通信的双方不需要在通信前建立连接。通信的发送方不关心接收方是否可以收到,也不保证连接的可靠性。
    如果传输系统本身就具有高可靠性的特点,那么通信环境也可以保证无连接的可靠性。

面向连接 和 无连接的 是不同的业务属性,而电路交换和分组交换是不同的业务类型

协议架构中每一层采用的交换方式是独立的、可以是不同的。但是,如果下层资源没有被固定分配,上层无法使用固定资源分配的协议,因此不存在下层使用分组交换,上层使用电路交换的情况。

面向连接的交换适用于长期的、稳定的、传输数据量大的通信。而无连接的交换适用于临时的、传输数据量小的通信,这种通信不需要为可靠性负责。

电路交换

电路交换(circuit switching)是面向连接的交换,通信的双方在通信前建立双方独占、专用的物理通道,是一种物理连接。在建立连接后,相应的物理资源会被分配到这条连接上,在传输的过程中,这些物理资源被通信双方所专有,但是使用的资源量无法根据需求进行动态调整。
如果双方的通信需要经过中间结点,在电路交换中,中间结点不关心数据内容,直接转发,此时中间结点的转发时间相对于传输时间是可以忽略不计的,因此这样的传输可以保证传输数据率始终恒定。传输过程中看起来传输的两端仿佛存在一条直接连接,因此这样的传输称为透明传输/透传(Transparent Transmission)。
同时双方与中间结点的连接使用的信道/电路是不同的,且一定专用。

物理连接:利用物体的物理特性对相关物体进行连接,连接过程占用的资源是物理的(比如时间和频率)。

典型的电路交换应用例子是物理层的光网络传输。
单个电路交换节点中采用的交换技术有如下两个:
- 空分交换
信号通路之间从物理空间上被分开。每一次连接都需要经过空分交换机分配的一条专用的物理通路,数据在节点上从一条物理线路上切换到另一条物理线路上。
通常为了增加空分交换中每个交换节点的利用率,常常采用分级的空间交换矩阵。

  • 时分交换
    如果链路中使用了时分复用技术,那么对中间结点而言,其会接收某个时隙上的数据,然后转发时将数据置于另一个时隙上。

电路交换的例子是电话线网络。
电路交换的优点是:由于其透明性,电路交换往往可以稳定地实现恒定高数据率的传输。且当连接被建立后,基本上不需要额外的比特开销。
其缺点是: - 其对通信资源的分配是固定的,且双方在通信过程中很难获取到额外的资源。 - 由于通信资源的专有性,连接被建立后,线路在空闲时的通信资源无法被网络上的其他结点使用,通信资源利用率低。
- 由于电路交换的数据率恒定,因此在不同类型的设备上传输时,两个设备必须以相同的数据率传输和接收,网络的利用率受到限制。

分组交换

在分组交换中,传输数据分为多个数据包(称为分组)进行发送。每个数据包的格式是标准化的,每个数据包中有首部的控制信息(包含路由信息)和其后的用户数据,大小可以不同。到达中间结点的数据包会首先在缓存中存储,等到相应的输出电路空闲时再转发数据包。分组交换所使用的资源和连接都是逻辑的,被整个网络的所有节点共用。双方如果不通信,资源则由网络中的其他用户共享,因此分组交换服务是以数据大小进行计费的。分组交换可以是面向连接的,也可以是无连接的。
分组交换的例子是计算机之间的通信。

虚电路

虚电路(vitual circuit)是一种面向连接的分组交换,在通信前双方需要从共享的通信资源中建立一条预订的路由(但是这条路由仍然和其他虚电路共享),并且相应的路由信息会被添加到分组中。因此,在转发每个分组时,节点不需要为每个分组选择路由。对于使用同一条虚电路的所有分组节点只需要做一次路由选择。

数据报

在数据报(datagram)中,每个分组被视为独立的,因此一些分组虽然有相同的目的地址,但是并不是沿着相同的路由到达目的地,并且可能会失序地到达目的地。数据报可以是面向连接的数据报,比如TCP数据报,也可以是无连接的数据报,比如用户数据报和IP数据报。
用户数据报网络(user datagram post,UDP)是一种无连接的分组交换。用户数据报数据报省略了呼叫建立过程,同时由于其更加原始,因此可以更加灵活地处理数据。
对于TCP,即为面向连接的数据报,TCP中的链路层关心可靠性,有响应的流量控制和差错控制。TCP为了可靠性做出了代价,包括:三次握手时消耗的通信资源,首部占比更大等等。对于UDP和IP数据报,链路层不关心可靠性,但是可以在上层设置可靠性功能。

电路交换和分组交换也可以组合使用,比如在语音通话中,双方拨号建立连接的过程会发送一些用于建立连接的信息,这些信息的传输方式是分组交换。连接建立后,用于连接的通信资源会归还会网络中供其他用户进行建立连接的信息传输。但是连接一旦被建立,双方的通信则是电路交换(或者说语音通话本身仍然是电路交换的)。

分组交换的优点是:
- 链路在一段时间可以被许多分组动态地共享,通信资源的利用率较高。
- 分组交换网络可以完成不同传输设备之间的数据率转换。
- 网络发生拥塞时,分组仍然可以被中间结点接收并存储在缓存中,并不会像电路交换那样双方因为无法分配到资源而无法通信。
- 可以对不同的分组定义不同的优先级。

分组交换的缺点是: - 无法保证每一次通信都可以获得足够的资源,且不能保证重要的资源被合理分配。 - 在传输过程中数据包的顺序还可能发生移位或者丢失。

电路交换 分组交换
数据报
分组交换
虚电路
面向连接的
有专用通路
面向连接的/无连接的
无专用通路
面向连接的
无专用通路
在整个会话过程建立通路 为每个分组建立路由 为整个会话过程建立通路
呼叫建立时延,传输时延可以忽略 分组传输时延 呼叫建立时延,分组传输时延
用户负责报文丢失 网络可能对单个丢失分组负责 网络可能为分组序列丢失负责
固定带宽传输 动态使用带宽 动态使用带宽
呼叫建立后没有额外开销比特 每个分组中有额外开销比特 每个分组中有额外开销比特

帧中继(frame relay)

由于通信环境的高数据率和误码率,传统分组交换网中物理层的差错控制功能显得冗余和高成本。帧中继中纠错功能被直接交由上层——网络层进行处理,从而减小系统在物理层的开销。在通信中用户信息以帧(frame)为单位进行传送,帧是一种数据包,其特点是长度可变。网络在传送过程中对帧结构、传送差错等情况进行检查,对出错的帧直接予以丢弃。

软交换技术

交换式通信网中的基本硬件设施是交换机(exchange/switch)。世界范围内交换机经历了"人工交换(manual exchange)-机电交换机(electromechanic exchange)-程控交换机(stored program control exchange)-软交换(soft switch)"四次大的技术革新。
程控交换机中的功能可以大致分为如下几个部分:用于连接站点的用户电路(user circuit)、用于连接其他交换机的中继电路(truck circuit)、用于控制通话的信令收发模块(signaling circuit)、控制和处理数据的中央处理器(CPU)、以及交换机内部负责各个模块的之间通信的交换结构。
传统程控交换机的缺点是:由于各功能模块被集成,因此如果要升级或改进其中某一模块,整个通信网中所有的交换机都需要更换。此外,对不同用户设备和信号,可能会使用到不同的程控交换机以适配接口。
软交换(soft switch)的基本思路是从物理上将硬件交换功能与其他功能分离。物理交换功能由媒体网关(media gateway)执行,并且可以兼容各种用户设备和信号;其他功能模块位于媒体网关控制器中,媒体网关控制器可以被虚拟化成为网络中的一些结点并且可以被整个网络中的节点共享。

异步传递方式/ATM(asynchronous transmission method)

分组的大小

分组交换中,固定长度的一段报文被分成多少个分组取决于不同的应用场景。粒度高的分组方式(如上图中a)其额外开销比特(payload,即头部的控制信息)与用户数据占比更小,传输效率更高。粒度低(如上图中d)的分组方式,其额外开销比特与用户占比更大,但是更多的分组在交换时可以更加灵活处理,交换效率更高。

ATM 体系结构

本质上,ATM是一种面向连接的分组交换,但是与虚电路不同的是,ATM中建立的连接信道的数据率是可以被动态定义的,因此解决了虚电路在通信时难以获取额外资源的缺点。ATM使用固定长度且非常小的数据包,称为信元(cell)。每一个信元由于体积小而易于处理,使得传输高效。同帧中继一样,ATM在传输过程中也在物理层几乎不为差错控制有额外的开销,而将这部分功能转交给上层。
但是在2G时代由于使用ATM需要更换终端设备,成本开销巨大,因此在2G时代这一技术并未流行。直到3G时代,ATM协议作为接入网的第二层才得到广泛应用。
ATM协议中有两层与ATM的功能相关:ATM层提供分组传输能力,而ATM适配层(AAL)提供了将高层信息映射到ATM信源的方式,使其能够以ATM方式传输。AAL对五种业务进行了适配。

ATM 逻辑连接

ATM中的逻辑连接称为虚通路连接。端用户之间的物理传输通道被划分成多个虚通道,同时虚通道(VC, virtual channel)可以被划分为多个虚通路(VP,virtual path)。每一个虚通路都是速率可变的、全双工的、长途固定的信元流。且每一个虚通路都有唯一的识别标志虚通路标识符(VPI),每一个虚通道也有唯一的识别标志虚通道标识符(VCI)。

为了避免从不同虚通道上来的具有相同VPI的信元流在结点转发过程中出现错误,中间结点会将来自某个虚通路或者虚通道上接收的信元根据特定的映射,交换到另一个虚通路或者虚通道上。这样的交换可以是低粒度(low granularity)的(只是将信元转发到另一个虚通路)也可以是高粒度(high granularity)的(将信元转发到另一个虚通道的另一个虚通路上)。

ATM建立连接通信的本质是在建立连接的过程中,链路上的每一个中间结点都会建立一个对应的转发映射,其中规定了来自某条虚通道的虚通路上的信元一定会被转发到另一特定的虚通道的虚通路上。

ATM的链路管理

由ATM协议构建的网络中有两种接口:
- 用户-网络接口(UNI)
用于用户站点和ATM网络之间的交换。UNI信令用于定义协议。
- 网络-网络接口(NNI)
用于网络和网络之间的交换。NNI信令用于路由和网络管理。

  • 流量控制
    ATM中只控制站点收发信元的速率而不控制传输速率。因而UNI信元格式中要求有流量控制的域,而NNI信元格式没有流量控制域。
  • 差错检测
    ATM中ATM层结点只检查头部信息是否出错,而内容的差错检测和控制交由更高层处理。

ATM信元

按照通信类型(即用户-网络/网络-网络)的不同,ATM有UNI信元和NNI信元两种信元格式。 ATM的信元长度为53个八位组/字节,其中信元头部的长度为8个八位组,其中有流量控制(只有UNI信元有)、虚通道标识符、虚通路标识符、有效载荷类型和信元丢失优先级、首部差错控制字段。
流量控制(只有UNI信元有)、虚通道和虚通路标识符在上文中已经介绍过,故不在赘述。
有效载荷类型字段指出了信元中信息字段的信息类型,其长度为3bit,其表示该信息是用户信息还是控制信息,服务数据单元的类型,以及是否经历过拥塞。
信元丢失优先级(CLP)用于在发生拥塞时提供指导,其长度为1bit,CLP=0表示该信元的优先级较高,只有在没有其他选择的情况下才能丢弃这个信元。CLP=1表示该信元在需要时就可以被网络丢弃。
当信元中的拥塞标识为1时,结点会根据CLP决定是否丢弃一些信元。


2.数据链路层技术
https://l61012345.top/2022/04/17/学习笔记/通信网/2.数据链路层/
作者
Oreki Kigiha
发布于
2022年4月17日
更新于
2024年1月27日
许可协议