一. 数据链路层的功能

数据链路层在物理层提供服务的基础上向网络层提供服务,其主要作用是加强物理层传输原始比特流的功能,将物理层提供的可能出错的物理连接改造为逻辑上无差错的数据链路,使之对网络层表现为一条无差错的链路。

链路:从一个结点到相邻节点的一段物理链路(有线或无线),中间没有任何其它的交换结点。

数据链路:在物理链路上加上实现一些必要的通信协议(用于控制数据的传输)的硬件和软件(当下最常用的就是网络适配器,包括了硬件和软件),就构成了数据链路层。

1. 为网络层提供服务

对网络层而言,数据链路层的基本任务是将源机器中来自网络层的数据传输到目标机器的网络层。数据链路层通常可为网络层提供如下服务∶

1)无确认的无连接服务。源机器发送数据帧时不需先建立链路连接,目的机器收到数据帧时不需发回确认。对丢失的帧,数据链路层不负责重发而交给上层处理。适用于实时通信或误码率较低的通信信道,如以太网。

2)有确认的无连接服务。源机器发送数据帧时不需先建立链路连接,但目的机器收到数据帧时必须发回确认。源机器在所规定的时间内未收到确定信号时,就重传丢失的帧,以提高传输的可靠性。该服务适用于误码率较高的通信信道,如无线通信。

3)有确认的面向连接服务。帧传输过程分为三个阶段∶ 建立数据链路、传输帧、释放数据链路。目的机器对收到的每一帧都要给出确认,源机器收到确认后才能发送下一帧,因 而该服务的可靠性最高。该服务适用于通信要求(可靠性、实时性)较高的场合。(有连接就一定要有确认,即不存在无确认的面向连接的服务。)

2. 链路管理

数据链路层连接的建立、维持和释放过程称为链路管理,它主要用于面向连接的服务。

链路两端的结点要进行通信,必须首先确认对方已处于就绪状态,并交换一些必要的信息以对帧序号初始化,然后才能建立连接,在传输过程中则要能维持连接,而在传输完毕后要释放该连接。

在多个站点共享同一物理信道的情况下(如在局域网中)如何在要求通信的站点间分配和管理信道也属于数据链路层管理的范畴。

数据链路层使用的信道主要有以下两种类型:

  1. 点对点信道:这种信道使用一对一的点对点通信方式
  2. 广播信道:这种信道使用一对多的广播通信方式。

3. 1帧定界、帧同步与透明传输 (封装成帧)

两台主机之间传输信息时,必须将网络层的分组封装成帧,以帧的格式进行传送。将一段数据的前后分别添加首部和尾部,就构成了帧。因此,帧长等于数据部分的长度加上首部和尾部的长度。

首部和尾部中含有很多控制信息,它们的一个重要作用是确定帧的界限,即帧定界。

而帧同步指的是接收方应能从接收到的二进制比特流中区分出帧的起始与终止。如在HDLC协议中, 用标识位 F(011110)来标识帧的开始和结束。通信过程中,检测到帧标识位F即认为是帧的 开始,然后一旦检测到帧标识位F即表示帧的结束。HDLC 标准帧格式如图 3.1 所示。

​ 为了提高帧的传输效率,应当使帧的数据部分的长度尽可能地大于首部和尾部的长度,但每种数据链路层协议都规定了帧的数据部分的长度上限——最大传送单元(MTU)。

如果在数据中恰好出现与帧定界符相同的比特组合(会误认为传输结束而丢弃后面的数据),那么就要采取有效的措施解决这个问题,即透明传输。更确切地说,透明传输就是不管所传数据是什么样的比特组合,都应当能在链路上传送。

4. 流量控制

由于收发双方各自的工作速率和缓存空间的差异,可能出现发送方的发送能力大于接收方的收能力的现象,如若此时不适当限制发送方的发送速率(即链路上的信息流量),前面来不及接收的帧将会被后面不断发送来的帧淹没,造成帧的丢失而出错。

因此,流量控制实际上就是:限制发送方的数据流量,使其发送速率不超过接收方的接收能力。 这个过程需要通过某种反馈机制使发送方能够知道接收方是否能跟上自己,即需要有一些规则使得发送方知道在什么情况下可以接着发送下一帧,而在什么情况下必须暂停发送,以等待收到某种反馈信息后继续发送。 流量控制(见图 3.2)并不是数据链路层特有的功能,许多高层协议中也提供此功能,只不过控制的对象不同而已。对于数据链路层来说, 控制的是相邻两结点之间数据链路上的流量,而对于运输层来说,控制的则是从源端到目的端之间的流量。

5. 差错控制

由于信道噪声等各种原因,帧在传输过程中可能会出现错误。用以使发送方确定接收方是否正确收到由其发送的数据的方法称为差错控制。

一般来说,数据的传输差错是由噪声引起的。通信信道的噪声可以分为两类∶热噪声和冲击噪声。热噪声一般是信道固有的,引起的差错是随机差错,可以通过提高信噪比来降低它对数据传输的影响。冲击噪声一般是由外界电磁干扰引起的,引起的差错是突发差错,它是引起传输差错的主要原因,无法通过提高信噪比来避免。

通常,这些错误可分为位错和帧错。

位错指:帧中某些位出现了差错。通常采用循环冗余校验(CRC)方式发现位错,通过自动重传请求(Automatic Repeat reQuest,ARQ)方式来重传出错的帧。

具体做法是∶让发送方将要发送的数据帧附加一定的CRC冗余检错码一并发送,接收方则根据检错码对数据帧进行错误检测,若发现错误则丢弃,发送方超时重传该数据帧。这种差错控制方法称为 ARQ法。ARQ法只需返回很少的控制信息就可有效地确认所发数据帧是否被正确接收。

帧错指:帧的丢失、重复或失序等错误。在数据链路层引入定时器和编号机制,能保证每一帧最终都能有且仅有一次正确地交付给目的结点。

二. 组帧

数据链路层之所以要把比特组合成帧为单位传输,是为了在出错时只重发出错的帧,而不必重发全部数据,从而提高效率。为了使接收方能正确地接收并检查所传输的帧,发送方必须依据一定的规则把网络层递交的分组封装成帧(称为组帧)。组帧主要解决帧定界、帧同步、透明传 输等问题。通常有以下 4 种方法实现组帧。

注意∶组帧时既要加首部,又要加尾部。原因是,在网络中信息是以帧为最小单位进行传输的,所以接收端要正确地接收帧,必须要清楚该帧在一串比特流中从哪里开始到哪里结束(因为 接收端收到的是一串比特流,没有首部和尾部是不能正确区分帧的)。而分组(即IP数据报)仅是包含在帧中的数据部分(后面将详细讲解),所以不需要加尾部来定界。

1. 字符计数法

字符计数法是指:在帧头部使用一个计数字段来标明帧内字符数(包括字符数包括计算字段本身,即 字节计数值 = 1 +后面的字节数)。目的结点的数据链路层收到字节计数值时,就知道后面跟随的字节数,从而可以确定帧结束的位置(计数字段提供的字节数包含自身所占用的一个字节)。

这 种方法最大的问题在于如果计数字段出错,即失去了帧边界划分的依据,那么接收方就无法判断所传输帧的结束位和下一帧的开始位,收发双方将失去同步,从而造成灾难性后果。(对比一下JVM中的内存字节码文件与这种方式相似)

2. 字符填充的首尾定界符法

字符填充法:使用特定字符来定界一帧的开始与结束(首尾不需要加转义字符,只需要在数据部分加),在图3.4的例子中,控制字符 SOH放在帧的最前面,表示帧的首部开始,控制字符EOT表示帧的结束。

为了使信息位中出现的特殊字符不被误判为帧的首尾定界符,可在特殊字符前面填充一个转义字符(ESC)来加以区分(注意,转义字符是ASCII码中的控制字符,是一个字符,而非ESC三个字符的组合),以实现数据的透明传输。接收方收到转义字符后,就知道其后面紧跟的是数据信息,而不是控制信息。

如图3.4(a)所示的字符帧,帧的数据段中出现 EOT 或 SOH字符,发送方在每个EOT 或 SOH 字符前再插入一个ESC字符【见图3.4(b)】,接收方收到数据后会自己删除这个插入的 ESC字符, 结果仍得到原来的数据【见图3.4(c)】。这也正是字符填充法名称的由来。如果转义字符ESC也出 现在数据中,那么解决方法仍是在转义字符前插入一个转义字符。(对于特殊字符都加一个标识,这种就相当于正则表达式中的转义 \ \n …)

3. 零比特填充的首尾标志法

零比特填充法允许数据帧包含任意个数的比特,也允许每个字符的编码包含任意个数的比特。它使用一个特定的比特模式,即 01111110(中间是6个1)来标志一帧的开始和结束。(首位都加上01111110,数据部分每五个1加一个0)。为了不使信息位中出现的比特流 01111110被误判为帧的首尾标志,发送方的数据链路层在信息位中遇到5 个连续的1时,将自动在其后插入一个0;而接收方做该过程的逆操作,即每收到 5 个连 续的1时,自动删除后面紧跟的0,以恢复原信息。

零比特填充法很容易由硬件来实现,性能优于字符填充法。

4. 违规编码法

在物理层进行比特编码时,通常采用违规编码法。

例如,曼彻斯特编码方法将数据比特1 编码成高-低电平对,将数据比特0编码成低-高电平对,而高-高电平对和低-低电平对在数据比特中是违规的(即没有采用)。可以借用这些违规编码序列来定界帧的起始和终止。

局域网 IEEE 802 标准就采用了这种方法。 违规编码法不需要采用任何填充技术,便能实现数据传输的透明性,但它只适用于采用冗余编码的特殊编码环境。 由于字节计数法中计数字段的脆弱性和字符填充法实现上的复杂性与不兼容性,目前较常的组帧方法是比特填充法和违规编码法。

三. 差错控制

实际通信链路都不是理想的,比特在传输过程中可能会产生差错,1可能会变成0,0也可能会变成 1,这就是比特差错。

比特差错是传输差错中的一种,本节仅讨论比特差错。 通常利用编码技术进行差错控制,主要有两类∶自动重传请求ARQ和前向纠错FEC。在ARQ方式中,接收端检测出差错时,就设法通知发送端重发,直到接收到正确的码字为止。在FEC方式中,接收端不但能发现差错,而且能确定比特串的错误位置,从而加以纠正。因此,差错控制又可分为:检错编码和纠错编码。

1. 检错编码(检错后通知发送端重发)

检错编码都采用冗余编码技术,其核心思想是:在有效数据(信息位)被发送前,先按某种关系附加一定的冗余位,构成一个符合某一规则的码字后再发送。当要发送的有效数据变化时,相应的冗余位也随之变化,使得码字遵从不变的规则。接收端根据收到的码字是否仍符合原规则来判断是否出错。

常见的检错编码有:奇偶校验码和循环冗余码。

奇偶校验码

奇偶校验码是奇校验码和偶校验码的统称,是一种最基本的检错码。原理就是:通过增加冗余位来使得码字中“1”的个数保持为奇数或偶数的编码方式。它由n-1 位信息元和1 位校验元组成,如果是奇校验码,那么在附加一个校验元后,码长为n的码字中1的个数为奇数;如果是偶校验码,那么在附加一个校验元以后,码长为n的码字中1的个数为偶数。 它只能检测奇数位的出错情况,但并不知道哪些位错了,也不能发现偶数位的出错情况。(对于奇校验码:只有当传输数据中的1是偶数个时,才能检测出错误;偶校验码则相反。)

循环冗余检验

循环冗余检验(Cyclic Redundancy Check,CRC)是一种纠错方法,而FCS(Frame Check Sequeence)是添加在数据后面的冗余码。

在发送端,先把数据划分为分组,假设每组k个比特。现假定待传输的数据M=101001(K=6).CRC运算就是在数据M的后面添加供差错检测用的n位冗余码(FCS)(若P为多项式,则冗余码个数n=P的最后位次数),然后构成一个帧发送出去,一共发送了(k+n)位比特。

在接收端,将收到的每一个帧进行CRC检验,即对除数P进行模2运算,若余数位0,则该帧没有差错,接收;否则,判定该帧有差错,但无法确定具体位置,直接丢弃。

  • 除数P(或多项式P(X)):P是由发送端和接收端实现商定的一个数或多项式(三次握手中),可以直接是二进制数字,如:P = 1101;也可以是多项式P(X)= X3+X3+1(X0),换算成二进制数字1101.(若P为多项式,则冗余码个数n=P的最后位次数)
  • 冗余码求法:
  1. 首先求出被除数,将数据M乘以2n 得到被除数,(对于2进制的数据M来说,每乘1个2,相当于数据向左移动一位,即在末尾添加一个0-----位运算),那么M*2n就是在M的末尾添加n个0 = 被除数。
  2. 将被除数与除数P进行模2运算,得到的余数即为冗余码(FCS)
  • ​ 模2运算:不进位,不退位,不借位,就是相同位相加后,对2取模,即为该位的值。

通过循环冗余码(CRC)的检错技术,数据链路层做到了对帧的无差错接收。也就是说,凡是接收端数据链路层接收的帧,我们都认为这些帧在传输过程中没有产生差错;而接收端丢弃的帧虽然也收到了,但最终因为有差错而被丢弃,即未被接受。

在数据链路层,发送端帧检验序列FCS的生成以及接收端的CRC差错检验都是由硬件完成的,处理速度迅速,不会造成延误数据的传输。

注意∶循环冗余码(CRC)是具有纠错功能的,只是数据链路层仅使用了它的检错功能,检测到帧出错则直接丢弃,因此本节将 CRC放在检错编码中介绍。

纠错编码

在数据通信的过程中,解决差错问题的一种方法是在每个要发送的数据块上附加足够的冗余信息,使接收方能够推导出发送方实际送出的应该是什么样的比特串。最常见的纠错编码是海明码,其实现原理是在有效信息位中加入几个校验位形成海明码,并把海明码的每个二进制位分配到几个奇偶校验组中。当某一位出错后,就会引起有关的几个校验位的值发生变化,这不但可以发现错位,而且能指出错位的位置,为自动纠错提供依据。

现以数据码 1010 为例讲述海明码的编码原理和过程。

(1)确定海明码的位数

设n为有效信息的位数,k为校验位的位数,则信息位n和校验位k应满足

n+k≤2k-1 (纠错x位比特错误,海明距为2x+1)

海明码位数为n+k=7≤23-1成立,则n、k有效。设信息位为D4D3D2D1(1010),共4位,校验位为 P1P2P3共3 位,对应的海明码为H7H6H5H4H3H2H1。

(2)确定校验位的分布

规定校验位P1在海明位号为2i-1的位置上,其余各位为信息位,因此有∶

(3)分组以形成校验关系

​ 每个数据位用多个校验位进行校验,但要满足条件∶被校验数据位的海明位号等于校验该数 据位的各校验位海明位号之和。另外,校验位不需要再被校验。分组形成的校验关系如下。

(4)校验位取值

校验位Pi的值为第i组(由该校验位校验的数据位)所有位求异或。

​ 根据(3)中的分组有

所以,1010对应的海明码为1010010(下画线为校验位,其他为信息位)

(5)海明码的校验原理

每个校验组分别利用校验位和参与形成该校验位的信息位进行奇偶校验检查,构成k个校验 方程∶


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

1. 流量控制、可靠传输与滑动窗口机制

流量控制涉及对链路上的帧的发送速率的控制,以使接收方有足够的缓冲空间来接收每个帧。例如,在面向帧的自动重传请求系统中,当待确认帧的数量增加时,有可能超出缓冲存储空间而造成过载。流量控制的基本方法是:由接收方控制发送方发送数据的速率,常见的方式有两种∶ 停止-等待协议和滑动窗口协议。

1.停止-等待(ARQ)流量控制基本原理

发送方每发送一帧,都要等待接收方的应答信号,之后才能发送下一帧;接收方每接收一帧,都要反馈一个应答信号,表示可接收下一帧,如果接收方不反馈应答信号,那么发送方必须一直等待。每次只允许发送一帧,然后就陷入等待接收方确认信息的过程中,因而传输效率很低。

2.滑动窗口流量控制基本原理

在任意时刻,发送方都维持一组连续的允许发送的帧的序号,称为发送窗口;同时接收方也维持一组连续的允许接收帧的序号,称为接收窗口。发送窗口用来对发送方进行流量控制,而发送窗口的大小 WT代表在还未收到对方确认信息的情况下发送方最多还可以发送多少个数据帧。 同理,在接收端设置接收窗口是为了控制可以接收哪些数据帧和不可以接收哪些帧。在接收方, 只有收到的数据帧的序号落入接收窗口内时,才允许将该数据帧收下。若接收到的数据帧落在接收窗口之外,则一律将其丢弃。 图3.7 给出了发送窗口的工作原理,图3.8 给出了接收窗口的工作原理

发送端每收到一个确认帧,发送窗口就向前滑动一个帧的位置,当发送窗口内没有可以发送的帧(即窗口内的帧全部是已发送但未收到确认的帧)时,发送方就会停止发送,直到收到接收方发送的确认帧使窗口移动,窗口内有可以发送的帧后,才开始继续发送。

接收端收到数据帧后,将窗口向前移一个位置,并发回确认帧,若收到的数据帧落在接收窗口之外,则一律丢弃。

滑动窗口有以下重要特性∶

1)只有接收窗口向前滑动(同时接收方发送了确认帧)时,发送窗口才有可能(只有发送方收到确认帧后才一定)向前滑动。

2)从滑动窗口的概念看,停止-等待协议、后退N帧协议和选择重传协议只在发送窗口大小与接收窗口大小上有所差别∶

停止-等待协议∶ 发送窗口大小 =1,接收窗口大小 =1。

后退 N帧协议∶发送窗口大小 >1,接收窗口大小 =1。

选择重传协议∶发送窗口大小 >1,接收窗口大小 >1。

3)接收窗口的大小为1时,可保证帧的有序接收。

4)数据链路层的滑动窗口协议中,窗口的大小在传输过程中是固定的(注意与第 5 章传输层的滑动窗口协议的区别)。

3.可靠传输机制

数据链路层的可靠传输通常使用:确认和超时重传两种机制来完成。确认是一种无数据的控制帧,这种控制帧使得接收方可以让发送方知道哪些内容被正确接收。有些情况下为了提高传输效率,将确认捎带在一个回复帧中,称为捎带确认。超时重传是指发送方在发送某个数据帧后就开启一个计时器,在一定时间内如果没有得到发送的数据帧的确认帧,那么就重新发送该数据帧,直到发送成功为止。

自动重传请求(Auto Repeat reQuest,ARQ)通过接收方请求发送方重传出错的数据帧来恢复出错的帧,是通信中用于处理信道所带来差错的方法之一。

传统自动重传请求分为三种,即停止-等待(Stop-and-Wait)ARQ、后退N帧(Go-Back-N)ARQ和选择性重传(Selective Repeat)ARQ。后两种协议是滑动窗口技术与请求重发技术的结合,由于窗口尺寸开到足够大时,帧在线路上可以连续地流动,因此又称其为连续 ARQ 协议。

注意,在数据链路层中流量控制机制和可靠传输机制是交织在一起的。 现有的实际有线网络的数据链路层很少采用可靠传输(不同于OSI参考模型的思路), 因此大多数教材把这部分内容放在第 5章运输层中讨论,本书按照 408 考纲,不做变动.

2. 单帧滑动窗口与停止**-等待协议(**Stop-and-Wait)ARQ

在停止-等待协议中,源站发送单个帧后必须等待确认,在目的站的回答到达源站之前,源站不能发送其他的数据帧。从滑动窗口机制的角度看,停止-等待协议相当于发送窗口和接收窗口大小均为1的滑动窗口协议。

在停止-等待协议中,除数据帧丢失外,还可能出现以下两种差错。

到达目的站的帧(数据帧)可能已遭破坏,接收站利用前面讨论过的差错检测技术检出后,简单地将该帧丢弃。为了对付这种可能发生的情况,源站装备了计时器。在一个帧发送之后,源站等待确认, 如果在计时器计满时仍未收到确认,那么再次发送相同的帧。如此重复,直到该数据帧无错误地到达为止。

另一种可能的差错是数据帧正确而确认帧被破坏,此时接收方已收到正确的数据帧,但发送方收不到确认帧,因此发送方会重传已被接收的数据帧,接收方收到同样的数据帧时会丢弃该帧, 并重传一个该帧对应的确认帧。发送的帧交替地用0和1来标识,肯定确认分别用ACK0和ACK1 来表示,收到的确认有误时,重传已发送的帧。对于停止-等待协议,由于每发送一个数据帧就停止并等待,因此用1bit来编号就已足够。在停止-等待协议中,若连续出现相同发送序号的数据帧, 表明发送端进行了超时重传。连续出现相同序号的确认帧时,表明接收端收到了重复帧。

​ 此外,为了超时重发和判定重复帧的需要,发送方和接收方都须设置一个帧缓冲区。发送端在发送完数据帧时,必须在其发送缓存中保留此数据帧的副本,这样才能在出差错时进行重传。 只有在收到对方发来的确认帧 ACK 时,方可清除此副本。

由图3.9 可知,停止-等待协议通信信道的利用率很低。为了克服这一缺点,就产生了另外两种协议,即后退 N 帧协议和选择重传协议。

3. 多帧滑动窗口与后退 N帧协议(GBN) (Go-Back-N)ARQ

在后退N帧式 ARQ中,发送方无须在收到上一个帧的 ACK 后才能开始发送下一帧,而是可以连续发送帧。当接收方检测出失序的信息帧后,要求发送方重发最后一个正确接收的信息帧之后的所有未被确认的帧;或者当发送方发送了N个帧后,若发现该N个帧的前一个帧在计时器超时后仍未返回其确认信息,则该帧被判为出错或丢失,此时发送方就不得不重传该出错帧及随后的 N个帧。换句话说,接收方只允许按顺序接收帧。

如图 3.10 所示,源站向目的站发送数据帧。当源站发完 0号帧后,可以继续发送后续的 1 号帧、2 号帧等。源站每发送完一帧就要为该帧设置超时计时器。由于连续发送了许多帧,所以确认帧必须要指明是对哪一帧进行确认。为了减少开销,GBN 协议还规定接收端不一定每收到一个正确的数据帧就必须立即发回一个确认帧,而可以在连续收到好几个正确的数据帧后,才对最后一个数据帧发确认信息,或者可在自己有数据要发送时才将对以前正确收到的帧加以捎带确认。这就是说,对某一数据帧的确认就表明该数据帧和此前所有的数据帧均已正确无误地收到。

​ 在图3.10中,ACKn表示对第n号帧的确认,表示接收方已正确收到第n号帧及以前的所有帧,下一次期望收到第n+1号帧(也可能是第0号帧)。接收端只按序接收数据帧。虽然在有差错的 2 号帧之后接着又收到了正确的6个数据帧,但接收端都必须将这些帧丢弃。接收端虽然丢弃了这些不按序的无差错帧,但应重复发送已发送的最后一个确认帧 ACK1(这是为了防止已发送的确认帧ACK1 丢失)。

后退N帧协议的接收窗口为1,可以保证按序接收数据帧。(下面通俗点说:对于后退N帧协议,发送窗口的大小应小于等于窗口总数-1,否则在除了第一轮外的发送的帧,其编号都一样,无法判断是重传帧还是新帧)若采用n比特对帧编号,则其发送窗口的尺寸W应满足1≤ W≤2n-1。若发送窗口的尺寸大于2n-1,则会造成接收方无法分辨新帧和旧帧(请参考本章疑难点 3)。 从图 3.10 不难看出,后退 N帧协议一方面因连续发送数据帧而提高了信道的利用率,另一 方面在重传时又必须把原来已传送正确的数据帧进行重传(仅因这些数据帧的前面有一个数据帧 出了错),这种做法又使传送效率降低。由此可见,若信道的传输质量很差导致误码率较大时, 后退 N帧协议不一定优于停止-等待协议。

4. 多帧滑动窗口与选择重传协议(**SR) (**Selective Repeat)ARQ

为进一步提高信道的利用率,可设法只重传出现差错的数据帧或计时器超时的数据帧,但此时必须加大接收窗口,以便先收下发送序号不连续但仍处在接收窗口中的那些数据帧。等到所缺序号的数据帧收到后再一并送交主机。这就是选择重传 ARQ 协议。

在选择重传协议中,每个发送缓冲区对应一个计时器,当计时器超时时,缓冲区的帧就会重传。另外,该协议使用了比上述其他协议更有效的差错处理策略,即一旦接收方怀疑帧出错,就会发一个否定帧NAK 给发送方,要求发送方对NAK中指定的帧进行重传,如图3.11所示。

选择重传协议的接收窗口尺寸所和发送窗口尺寸所都大于1,一次可以发送或接收多个帧。 若采用n比特对帧编号,为了保证接收方向前移动窗口后,新窗口序号与旧窗口序号没有重叠部分,需要满足条件∶接收窗口WR+发送窗口WT≤2n。假定仍然采用累计确认的方法,并且接收窗口WR显然不应超过发送窗口WT(否则无意义),那么接收窗口尺寸不应超过序号范围的一半, 即 WR≤2(n-1)。接收窗口为最大值时,WTmax= WRmax -2(n-1)。

需要提醒读者的是,一般情况下,在 SR 协议中,接收窗口的大小和发送窗口的大小是相同的。

选择重传协议可以避免重复传送那些本已正确到达接收端的数据帧,但在接收端要设置具有相当容量的缓冲区来暂存那些未按序正确收到的帧。接收端不能接收窗口下界以下或窗口上界以上的序号的帧,因此所需缓冲区的数目等于窗口的大小,而不是序号数目。

在往年统考真题中曾经出现过对信道效率信道的吞吐率等概念的考查,有些读者未 接触过通信原理等相关的课程,可能对这些概念不太熟悉,在这里给读者补充一下。

信道的效率,也称信道利用率。可从不同的角度来定义信道的效率,这里给出一种从时间角度的定义∶信道效率是对发送方而言的,是指发送方在一个发送周期的时间内,有效地发送数据所需要的时间占整个发送周期的比率。

例如,发送方从开始发送数据到收到第一个确认帧为止,称为一个发送周期,设为T,发送方在这个周期内共发送L比特的数据,发送方的数据传输速率为C,则发送方用于发送有效数据的时间为L/C,在这种情况下,信道的利用率为(L/C)/T。

从上面的讨论可以发现,求信道的利用率主要是求周期时间T和有效数据发送时间L/C,

信道吞吐率 = 信道利用率x发送方的发送速率。

流量控制的三种滑动窗口协议的信道利用率是一个关键知识点,希望读者能结合习题,自行推导。

五. 介质访问控制

介质访问控制所要完成的主要任务是,为使用介质的每个结点隔离来自同一信道上其他结点所传送的信号,以协调活动结点的传输。用来决定广播信道中信道分配的协议属于数据链路层的一个子层,称为介质访问控制(Medium Acess Control,MAC)子层。.dok

图3.12是广播信道的通信方式,结点A、B、C、D、E共享广播信道,假设A要与C发生通信,B 要与D 发生通信,由于它们共用一条信道,如果不加控制,那么两对结点间的通信可能会因为互相干扰而失败。介质访问控制的内容是,采取一定的措施,使得两对结点之间的通信不会发生互相干扰的情况。

​ 常见的介质访问控制方法有:信道划分介质访问控制、随机访问介质访问控制和轮询访问介质访问控制。 其中前者是静态划分信道的方法,而后两者是动态分配信道的方法。

1. 信道划分介质访问控制 (静态)

信道划分介质访问控制将使用介质的每个设备与来自同一通信信道上的其他设备的通信隔离开来,把时域和频域资源合理地分配给网络上的设备。

下面介绍多路复用技术的概念。当传输介质的带宽超过传输单个信号所需的带宽时,人们就通过在一条介质上同时携带多个传输信号的方法来提高传输系统的利用率,这就是所谓的多路复用,也是实现信道划分介质访问控制的途径。多路复用技术把多个信号组合在一条物理信道上进行传输,使多个计算机或终端设备共享信道资源,提高了信道的利用率。

采用多路复用技术可把多个输入通道的信息整合到一个复用通道中,在接收端把收到的信息分离出来并传送到对应的输出通道,如图3.13 所示。

信道划分的实质就是通过分时、分频、 分码等方法把原来的一条广播信道,逻辑上分为几条用于两个结点之间通信的互不干扰的子信道,实际上就是把广播信道转变为点对点信道。

信道划分介质访问控制分为以下 4种。

频分多路复用(FDM frequency division multiplexing) - 适用于模拟信号

频分多路复用是一种将多路基带信号调制到不同频率载波上,再叠加形成一个复合信号的多路复用技术。在物理信道的可用带宽超过单个原始信号所需带宽的情况下,可将该物理信道的总带宽分割成若干与传输单个信号带宽相同(或略宽)的子信道,每个子信道传输一种信号,这就是频分多路复用,如图3.14 所示。 每个子信道分配的带宽可不相同,但它们的总和必须不超过信道的总带宽。在实际应用中, 为了防止子信道之间的干扰,相邻信道之间需要加入保护频带。 频分多路复用的优点在于充分利用了传输介质的带宽,系统效率较高;由于技术比较成熟, 实现也较容易。

时分多路复用(TDM time-division multiplexing ) - 适用于数字信号

时分多路复用是将一条物理信道按时间分成若干时间片,轮流地分配给多个信号使用。每个时间片由复用的一个信号占用,而不像 FDM 那样,同一时间同时发送多路信号。这样,利用每个信号在时间上的交叉,就可以在一条物理信道上传输多个信号,如图3.15 所示。

某个时刻来看,时分多路复用信道上传送的仅是某一对设备之间的信号;就某段时间而言,传送的是按时间分割的多路复用信号。但由于计算机数据的突发性,一个用户对已经分配到的子信道的利用率一般不高。统计时分多路复用(STDM - Statistical time division multiplexing,又称异步时分多路复用)是 TDM 的一种改进,它采用STDM 帧,STDM 帧并不固定分配时隙,而按需动态地分配时隙,当终端有数据要传送时,才会分配到时间片,因此可以提高线路的利用率。例如,线路传输速率为8000b/s,4个用户的平均速率都为 2000b/s,当采用 TDM方式时,每个用户的最高速率为2000b/s,而在 STDM 方式下,每个用户的最高速率可达 8000b/s。

波分多路复用(WDM - Wavelength division multiplexing)

​ 波分多路复用即光的频分多路复用,它在一根光纤中传输多种不同波长(频率)的光信号,由于波长(频率)不同,各路光信号互不干扰,最后再用波长分解复用器将各路波长分解出来。由于光波处于频谱的高频段,有很高的带宽,因而可以实现多路的波分复用,如图3.16 所示。

码分多路复用(CDM - Code division multiplexing)

码分多路复用是采用不同的编码来区分各路原始信号的一种复用方式。与 FDM和TDM不同, 它既共享信道的频率,又共享时间。

下面举一个直观的例子来理解码分复用。 假设A站要向C站运输黄豆,B站要向C站运输绿豆,A与C、B与C之间有一条公共的 道路,可以类比为广播信道,如图3.17所示。

*1.在频分复用方式下,*公共道路被划分为两个车道, 分别提供给A到C 的车和B到C的车行走,两类车可以同时行走,但只分到了公共车道的一半, 因此频分复用(波分复用也一样)共享时间而不共享空间

*2.在时分复用方式下,*先让A到C的车走一趟,再让B到C的车走一趟,两类车交替地占用公共车道。公共车道没有划分,因此两车共享了空间,但不共享时间

3.*在码分复用情况下,*码分复用与另外两种信道划分方式大为不同,黄豆与绿豆放在同一辆车上运送,到达C后,由C站负责把车上的黄豆和绿豆分开。因此,黄豆和绿豆的运送,在码分复用的情况下,既共享了空间,也共 享了时间

实际上,更常用的名词是码分多址(Code DivisionMultipleAcess,CDMA),其原理是每个比特时间再划分成m个短的时间槽,称为码片(Chip),通常m的值是64或128,下例中为简单起见,设m为8。每个站点被指派一个唯一的m位码片序列。发送1时,站点发送它的码片序列; 发送0时,站点发送该码片序列的反码。当两个或多个站点同时发送时,各路数据在信道中线性相加。为从信道中分离出各路信号,要求各个站点的码片序列相互正交。 (两个码片的码片向量的规格化内积为0,即为正交)

简单理解就是,A站向C站发出的信号用一个向量来表示,B站向C站发出的信号用另一个向量来表示,两个向量要求相互正交。向量中的分量,就是所谓的码片。

下面举例说明 CDMA的原理。 假如站点A的码片序列被指派为 00011011,则A站发送00011011(自身) 就表示发送比特1,发送 11100100(反码)就表示发送比特0。为了方便,按惯例将码片中的0写为-1,将1写为+1,因此A站的码片序列是-1-1-1+1+1-1+1 +1。

令向量S表示A站的码片向量,令T表示B站的码片向量。两个不同站的码片序列正交, 即向量S 和T的规格化内积(Inner Product)为 0∶

任何一个码片向量和该码片向量自身的规格化内积都是 1,任何一个码片向量和该码片反码的向量的规格化内积是-1,如(自己点乘自己为1,自己点乘反码为-1)

令向量 T为(-1 -1+1 -1+1+1+1-1)。

当 A 站向 C站发送数据1时,就发送了向量(-1-1-1+1+1-1+1+1)。

当B站向C 站发送数据0时,就发送了向量(+1+1-1+1-1-1-1+1)。

两个向量到了公共信道上就进行叠加,实际上就是线性相加,得到 S-T=(0 0 -2 2 0 -2 0 2)

到达C 站后,进行数据分离,如果要得到来自A站的数据,C站就必须知道A站的码片序列,让S与S-T进行规格化内积。根据叠加原理,其他站点的信号都在内积的结果中被过滤掉了,内积的相关项都是0,而只剩下 A 站发送的信号。得到 S*(S-T)=1 ,所以A 站发出的数据是1。同理,如果要得到来自B站的数据,那么 T* (S-T)=-1 因此从 B 站发送过来的信号向量是一个反码向量,代表 0。

规格化内积是线性代数中的内容,它是在得到两个向量的内积后再除以向量的分量的个数。

码分多路复用技术具有频谱利用率高、抗干扰能力强、保密性强、语音质量好等优点,还可以减少投资和降低运行成本,主要用于无线通信系统,特别是移动通信系统。


2. 随机访问介质访问控制 (动态)

在随机访问协议中,不采用集中控制方式解决发送信息的次序问题,所有用户能根据自己的意愿随机地发送信息,占用信道全部速率。在总线形网络中,当有两个或多个用户同时发送信息时,就会产生帧的冲突(碰撞,即前面所说的相互干扰),导致所有冲突用户的发送均以失败告终。为了解决随机接入发生的碰撞,每个用户需要按照一定的规则反复地重传它的帧,直到该帧无碰撞地通过。这些规则就是随机访问介质访问控制协议,常用的协议有 ALOHA 协议、CSMA 协议、CSMA/CD 协议和 CSMA/CA 协议等,它们的核心思想都是∶ 胜利者通过争用获得信道, 从而获得信息的发送权。因此,随机访问介质访问控制协议又称争用型协议。

如果介质访问控制采用信道划分机制,那么结点之间的通信要么共享空间,要么共享时间,要么两者都共享;

而如果采用随机访问控制机制,那么各结点之间的通信就可既不共享时间,也不共享空间。所以随机介质访问控制实质上是一种将广播信道转化为点到点信道的行为,如图 3.18 所示。

1.ALOHA 协议 (AdditiveLink On-lineHAwaisystem)

夏威夷大学早期研制的随机接入系统称为 ALOHA,它是AdditiveLink On-lineHAwaisystem 的缩写。ALOHA 协议分为纯 ALOHA 协议和时隙ALOHA协议两种。

(1)纯ALOHA 协议

纯 ALOHA 协议的基本思想是,当网络中的任何一个站点需要发送数据时,可以不进行任何检测就发送数据。如果在一段时间内未收到确认,那么该站点就认为传输过程中发生了冲突。发送站点需要等待一段时间后再发送数据,直至发送成功。图3.19 所示的模型不仅可代表总线形网络的情况,而且可以代表无线信道的情况。

图3.20表示一个纯 ALOHA 协议的工作原理。每个站均自由地发送数据帧。为简化问题,不考虑由信道不良而产生的误码,并假定所有站发送的帧都是定长的,帧的长度不用比特而用发送这个帧所需的时间来表示,在图 3.20 中用 T,表示这段时间。

​ 在图 3.20 的例子中,当站1发送帧1时,其他站都未发送数据,所以站1的发送必定是成功的。但随后站2和站 N-1发送的帧2和帧3在时间上重叠了一些(即发生了碰撞)。碰撞的结果是,碰撞双方(有时也可能是多方)所发送的数据出现了差错,因而都须进行重传。但是发生碰撞的各站并不能马上进行重传,因为这样做必然会继续发生碰撞。纯 ALOHA 系统采用的重传策略是让各站等待一段随机的时间,然后再进行重传。若再次发生碰撞,则需要再等待一段随机的时间,直到重传成功为止。图中其余一些帧的发送情况是帧4 发送成功,而帧5 和帧 6发生碰撞。

假设网络负载(T时间内所有站点发送成功的和未成功而重传的帧数)为 G,则纯 ALOHA 网络的吞吐量(T时间内成功发送的平均帧数)为S=Ge-2G。当G=0.5时,S=0.5e-1≈0.184, 这是吞吐量S可能达到的极大值。可见,纯 ALOHA网络的吞吐量很低。为了克服这一缺点,人 们在原始的纯 ALOHA协议的基础上进行改进,产生了时隙 ALOHA 协议。

(2)时隙 ALOHA 协议

时隙ALOHA协议把所有各站在时间上同步起来,并将时间划分为一段段等长的时隙(Slot), 规定只能在每个时隙开始时才能发送一个帧。从而避免了用户发送数据的随意性,减少了数据产生冲突的可能性,提高了信道的利用率。 图 3.21为两个站的时隙 ALOHA 协议的工作原理示意图。时隙的长度 T使得每个帧正好在一个时隙内发送完毕。每个帧在到达后,一般都要在缓存中等待一段小于T的时间,然后才能发送出去。在一个时隙内有两个或两个以上的帧到达时,在下一个时隙将产生碰撞。碰撞后重传的 策略与纯 ALOHA的情况是相似的。

时隙ALOHA网络的吞吐量S与网络负载G的关系是S=Ge-G。当G=1时,S=e-1≈0.368。 这是吞吐量S可能达到的极大值。可见,时隙ALOHA 网络比纯 ALOHA 网络的吞吐量大了1倍.

2.CSMA 协议 (Carrier Sense MultipleAcess)

时隙 ALOHA 系统的效率虽然是纯 ALOHA 系统的两倍,但每个站点都是随心所欲地发送数据的,即使其他站点正在发送也照发不误,因此发送碰撞的概率很大。 若每个站点在发送前都先侦听一下共用信道,发现信道空闲后再发送,则就会大大降低冲突的可能,从而提高信道的利用率,载波侦听多路访问协议CSMA依据的正是这一思想。CSMA协议是在 ALOHA协议基础上提出的一种改进协议,它与ALOHA 协议的主要区别是多了一个载波侦听装置。

根据侦听方式和侦听到信道忙后的处理方式不同,CSMA 协议分为三种。

(1)1-坚持CSMA

1-坚持 CSMA(1-persistent CSMA)的基本思想是∶一个结点要发送数据时,首先侦听信道∶ 如果信道空闲,那么立即发送数据∶如果信道忙,那么等待,同时继续侦听直至信道空闲;如果发生冲突,那么随机等待一段时间后,再重新开始侦听信道。

1-坚持的含义是∶侦听到信道忙后,继续坚持侦听信道;侦听到信道空闲后,发送帧的概率为1,即立刻发送数据。 (冲突方式1)传播延迟对1-坚持CSMA协议的性能影响较大。结点A开始发送数据时,结点B也正好有数据要发送,但这时结点 A发出数据的信号还未到达结点B,结点B 侦听到信道空闲,于是立即发送数据,结果必然导致冲突。即使不考虑延迟,1-坚持CSMA 协议也可能产生冲突。例如,(冲突方式2)结点A 正在发送数据时,结点B和C也准备发送数据,侦听到信道忙,于是坚持侦听,结果当结点A一 发送完毕,结点 B和 C 就会立即发送数据,同样导致冲突。

(2)非坚持 CSMA

非坚持 CSMA(Non-persistent CSMA)的基本思想是∶一个结点要发送数据时,首先侦听信道;如果信道空闲,那么立即发送数据;如果信道忙,那么放弃侦听,等待一个随机的时间后再重复上述过程。

非坚持 CSMA 协议在侦听到信道忙后就放弃侦听,因此降低了多个结点等待信道空闲后同时发送数据导致冲突的概率,但也会增加数据在网络中的平均延迟。可见,信道利用率的提高是以增加数据在网络中的延迟时间为代价的。

(3)p-坚持CSMA

p-坚持 CSMA(P-persistent CSMA)用于时分信道,其基本思想是∶一个结点要发送数据时, 首先帧听信道;如果信道忙,就持续侦听叹,直至信道空闲;如果信道空闲,那么以概率 p发送 数据,以概率1-p推迟到下一个时隙;如果在下一个时隙信道仍然空闲,那么仍以概率p发送数据,以概率1-p推迟到下一个时隙;这个过程一直持续到数据发送成功或因其他结点发送数据而检测到信道忙为止,若是后者,则等待下一个时隙再重新开始帧听。

p-坚持CSMA在检测到信道空闲后,以概率p发送数据,以概率1-p推迟到下一个时隙, 其目的是降低1-坚持CSMA协议中多个结点检测到信道空闲后同时发送数据的冲突概率;采用坚持帧听的目的是,试图克服非坚持 CSMA协议中由于随机等待而造成的延迟时间较长的缺点。 因此,p-坚持 CSMA协议是非坚持CSMA 协议和1-坚持CSMA 协议的折中方案。

三种不同类型的 CSMA 协议比较如表 3.1 所示。

3.CSMA/CD协议(Caier Sense MultipleAcesswith / Colision Detection)

载波侦听多路访问/碰撞检测(CSMA/CD) 协议是 CSMA协议的改进方案,适用于总线形网络或半双工网络环境。(如以太网)

载波帧听就是发送前先侦听,即每个站在发送数据之前先要检测一下总线上是否有其他站点正在发送数据,若有则暂时不发送数据,等待信道变为空闲时再发送。

碰撞检测就是边发送边侦听,即适配器边发送数据边检测信道上信号电压的变化情况,以便判断自己在发送数据时其他站点是否也在发送数据。

CSMA/CD 的工作流程可简单概括为先听后发,边听边发,冲突停发,随机重发。

1)适配器从网络层获得一个分组,封装成以太网帧,放入适配器的缓存,准备发送。

2)如果适配器侦听到信道空闲,那么它开始发送该帧。如果适配器侦听到信道忙,那么它持续侦听直至信道上没有信号能量,然后开始发送该帧。

3)在发送过程中,适配器持续检测信道。若一直未检测到碰撞,则顺利地把这个帧发送完毕。若检测到碰撞,则中止数据的发送,并发送一个拥塞信号,以让所有用户都知道。

4)在中止发送后,适配器就执行截断二进制指数退避(推迟的意思)算法,等待一段随机时间后返回到步骤2)。

电磁波在总线上的传播速率总是有限的,因此,当某个时刻发送站检测到信道空闲时,此时信道并不一定是空闲的。如图3.22 所示,设τ为单程传播时延。在t=0时,A发送数据。在t=τ-δ时, A发送的数据还未到达 B,由于B检测到信道空闲而发送数据。经过时间δ/2后,即在t=τ-δ/2 时,A发送的数据和B发送的数据发生碰撞,但这时A和B都不知道。在t=τ时,B检测到碰撞, 于是停止发送数据。在t=2τ-δ时,A 检测到碰撞,也停止发送数据。显然,CSMA/CD中的站不可能同时进行发送和接收,因此采用 CSMA/CD 协议的以太网只能进行半双工通信。

​ 由图 3.22 可知,站A在发送帧后至多经过时间 2τ(端到端传播时延的2 倍)就能知道所发送的帧有没有发生碰撞(当δ→0时)。因此把以太网端到端往返时间2τ称为争用期(又称冲突窗口或碰撞窗口)。每个站在自己发送数据之后的一小段时间内,存在发生碰撞的可能性,只有经过争用期这段时间还未检测到碰撞时,才能确定这次发送不会发生碰撞。

为了确保发送站在发送数据的同时能检测到可能存在的碰撞,需要在发送完帧之前就能收到自己发送出去的数据,即帧的传输时延至少要两倍于信号在总线中的传播时延,所以CSMA/CD 总线网中的所有数据帧都必须要大于一个最小帧长。任何站点收到帧长小于最小帧长的帧时,就把它当作无效帧立即丢弃。最小帧长的计算公式为

(MTU的最小值)最小帧长 = 总线传播时延×数据传输速率×2

例如,以太网规定取 51.2μs为争用期的长度。对于10Mb/s的以太网,在争用期内可发送512bit, 即64B。在以太网发送数据时,如果前64B未发生冲突,那么后续数据也就不会发生冲突(表示已成功抢占信道)。换句话说,如果发生冲突,那么就一定在前64B。由于一旦检测到冲突就立即停止发送,因此这时发送出去的数据一定小于64B。因此,以太网规定最短帧长为64B,凡长度小于 64B 的帧都是由于冲突而异常中止的无效帧,收到这种无效帧时应立即丢弃。

如果只发送小于64B的帧,如40B 的帧,那么需要在 MAC子层中于数据字段的后面加入一个整数字节的填充字段,以保证以太网的 MAC 帧的长度不小于64B。

除检测冲突外,CSMA/CD还能从冲突中恢复。一旦发生了冲突,参与冲突的两个站点紧接着再次发送是没有意义的,如果它们这样做,那么将会导致无休止的冲突。CSMA/CD采用二进制指数退避算法来解决碰撞问题。算法精髓如下∶

1)确定基本退避时间,一般取两倍的总线端到端传播时延 2τ(即争用期)。

2)定义参数k,它等于重传次数,但k不超过10,即k=min【重传次数,10】。当重传次数不超过10时,k等于重传次数;当重传次数大于 10时,k就不再增大而一直等于10(这个条件往往容易忽略,请读者注意)。

3)从离散的整数集合【0,1,…,2k-1】中随机取出一个数r,重传所需要退避的时间就是r倍的基本退避时间,即 2rτ。

4)当重传达16次仍不能成功时,说明网络太拥挤,认为此帧永远无法正确发出,抛弃此帧并向高层报告出错(这个条件也容易忽略,请读者注意)。

现在来看一个例子。假设一个适配器首次试图传输一帧,当传输时,它检测到碰撞。第1次 重传时,k=1,随机数r从整数{0,1}中选择,因此适配器可选的重传推迟时间是0或2τ。若再次发送碰撞,则在第2次重传时,随机数r从整数{0,1,2,3}中选择,因此重传推迟时间是在0,2τ, 4τ, 6τ 这 4个时间中随机地选取一个。以此类推。

使用二进制指数退避算法可使重传需要推迟的平均时间随重传次数的增大而增大(这也称动态退避),因而能降低发生碰撞的概率,有利于整个系统的稳定。

4. CSMA/CA (Colision Avoidance,CA)- 应用于无线局域网

协议 CSMA/CD 协议已成功应用于使用有线连接的局域网,但在无线局域网环境下,却不能简单地搬用 CSMA/CD 协议,特别是碰撞检测部分。主要有两个原因∶

1)接收信号的强度往往会远小于发送信号的强度,且在无线介质上信号强度的动态变化范围很大,因此若要实现碰撞检测,则硬件上的花费就会过大。

2)在无线通信中,并非所有的站点都能够听见对方,即存在隐蔽站问题。 为此,802.11 标准定义了广泛应用于无线局域网的CSMA/CA协议,它对CSMA/CD协议进行了修改,把碰撞检测改为碰撞避免(Colision Avoidance,CA)。碰撞避免并不是指协议可以完全避免碰撞,而是指协议的设计要尽量降低碰撞发生的概率。由于802.11无线局域网不使用碰撞检测,一旦站点开始发送一个帧,就会完全地发送该帧,但碰撞存在时仍然发送整个数据帧 (尤其是长数据帧)会严重降低网络的效率,因此要采用碰撞避免技术降低碰撞的可能性。

由于无线信道的通信质量远不如有线信道,802.11 使用链路层确认/重传(ARQ)方案,即站点每通过无线局域网发送完一帧,就要在收到对方的确认帧后才能继续发送下一帧。

为了尽量避免碰撞,802.11规定,所有的站完成发送后,必须再等待一段很短的时间(继续监听)才能发送下一帧。这段时间称为帧间间隔(InterFrame Space,IFS)。帧间间隔的长短取决于该站要发送的帧的类型。802.11 使用了3种 IFS∶

1)SIFS(短IFS)∶最短的IFS,用来分隔属于一次对话的各帧,使用SIFS的帧类型有ACK 帧、CTS 帧、分片后的数据帧,以及所有回答 AP 探询的帧等。

2)PIFS(点协调 IFS)∶中等长度的IFS,在PCF 操作中使用。

3)DIFS(分布式协调IFS)∶ 最长的 IFS,用于异步帧竞争访问的时延。

CSMA/CA 的退避算法和 CSMA/CD的稍有不同(见教材)。信道从忙态变为空闲态时,任何一个站要发送数据帧,不仅都要等待一个时间间隔,而且要进入争用窗口,计算随机退避时间以便再次试图接入信道,因此降低了碰撞发生的概率。当且仅当检测到信道空闲且这个数据帧是要发送的第一个数据帧时,才不使用退避算法。其他所有情况都必须使用退避算法,具体为∶① 在发送第一个帧前检测到信道忙; ② 每次重传;③ 每次成功发送后要发送下一帧。

CSMA/CA 算法归纳如下∶

1)若站点最初有数据要发送(而不是发送不成功再进行重传),且检测到信道空闲,在等待时间 DIFS后,就发送整个数据帧。

2)否则,站点执行 CSMA/CA 退避算法,选取一个随机回退值。一旦检测到信道忙,退避计时器就保持不变。只要信道空闲,退避计时器就进行倒计时。

3)当退避计时器减到0时(这时信道只可能是空闲的),站点就发送整个帧并等待确认。

4)发送站若收到确认,就知道已发送的帧被目的站正确接收。这时如果要发送第二帧,就 要从步骤 2)开始。

若发送站在规定时间内没有收到确认帧ACK(由重传计时器控制),就必须重传该帧,再次使用 CSMA/CA 协议争用该信道,直到收到确认,或经过若干次重传失败后放弃发送。

处理隐蔽站问题∶ RTS 和 CTS

在图3.23中,站A和B都在AP的覆盖范围内,但A和B相距较远,彼此都听不见对方。 当A 和 B 检测到信道空闲时,都向 AP发送数据,导致碰撞的发生,这就是隐蔽站问题。 为了避免该问题,802.11允许发送站对信道进行预约,源站要发送数据帧之前先广播一个短请求发送 RTS 控制帧,它包括源地址、目的地址和这次通信(含相应的确认帧)所持续的时间,该帧能被其范围内包括 AP在内的所有站点听到。若信道空闲,则AP广播一个允许发送 CTS 控制帧,它包括这次通信所需的持续时间(从RTS帧复制),该帧也能被其范围内包括 A和 B在内的所有站点听到。B和其他站听到CTS后,在CTS帧中指明的时间内将抑制发送, 如图 3.24 所示。CTS 帧有两个目的∶① 给源站明确的发送许可;② 指示其他站点在预约期内不要发送。

这种机制实质上是在发送数据帧之前先对信道进行预约。使用RTS 和CTS 帧会使网络效率有所下降,但这两种帧都很短,与数据帧相比开销不算大。相反,若不使用这种控制帧,一旦发生碰撞而导致数据帧重发,则浪费的时间更多。因此,协议设有三种情况供用户选择∶第一种是使用 RTS 和 CTS 帧;第二种是只有当数据帧的长度超过某一阈值时才使用RTS和 CTS 帧(显然数据帧本身很短,再使用 RTS 和 CTS 帧只能增加开销);第三种是不使用RTS 和 CTS帧。

CSMA/CD与CSMA/CA 主要有如下区别∶

1)CSMA/CD可以检测冲突,但无法避免;CSMA/CA发送数据的同时不能检测信道上有无冲突,本结点处没有冲突并不意味着在接收结点处就没有冲突,只能尽量避免。

2)传输介质不同。CSMA/CD用于总线形以太网,CSMACA用于无线局域网802.11abgh等。

3)检测方式不同。CSMA/CD 通过电缆中的电压变化来检测;而 CSMA/CA采用能量检测、 载波检测和能量载波混合检测三种检测信道空闲的方式。

总结∶ CSMA/CA 协议的基本思想是在发送数据时先广播告知其他结点,让其他结点在某段时间内不要发送数据,以免出现碰撞。CSMA/CD协议的基本思想是发送前侦听,边发送边侦听,一旦出现碰撞马上停止发送。

3. 轮询访问介质访问控制∶****令牌传递协议

在轮询访问中,用户不能随机地发送信息,而要通过一个集中控制的监控站,以循环方式轮询每个结点,再决定信道的分配。当某结点使用信道时,其他结点都不能使用信道。典型的轮询访问介质访问控制协议是令牌传递协议,它主要用在令牌环局域网中。

在令牌传递协议中,一个令牌在各结点间以某个固定次序交换。令牌是由一组特殊的比特组合而成的帧。当环上的一个站希望传送帧时,必须等待令牌。一旦收到令牌,站点便可启动发送帧。帧中包括目的站的地址,以标识哪个站应接收此帧。帧在环上传送时,不管该帧是否是发给本站点的,所有站点都进行转发,直到该帧回到它的始发站,并由该始发站撤销该帧。帧的目的站除转发帧外,应针对该帧维持一个副本,并通过在帧的尾部设置响应比特来指示已收到此副本。站点在发送完一帧后,应释放令牌,以便让其他站使用。

当计算机都不需要发送数据时,令牌就在环形网上游荡,而需要发送数据的计算机只有在拿到该令牌后才能发送数据帧,因此不会发送冲突(因为令牌只有一个)。(每个结点在一定时间内(令牌持有时间)获得发送数据的权力,并非无限制的持有令牌。)

在令牌传递网络中,传输介质的物理拓扑不必是一个环,但是为了把对介质访问的许可从一个设备传递到另一个设备,令牌在设备间的传递通路逻辑上必须是一个环。轮询介质访问控制非常适合负载很高的广播信道。所谓负载很高的信道,是指多个结点在同一时刻发送数据概率很大的信道。可以想象,如果这样的广播信道采用随机介质访问控制,那么发生冲突的概率将会很大,而采用轮询介质访问控制则可以很好地满足各结点间的通信需求。 轮询介质访问控制既不共享时间,也不共享空间,它实际上是在随机介质访问控制的基础上,限定了有权力发送数据的结点只能有一个。 即使是广播信道也可通过介质访问控制机制使广播信道逻辑上变为点对点的信道,所以说数据链路层研究的是点到点之间的通信。

六. 局域网 (工作在物理层和数据链路层)

1. 局域网的基本概念和体系结构

局域网(LocalArea Network,LAN)是指在一个较小的地理范围(如一所学校)内,将各种计算机、外部设备和数据库系统等通过双绞线、同轴电缆等连接介质互相连接起来,组成资源和信息共享的计算机互联网络。主要特点如下∶

1)为一个单位所拥有,且地理范围和站点数目均有限。

2)所有站点共享较高的总带宽(即较高的数据传输速率)。

3)较低的时延和较低的误码率。

4)各站为平等关系而非主从关系。

5)能进行广播和组播。

局域网的特性主要由三个要素决定∶拓扑结构、传输介质、介质访问控制方式,其中最重要的是介质访问控制方式,它决定着局域网的技术特性。

常见的局域网拓扑结构主要有以下4大类∶①星形结构; ②环形结构;③总线形结构;④星形和总线形结合的复合型结构。

局域网可以使用双绞线、铜缆和光纤等多种传输介质,其中双绞线为主流传输介质。

局域网的介质访问控制方法主要有 CSMA/CD、令牌总线和令牌环,其中前两种方法主要用于总线形局域网,令牌环主要用于环形局域网。

三种特殊的局域网拓扑实现如下∶

● 以太网(目前使用范围最广的局域网)。逻辑拓扑是总线形结构,物理拓扑是星形或拓展星形结构。

● 令牌环(Token Ring,EEE 802.5)。逻辑拓扑是环形结构,物理拓扑是星形结构。

● FDDI(光纤分布数字接口,IEEE 802.8)。逻辑拓扑是环形结构,物理拓扑是双环结构。

IEEE 802 标准定义的局域网参考模型只对应于 OSI 参考模型的数据链路层和物理层,并将数据链路层拆分为两个子层∶逻辑链路控制(LLC)子层和媒体接入控制(MAC)子层。

与接入传输媒体有关的内容都放在MAC子层,它向上层屏蔽对物理层访问的各种差异,提供对物理层的统一访问接口,MAC子层主要功能包括∶组帧和拆卸帧、比特传输差错检测、透明传输。

LLC子层与传输媒体无关,它向网络层提供无确认无连接、面向连接、带确认无连接、高速传送4种不同的连接服务类型。(建立和释放数据链路层的逻辑链接,提供与高层的接口,差错控制,给帧加上序号)

​ 于以太网在局域网市场中取得垄断地位,几乎成为局域网的代名词,而 802 委员会制定的 LLC子层作用已经不大,因此现在许多网卡仅装有MAC 协议而没有 LLC 协议。IEEE 802 协议层与OSI参考模型的比较如图3.25 所示。

2. 以太网与IEEE 802.3 (局域网的一种实现方式)

IEEE 802.3 标准是一种基带总线形的局域网标准,它描述物理层和数据链路层的MAC子层的实现方法。随着技术的发展,该标准又有了大量的补充与更新,以支持更多的传输介质和更高的传输速率。

以太网逻辑上采用总线形拓扑结构,以太网中的所有计算机共享同一条总线,信息以广播方式发送。为了保证数据通信的方便性和可靠性,以太网简化了通信流程并使用了CSMA/CD方式对总线进行访问控制。

严格来说,以太网应当是指符合DIXEthermetV2标准的局域网,但DIXEthermetV2标准与 IEE 802.3 标准只有很小的差别,因此通常将802.3 局域网简称为以太网。

以太网采用两项措施以简化通信∶

① 采用无连接的工作方式,不对发送的数据帧编号,也不要求接收方发送确认,即以太网尽最大努力交付数据,提供的是不可靠服务,对于差错的纠正则由高层完成;

② 发送的数据都使用曼彻斯特编码的信号,每个码元的中间出现一次电压转换,接收端利用这种电压转换方便地把位同步信号提取出来。

1.以太网的传输介质与网卡

以太网常用的传输介质有 4 种∶粗缆、细缆、双绞线和光纤。各种传输介质的适用情况见表3.2。

注意∶ 10BASE-T 非屏蔽双绞线以太网拓扑结构为星形网,星形网中心为集线器,但使用集线器的以太网在逻辑上仍然是一个总线网,属于一个冲突域。上表的内容是常识,例如题目中出现1OBASE5时,是不会显式地告诉你它的传输媒体、编码方式、拓扑结构等信息的。

计算机与外界局域网的连接是通过主机箱内插入的一块网络接口板-网卡 【又称网络适配器(Adapter) 或网络接口卡(Network Interface Card,NIC)】实现的。网卡上装有处理器和存储器,是工作在数据链路层的网络组件。网卡和局域网的通信是通过电缆或双绞线以串行方式进行的,而网卡和计算机的通信则是通过计算机主板上的LO 总线以并行方式进行的。因此,网卡的重要功能就是进行数据的串并转换。网卡不仅能实现与局域网传输介质之间的物理连接和电信号匹配,还涉及帧的发送与接收、 帧的封装与拆封、介质访问控制、数据的编码与解码及数据缓存功能等。

全世界的每块网卡在出厂时都有一个唯一的代码,称为介质访问控制(MAC)地址,这个地址用于控制主机在网络上的数据通信。数据链路层设备(网桥、交换机等)都使用各个网卡的MAC 地址。另外,网卡控制着主机对介质的访问,因此网卡也工作在物理层,因为它只关注比特,而不关注任何地址信息和高层协议信息。

2. 以太网的 MAC 帧

每块网卡中的 MAC地址也称物理地址;MAC地址长6字节,一般用由连字符(或冒号)分隔的12个十六进制数表示,如02-60-8c-e4-b1-21。高24位为厂商代码,低24位为厂商自行分配的网卡序列号。严格来讲,局域网的地址应是每个站的名字或标识符。

由于总线上使用的是广播通信,因此网卡从网络上每收到一个MAC帧,首先要用硬件检查 MAC 帧中的MAC 地址。如果是发往本站的帧,那么就收下,否则丢弃。

以太网 MAC帧格式有两种标准∶DIX Ethemnet V2 标准(即以太网V2标准)和IEEE 802.3 标准。这里先介绍最常用的以太网V2的MAC帧格式,如图3.26 所示。

前导码∶使接收端与发送端时钟同步。在帧前面插入的8字节可再分为两个字段∶第一个字段共7字节,是前同步码,用来快速实现 MAC帧的比特同步;第二个字段是帧开始定界符,表示后面的信息就是 MAC帧。

注意∶ MAC帧并不需要帧结束符,因为以太网在传送帧时,各帧之间必须有一定的间隙。 因此,接收端只要找到帧开始定界符,其后面连续到达的比特流就都属于同一个MAC帧,所以图 3.26 只有帧开始定界符。但不要误以为以太网 MAC帧不需要尾部,在数据链路层上,帧既要加首部,也要加尾部。

地址∶通常使用 6 字节(48bit)地址(MAC地址)。

类型∶2 字节,指出数据域中携带的数据应交给哪个协议实体处理。 (即上层的协议类型)

数据∶46~1500字节,包含高层的协议消息。由于CSMA/CD算法的限制,以太网帧必须满足最小长度要求 64 字节,数据较少时必须加以填充(0~46 字节)。

注意∶ 46和 1500是怎么来的?首先,由CSMA/CD算法可知以太网帧的最短帧长为64B,而MAC帧的首部和尾部的长度为 18字节,所以数据字段最短为 64-18=46字节。其次,最大的 1500字节是规定的,没有为什么。

填充∶0~46 字节,当帧长太短时填充帧,使之达到64 字节的最小长度。

校验码(FCS)∶4 字节,校验范围从目的地址段到数据段的末尾,算法采用32 位循环冗余码(CRC),不但需要检验MAC帧的数据部分,还要检验目的地址、源地址和类型字段,但不校验前导码。

802.3 帧格式与 DIX以太帧格式的不同之处在于用长度域替代了DIX帧中的类型域,指出数据域的长度。在实践中,前述长度/类型两种机制可以并存,由于EE802.3 数据段的最大字节数是 1500,所以长度段的最大值是 1500,因此从1501到65535的值可用于类型段标识符。

对于检查出无效的MAC帧就简单的丢弃,以太网不负责重传帧。

无效的MAC帧:

  1. 帧的长度不是整数个字节
  2. 用收到的帧检验序列FCS查出有差错
  3. 收到的帧的MAC客户数据字段的长度不在46-1500字节之间。(MAC帧首和帧尾共18字节,有效MAC帧长度为64-1518字节之间)

3.高速以太网

速率达到或超过 100Mb/s 的以太网称为高速以太网。

(1)100BASE-T

以太网 10OBASE-T 以太网是在双绞线上传送 10Mb/s 基带信号的星形拓扑结构以太网,它使用 CSMA/CD 协议。这种以太网既支持全双工方式,又支持半双工方式,可在全双工方式下工作而无冲突发生。因此,在全双工方式下不使用 CSMA/CD 协议。

MAC帧格式仍然是802.3 标准规定的。保持最短帧长不变,但将一个网段的最大电缆长度减小到100m。帧间时间间隔从原来的9.6μs 改为现在的 0.96μus。

(2)吉比特以太网

吉比特以太网又称千兆以太网,允许在1Gb/s下用全双工和半双工两种方式工作。使用802.3 协议规定的帧格式。在半双工方式下使用CSMA/CD协议(全双工方式不需要使用CSMA/C议)。与10BASE-T和 100BASE-T技术向后兼容。

(3)10吉比特以太网

10吉比特以太网与10Mb/s、100Mb/s 和1Gb/s 以太网的帧格式完全相同。10吉比特以太网还保留了802.3 标准规定的以太网最小和最大帧长,便于升级。10吉比特以太网不再使用铜线而只使用光纤作为传输媒体。1吉比特以太网只工作在全双工方式,因此没有争用问题,也不使用 CSMA/CD协议。

以太网从10Mb/s到10Gb/s 的演进证明了以太网是可扩展的(从10Mb/s 到10Gb/s)、灵活的(多种传输媒体、全/半双工、共享/交换),易于安装,稳健性好。(吉比特以太网的物理层有两个标准∶IEEE 802.3z和IEEE 802.3ab,前者采用光纤通道,后者采用 4对UTP5 类线。)

3. IEEE 802.11

无线局域网可分为两大类∶有固定基础设施无线局域网和无固定基础设施移动自组织网络。所谓固定基础设施,是指预先建立的、能覆盖一定地理范围的固定基站。

1.有固定基础设施无线局域网

对于有固定基础设施的无线局域网,IEEE 制定了无线局域网的802.11系列协议标准,包括 802.11a/b/g/n等。802.11 使用星形拓扑,其中心称为接入点(Acess Point,AP),在MAC层使用 CSMA/CA 协议。(即不进行冲突检测)使用 802.11 系列协议的局域网又称Wi-Fi。

802.11 标准规定无线局域网的最小构件是基本服务集BSS(Basic Service Set,BSS)。一个基本服务集包括一个基站和若干移动站。所有的站在本BSS 内都可以直接通信,但在和本 BSS 外的站通信时都必须通过本BSS 的基站。上面提到的AP就是基本服务集中的基站(base stion)。安装AP时,必须为该AP分配一个不超过32字节的服务集标识符(ServiceSetIDentifier,SSID)和一个信道。一个基本服务集覆盖的地理范围称为一个基本服务区(Basic Service Area,BSA),无线局域网的基本服务区的直径一般不超过100m。

一个基本服务集可以是孤立的,也可通过AP连接到一个分配系统(Distribution System,DS), 然后连接到另一个基本服务集,构成一个扩展的服务集(Extended Service Set,ESS),ESS 还可以通过一种称为 Portal(门桥)的设备为无线用户提供到有线连接的以太网的接入。门桥的作用相当于一个网桥。在图3.27中,移动站A如果要和另一个基本服务集中的移动站B通信,就必须经过两个接入点AP1和AP2,即A→AP1→AP2→B,注意AP1到AP2 的通信是使用有线传输的。

移动站A从某个基本服务集漫游到另一个基本服务集时(图3.27中的A’),仍然可保持与另一个移动站B的通信。但A在不同的基本服务集使用的AP改变了.

2.无固定基础设施移动自组织网络

另一种无线局域网是无固定基础设施的无线局域网,又称自组网络(ad hoc network)。自组网络没有上述基本服务集中的 AP,而是由一些平等状态的移动站相互通信组成的临时网络(见图3.28)。各结点之间地位平等,中间结点都为转发结点,因此都具有路由器的功能。

​ 自组网络通常是这样构成的∶一些可移动设备发现在它们附近还有其他的可移动设备,并且要求和其他移动设备进行通信。自组网络中的每个移动站都要参与网络中其他移动站的路由的发现和维护,同时由移动站构成的网络拓扑可能随时间变化得很快,因此在固定网络中行之有效的一些路由选择协议对移动自组网络已不适用,需引起特别的关注。

自组网络和移动IP并不相同。移动 IP技术使漫游的主机可以用多种方法连接到因特网,其核心网络功能仍然是基于固定网络中一直使用的各种路由选择协议。而自组网络是把移动性扩展到无线领域中的自治系统,具有自己特定的路由选择协议,并且可以不和因特网相连。

4. 令牌环网的基本原理

令牌环网的基本原理如图3.29 所示。令牌环网的每一站通过电缆与环接口干线耦合器(TCU) 相连。TCU的主要作用是,传递所有经过的帧,为接入站发送和接收数据提供接口。与此对应,TCU 的状态也有两个∶收听状态和发送状态。数据总是在某个特定的方向上从一个TCU 到下一个 TCU 逐比特地依次传送,每个TCU 重新产生并重新传输每一比特。

令牌环网的媒体接入控制机制采用的是分布式控制模式的循环方法。在令牌环网中有一个令牌(Token)沿着环形总线在入网结点计算机间依次传递,令牌实际上是一个特殊格式的MAC控制帧,它本身并不包含信息,仅控制信道的使用,确保在同一时刻只有一个结点能够独占信道。站点只有取得令牌后才能发送数据帧,因此令牌环网不会发生碰撞。由于令牌在网环上是按顺序依次传递的,因此对所有入网计算机而言,访问权是公平的。(每个结点在一定时间内(令牌持有时间)获得发送数据的权力,并非无限制的持有令牌)

令牌环网中令牌和数据的传递过程如下∶

1)网络空闲时,环路中只有令牌帧在循环传递。

2)令牌传递到有数据要发送的站点处时,该站点就修改令牌中的一个标志位,并在令牌中附加自己需要传输的数据,将令牌变成一个数据帧,然后将这个数据帧发送出去。

3)数据帧沿着环路传输,接收到的站点一边转发数据,一边查看帧的目的地址。如果目的地址和自己的地址相同,那么接收站就复制该数据帧以便进一步处理。

4)数据帧沿着环路传输,直到到达该帧的源站点,源站点接收到自己发出去的数据帧后便不再进行转发。同时,发送方可以通过检验返回的数据帧来查看数据传输过程中是否有错,若有错则重传该帧。

5)源站点传送完数据后,重新产生一个令牌,并将令牌传递给下一个站点,以交出对媒体的访问权限。

令牌环网在物理上采用星形拓扑结构,但逻辑上仍是环形拓扑结构,其标准由TEEE802.5定 义。图3.29 中的环并不是由通信线路连接而成的物理环

七. 广域网 (工作在OSI下三层)

1. 广域网的基本概念

广域网通常是指覆盖范围很广(远超一个城市的范围)的长距离网络。广域网是因特网的核心部分,其任务是长距离运送主机所发送的数据。连接广域网各结点交换机的链路都是高速链路, 它可以是长达几千千米的光缆线路,也可以是长达几万千米的点对点卫星链路。因此广域网首要考虑的问题是通信容量必须足够大,以便支持日益增长的通信量。

广域网不等于互联网,广域网是单一的网络;互联网可以连接不同类型的网络(既可以连接局域网,又可以连接广域网),通常使用路由器来连接。图3.30显示了由相距较远的局域网通过路由器与广域网相连而成的一个覆盖范围很广的互联网。因 此,局域网可以通过广域网与另一个相隔很远的局域网通信。

广域网由一些结点交换机及连接这些交换机的链路组成,即使用交换机连接割台主机或路由器。(注意不是路由器,结点交换机和路由器都用来转发分组,它们的工作原理也类似。结点交换机在单个网络中转发分组,而路由器在多个网络构成的互联网中转发分组)结点交换机的功能是将分组存储并转发。结点之间都是点到点连接,但为了提高网络的可靠性,通常一个结点交换机往往与多个结点交换机相连。

从层次上考虑,广域网和局域网的区别很大,因为局域网使用的协议主要在数据链路层(还有少量在物理层),而广域网使用的协议主要在网络层。

怎么理解局域网使用的协议主要在数据链路层,而广域网使用的协议主要在网络层这句话呢?

如果网络中的两个结点要进行数据交换,那么结点除要给出数据外,还要给数据包装上一层控制信息,用于实现检错纠错等功能。 如果这层控制信息是数据链路层协议的控制信息,那么就称使用了数据链路层协议,如果这层控制信息是网络层的控制信息,那么就称使用了网络层协议。

​ 它们的区别与联系见表3.3。

广域网中的一个重要问题是路由选择和分组转发。路由选择协议负责搜索分组从某个结点到目的结点的最佳传输路由,以便构造路由表,然后从路由表再构造出转发分组的转发表。分组是通过转发表进行转发的。

PPP 协议和HDLC 协议是目前最常用的两种广域网数据链路层控制协议。

2. PPP 协议 (面向字节)

PPP(Point-to-Point Protocol)是使用串行线路通信的面向字节的协议,该协议应用在直接连接两个结点的链路上。设计的目的主要是用来通过拨号(动态分配IP地址)或专线方式建立点对点连接发送数据,使其成为各种主机、网桥和路由器之间简单连接的一种共同的解决方案。

PPP 协议是在 SLP 协议的基础上发展而来的,它既可以在异步线路上传输,又可在同步线路上使用; 不仅用于 Modem 链路,也用于租用的路由器到路由器的线路。

背景∶SLIP主要完成数据报的传送,但没有寻址、数据检验、分组类型识别和数据压缩等功能,只能传送 IP分组。如果上层不是IP协议,那么无法传输,并且此协议对一些高层应用也不支持,但实现比较简单。为了改进 SLIP的缺点,于是制定了点对点协议(PPP)。

PPP协议有三个组成部分∶

1)链路控制协议(LCP)。一种扩展链路控制协议,用于建立、配置、测试和管理数据链路。PPP协议帧在默认配置下,地址与控制域总是常量,所以LCP提供了必要协商机制。在建立连接状态阶段,LCP协商数据链路协议中的选项,提供一种协商选择的机制。

2)网络控制协议(NCP)。PPP协议允许同时采用多种网络层协议,每个不同的网络层协议要用一个相应的 NCP 来配置,为网络层协议建立和配置逻辑连接。

3)一个将IP数据报封装到串行链路的方法。IP数据报在PPP帧中就是其信息部分,这个信息部分的长度受最大传送单元(MTU)的限制。

PPP帧的格式如图3.31所示。PPP帧的前3个字段和最后2个字段与HDLC帧是一样的,

第1个字段标志字段(F)仍为7E(01110),前后各占1字节,若它出现在信息字段中,就必须做字节填充,使用的控制转义字节是7D(011101)。

但在PPP中,第2个字段地址字段(A)占1字节,规定为0xF,

第3个字段控制字段(C)占1字节,规定为0x03,两者的内容始终是固定不变的。

PP是面向字节的,因而所有PPP帧的长度都是整数个字节。

PPP协议帧由首部(四个字段),数据部分(IP数据报),尾部(2个字段)组成。

第4个字段是协议段,占2字节,在HDLC中没有该字段,它是说明信息段中运载的是什么种类的分组(即上层是什么协议)。以比特0开始的是诸如IP、IPX和 AppleTalk 这样的网络层协议;以比特1开始的被用来协商其他协议,包括LCP及每个支持的网络层协议的一个不同的NCP。

第5段信息段的长度是可变的,大于等于0且小于等于1500B。为了实现透明传输,当信息段中出现和标志字段一样的比特组合时,必须采用一些措施来改进。

注意∶ 因为 PPP是点对点的,并不是总线形,所以无须采用 CSMA/CD 协议,自然就没有最短帧,所以信息段占0~1500 字节,而不是 46-1500 字节。另外,当数据部分出现和标志位一样的比特组合时,就需要采用一些措施来实现透明传输。

第6个字段是帧检验序列(FCS),占2字节,即循环冗余码检验中的冗余码。检验区包括地址字段、控制字段、协议字段和信息字段。

第7个字段也是标志字段(F):表示字节帧的结束符。

​ 图3.32 给出了PPP链路建立、使用、撤销所经历的状态图。当线路处于静止状态时,不存在物理层连接。当线路检测到载波信号时,建立物理连接,线路变为建立状态。此时,LCP开始选项商定,商定成功后就进入身份验证状态。双发身份验证通过后,进入网络状态。这时,采用 NCP 配置网络层,配置成功后,进入打开状态,然后就可进行数据传输。当数据传输完成后,线路转为终止状态。载波停止后则回到静止状态。

注意∶ 1)PPP 提供差错检测但不提供纠错功能,只保证无差错接收(通过硬件进行 CRC 校验)。 它是不可靠的传输协议,因此也不使用序号和确认机制。

2)它仅支持点对点的链路通信,不支持多点线路。

3)PPP 只支持全双工链路。

4)PPP的两端可以运行不同的网络层协议,但仍然可使用同一个 PPP进行通信。

5)PPP是面向字节的,当信息字段出现和标志字段一致的比特组合时,PPP有两种不同的处理方法∶ 1.若 PPP 用在异步线路(默认),则采用字节填充法;2.若PPP 用在 SONET/SDH 等同步线路,则协议规定采用和硬件来完成比特填充(HDLC 的做法一样)。

3. HDLC协议 (面向比特)

高级数据链路控制(High-level Data Link Control,HDLC)协议是ISO制定的面向比特(记住PPP协议是面向字节的)的数据链路层协议。该协议不依赖于任何一种字符编码集;数据报文可透明传输,用于实现透明传输的0比特插入法易于硬件实现;全双工通信,有较高的数据链路传输效率;所有帧采用 CRC 检验,对信息帧进行顺序编号,可防止漏收或重发,传输可靠性高; 传输控制功能与处理功能分离,具有较大的灵活性。

HDLC适用于链路的两种基本配置∶ 非平衡配置和平衡配置。

1)非平衡配置的特点是由一个主站控制整个链路的工作。

2)平衡配置的特点是链路两端的两个站都是复合站,每个复合站都可以平等地发起数据传输,而不需要得到对方复合站的允许。

1.站 HDLC

有3种站类型∶主站、从站和复合站。

主站负责控制链路的操作,主站发出的帧称为命令帧。

从站受控于主站,按主站的命令进行操作;发出的帧称为响应帧。

另外,有些站既具有主站的功能,又具有从站的功能,所以这类站称为复合站,它可以发出命令帧和响应帧。

2.数据操作方式

HDLC 有 3种数据操作方式∶

1)正常响应方式。这是一种非平衡结构操作方式,即主站向从站传输数据,从站响应传输,但从站只有在收到主站的许可后,才可进行响应。

2)异步平衡方式。这是一种平衡结构操作方式。在这种方式中,每个复合站都可以进行对另一站的数据传输。

3)异步响应方式。这是一种非平衡结构操作方式。在这种方式中,从站即使未受到主站的允许,也可进行传输。

3.HDLC帧

​ 图3.33 所示为HDLC的帧格式,它由标志、地址、控制、信息和帧校验序列(FCS)等字段 构成。

标志字段F,为 0111110。在接收端只要找到标志字段就可确定一个帧的位置。HDLC协议采用比特填充的首尾标志法实现透明传输。在发送端,当一串比特流数据中有5个连续的1时, 就立即在其后填入一个0。接收帧时,先找到F字段以确定帧的边界,接着对比特流进行扫描。 每当发现5 个连续的1时,就将其后的一个0删除,以还原成原来的比特流。

地址字段A,共8位,在使用非平衡方式传送数据时,站地址字段总是写入从站的地址; 在使用平衡方式传送数据时,站地址字段填入的是应答站的地址。

控制字段 C,共8位,是最复杂的字段。HDLC 的许多重要功能都靠控制字段来实现。根据其第1位或第1、2 位的取值,可将HDLC 帧划分为三类∶

1)信息帧(D),第1位为0,用来传输数据信息,或使用捎带技术对数据进行确认。

2)监督帧(S),第 1、2 位分别为1、0,用于流量控制和差错控制,执行对信息帧的确认、请求重发和请求暂停发送等功能;

3)无编号帧(U),第 1、2 位均为1,用于提供对链路的建立、拆除等多种控制功能。

由图3.31和图3.33 可知,PPP 帧和HDLC帧的格式很相似。但两者有以下几点不同∶

1)PPP 协议是面向字节的,HDLC 协议是面向比特的。

2)PPP帧比 HDLC帧多一个2字节的协议字段。当协议字段值为0x0021时,表示信息字段是IP数据报。

3)PPP 协议不使用序号和确认机制,只保证无差错接收(通过硬件进行 CRC 检验),而端到端差错检测由高层协议负责。HDLC协议的信息帧使用了编号和确认机制,能够提供可靠传输。

八. 数据链路层设备 (在数据链路层扩展以太网)

1. 网桥的概念及其基本原理 (最初使用的是网桥)

两个或多个以太网通过网桥连接后,就成为一个覆盖范围更大的以太网,而原来的每个以太网就称为一个网段。网桥工作在链路层的MAC子层,可以使以太网各网段成为隔离开的碰撞域。 如果把网桥换成工作在物理层的转发器,那么就没有这种过滤通信量的功能。由于各网段相对独立,因此一个网段的故障不会影响到另一个网段的运行。

注意∶ 网桥处理数据的对象是帧,所以它是工作在数据链路层的设备,中继器、放大器处理数据的对象是信号,所以它是工作在物理层的设备。

网络1和网络2通过网桥连接后,网桥接收网络1发送的数据帧,检查数据帧中的地址,如果是网络2的地址,那么就转发给网络2;如果是网络1的地址,那么就将其丢弃,因为源站和目的站处在同一个网段,目的站能够直接收到这个帧而不需要借助网桥转发。

如图 3.34 所示,设每个网段的数据率都是10Mb/s,那么三个网段合起来的最大吞吐量就变成了30Mb/s。如果把两个网桥换成集线器或转发器,那么整个网络仍然是一个碰撞域(即冲突域),当 A和B 通信时,所有其他站点都不能通信,整个碰撞域的最大吞吐量仍然是10Mb/s。

网桥的基本特点∶

①网桥必须具备寻址和路径选择能力,以确定帧的传输方向;

②从源网络接收帧,以目的网络的介质访问控制协议向目的网络转发该帧;(MAC协议)

③网桥在不同或相同类型的LAN之间存储并转发帧,必要时还进行链路层上的协议转换。注意,一般情况下,存储转发类设备都能进行协议转换,即连接的两个网段可以使用不同的协议;

④网桥对接收到的帧不做任何修改,或只对帧的封装格式做很少的修改;

⑤网桥可以通过执行帧翻译互联不同类型的局域网,即把原协议的信息段的内容作为另一种协议的信息部分封装在帧中;

⑥网桥应有足够大的缓冲空间,因为在短时间内帧的到达速率可能高于转发速率。

网桥的优点∶①能过滤通信量;②扩大了物理范围;③可使用不同的物理层;④可互联不同类型的局域网; ⑤提高了可靠性;⑥性能得到改善。

网桥的缺点∶①增大了时延;②MAC子层没有流量控制功能(流量控制需要用到编号机制, 编号机制的实现在LLC子层);③不同MAC子层的网段桥接在一起时,需要进行帧格式的转换; ④网桥只适合于用户数不多和通信量不大的局域网,否则有时还会因传播过多的广播信息而产生网络拥塞,这就是所谓的广播风暴。

网桥必须具有路径选择的功能,接收到帧后,要决定正确的路径,将该帧转送到相应的目的局域网站点。根据路径选择算法的不同,可将网桥分为透明网桥和源路由网桥。

1.透明网桥(选择的不是最佳路由)

透明网桥以混杂方式工作,它接收与之连接的所有LAN 传送的每一帧。到达帧的路由选择过程取决于源LAN和目的LAN∶

①如果源LAN和目的LAN相同,那么丢弃该帧∶

②如果源LAN 和目的LAN不同,那么转发该帧;

③如果目的LAN未知,那么扩散该帧。

当网桥刚连接到以太网时,其转发表是空的,网桥按照自学习算法处理收到的帧。(以太网交换机与之类型,其网桥的改进版)该算法的基本思想是∶若从站A发出的帧从某端口进入网桥,那么从这个端口出发沿相反方向一定可把一个帧传送到站A。所以网桥每收到一个帧,就记下其源地址和进入网桥的端口,作为转发表中的一个项目(源地址、进入的接口和时间)。在建立转发表时,把帧首部中的源地址写在地址 一栏的下面。在转发帧时,则根据收到的帧首部中的目的地址来转发。这时就把在地址栏下面已经记下的源地址当作目的地址,而把记下的进入端口当作转发端口。网桥就是在这样的转发 过程中逐渐将其转发表建立起来的。 为了避免转发的帧在网络中不断地兜圈子,透明网桥使用了一种生成树算法(无环),以确保每个源到每个目的地只有唯一的路径。生成树使得整个扩展局域网在逻辑上形成树形结构, 所以工作时逻辑上没有环路,但生成树一般不是最佳路由。

2.源路由网桥(选择的是最佳路由)

在源路由网桥中,路由选择由发送数据帧的源站负责,网桥只根据数据真正的路由信息对帧进行接收和转发。

源路由网桥对主机是不透明的,主机必须知道网桥的标识及连接到哪个网段上。路由选择由发送帧的源站负责,那么源站如何知道应当选择什么样的路由呢?为了找到最佳的路由,源站以广播方式向目的站发送一个发现帧(Discovery Frame)作为探测之用。源路由的生成过程是∶在未知路径前,源站要先发送一个发现帧;途中的每个网桥都转发此帧,最终该发现帧可能从多个途径到达目的站;目的站也将一一发送应答帧;每个应答帧将通过原路径返回,途经的网桥把自己的标志记录在应答帧中;源站选择出一个最佳路由。以后,凡从这个源站向该目的站发送的帧的首部,都必须携带这一路由信息。

此外,发送帧还可以帮助源站确定整个网络可以通过的帧的最大长度。由于发现帧的数量指数式增加,可能会使网络严重拥塞。

3,两种网桥的比较

使用源路由网桥可以利用最佳路由。若在两个以太网之间使用并联的源路由网桥,则还可使通信量较平均地分配给每个网桥。采用透明网桥时,只能使用生成树,而使用生成树一般并不能保证所用的路由是最佳的,也不能在不同的链路中进行负载均衡。

注意∶ 透明网桥和源路由网桥中提到的最佳路由并不是经过路由器最少的路由,而可以是发送帧往返时间最短的路由,这样才能真正地进行负载平衡,因为往返时间长说明中间某个路由器可能超载了,所以不走这条路,换个往返时间短的路走。

2. 局域网交换机及其工作原理 (当下广泛应用的)

1.局域网交换机 —多接口网桥

桥接器(网桥)的主要限制是在任一时刻通常只能执行一个帧的转发操作,于是出现了局域网交换机,又称以太网交换机。从本质上说,以太网交换机是一个多端口的网桥,它工作在数据链路层。 交换机能经济地将网络分成小的冲突域,为每个工作站提供更高的带宽。

以太网交换机对工作站是透明的,因此管理开销低廉,简化了网络结点的增加、移动和网络变化的操作。利用以太网交换机还可以方便地实现虚拟局域网(VirtualLAN,VLAN),VLAN不仅可以隔离冲突域,而且可以隔离广播域。 (其在物理位置上不是在一个交换机下,但在逻辑关系上和我们希望所得的资源方面像一个局域网的用户一样,如学校的校园网,然后在校外通过VLAN访问校园网资源)

2.原理

以太网交换机的原理是:它检测从以太端口来的数据帧的源和目的地的MAC(介质访问层) 地址,然后与系统内部的动态查找表进行比较,若数据帧的 MAC 地址不在查找表中,则将该地址加入查找表,并将数据帧发送给相应的目的端口。

自学习功能产生交换表:

  1. 交换机收到一个帧时,判断该帧的源MAC地址和目的地址的MAC地址,
  2. 对于源MAC地址:如果交换表中没有,就记下该地址和进入交换机的端口(此时该地址就可以作为一个目的地址)。
  3. 对于目的地址的MAC地址:如果交换表中又就直接转发过去,如果没有就广播出去。
  4. 在以太网交换机(组网)可能会出现环路问题,802.ID标准制定了一个协议一个生成树协议(STP Spanning Tree Protocol),以确保每个源到每个目的地只有唯一的路径。其要点就是在不改变网络实际拓扑的基础上,从逻辑上切断某些链路,形成无环路的树状结构。

3.特点

以太网交换机的特点如下∶

1)以太网交换机的每个端口都直接与单台主机或另一个以太网交换机相连(普通网桥的端口往往连接到以太网的一个网段),并且一般都工作在全双工方式。

2)以太网交换机能同时连通许多对端口,使多对主机能同时通信(并行性),每对相互通信的主机都能像独占通信媒体那样,无碰撞地传输数据。 (因此这里使用的是星型以太网,由于没有碰撞问题,也没有使用CSMA/CD协议)-- 那为什么还叫以太网呢? 因为其帧结构并未发生改变,仍然采用以太网帧结构。

3)以太网交换机也是一种即插即用设备(和透明网桥一样),其内部的帧的转发表也是通过自学习算法自动地逐渐建立起来的。

4)以太网交换机由于使用了专用的交换结构芯片,因此交换速率较高。

5)以太网交换机独占传输媒体的带宽。 对于传统 10Mb/s的共享式以太网,若共有N个用户,则每个用户占有的平均带宽只有总带宽(10Mb/s)的I/N。在使用以太网交换机时,虽然在每个端口到主机的带宽还是10Mb/s,但由于一个用户在通信时是独占而不是和其他网络用户共享传输媒体的带宽,因此拥有N个端口的交换机的总容量为 N×10Mb/s。这正是交换机的最大优点。

以太网交换机一般都具有多种速率的端口,例如可以具有10Mb/s、100Mb/s和1Gb/s的端口的各种组合,因此大大方便了各种不同情况的用户。

4.两种交换模式

目前,以太网交换机主要采用两种交换模式,即直通式和存储转发式。

1)直通式交换机:只检查帧的目的地址(6B大小),这使得帧在接收后,不进行缓存处理而是直接转发传出去。这种方式速度快,但缺乏智能性和安全性(帧未经过检错就发送,存在无效帧),也无法支持具有不同速率的端口的交换。

2)存储转发式交换机:先将接收到的帧缓存到高速缓存器中,并检查数据是否正确,确认无误后通过查找表转换成输出端口将该帧发送出去。如果发现帧有错,那么就将其丢弃。 存储转发式的优点是可靠性高,并能支持不同速率端口间的转换,缺点是延迟较大。

3. 冲突域与广播域

碰撞域(冲突域):是指共享同一信道的各个站点可能发生冲突的范围,如一块网卡发送信息时,只要有可能和另一块网卡冲突,那么这些可能冲突的网卡就构成冲突域。

广播域:广播信息会直接传播到各个网段,一块网卡发出一个广播时,能收到这个广播的所有网卡的集合称为一个广播域。

一般来说, 一个网段就是一个冲突域,一个局域网就是一个广播域。

  1. 物理层设备集线器不能分割碰撞域。
  2. 数据链路层设备交换机和网桥可以分割碰撞域,但不能分割广播域。
  3. 而网络层设备路由器既可以分割碰撞域,又可以分割广播域。(路由器可以隔离广播域,是由于其工作在网络层,不转发广播包(目的地址为255.255.255.255的IP包)。)
设备名称 能否隔离冲突域 能否隔离广播域
集线器 不能 不能
中继器 不能 不能
网桥 不能
交换机 不能
路由器

计算机网络 - 数据链路层相关推荐

  1. 计算机网络-数据链路层

    title: 计算机网络-数据链路层 date: 2018-04-12 15:55:15 tags: 每天都感觉时间很紧迫,进步不大,浪费的时间太多了,能做的就是每天进步一点点 --stackfing ...

  2. 计算机网络——数据链路层介质访问控制

    文章目录 前言 一.介质访问控制概述 二.信道划分介质访问控制 1.频分多路复用(FDM) 2.时分多路复用(TDM) 3.波分多路复用(WDM) 4.码分多路复用(CDM) 三.随机访问介质访问控制 ...

  3. 计算机网络——数据链路层局域网、以太网、PPP协议和HDLC协议、链路层设备

    文章目录 前言 一.局域网简介 1.局域网的基本概念和特点 2.局域网的主要要素 3.局域网的分类与 IEEE 802 标准 4.LLC 子层和 MAC 子层 二.以太网 三.无线局域网 四.PPP ...

  4. 计算机网络——数据链路层(三个基本问题)

    计算机网络数据链路层的三个基本问题 (1) 封装成帧 (2) 透明传输 (3) 差错控制 一.封装成帧 封装成帧 (framing) 就是在一段数据的前后分别添加首部和尾部,然后就构成了一个帧.确定帧 ...

  5. 计算机网络数据链路层题库

     免费版:华文慕课计算机网络数据链路层课后题 目录 网络课课后题 王道与其他 综合应用题 网络课课后题 1. 以下哪点不是链路层需要解决的问题 A.介质访问控制

  6. 计算机网络 数据链路层(一)点对点协议与广播信道

    计算机网络(五) 学习计算机网络过程中的心得体会以及知识点的整理,方便我自己查找,也希望可以和大家一起交流. -- 数据链路层 -- 文章目录 计算机网络(五) -- 数据链路层 -- 1. 使用点对 ...

  7. 计算机网络数据链路层之使用广播信道的数据链路层(含MAC帧格式)

    计算机网络数据链路层之使用广播信道的数据链路层(含MAC帧格式) 局域网的数据链路层 局域网最主要的特点是: 网络为一个单位所拥有: 地理范围和站点数目均有限. 局域网具有如下主要优点: 具有广播功能 ...

  8. 王道计算机网络 数据链路层整理 超详细版

    数据链路层的基本概念 结点:主机.路由器 链路:网络中两个结点之间的物理通道,链路的传输介质主要有双绞线.光纤和微波.分为有线链路.无线链路. 数据链路:网络中两个结点之间的逻辑通道,把实现控制数据传 ...

  9. 用计算机心如止水,计算机网络数据链路层

    1.数据链路层使用的信道类型: 点对点信道(1对1) 广播信道(1对多),如:集线器.交换机 2.链路与数据链路: 链路:点对点的物理线路段,中间无任何其他交换结点 数据链路:通信协议 + 软件 + ...

  10. 计算机网络-数据链路层 1

    数据链路层 习题自测 问题 1.数据链路(即逻辑链路)与链路(即物理链路)有何区别?"电路接通了"与"数据链路接通了"的区别何在? 2.数据链路层中的链路控制包 ...

最新文章

  1. 【最精简写法】获取一维数组和对象数组最值:最大值、最小值,返回对象
  2. 干掉Navicat:这个IDEA的兄弟真香!
  3. SQL Azure SU3 现已在全球6座数据中心开始启用
  4. box-sizing 属性
  5. python help()函数(查看特定模块、关键词、函数等用法)
  6. HDU 3699 DFS
  7. GNS3中不同型号路由器支持的模块表
  8. [转载] 弄懂JDK、JRE和JVM到底是什么
  9. java中的让步_java基本教程之线程让步 java多线程教程
  10. 第一章python绝对温标身体质量指数bmi
  11. 数学竖式排版中不为人知的技巧
  12. cydia无法加载未能连接服务器,cydia无法加载_Cydia无法加载如何办?Cydia加载失败故障的解决方...
  13. 盘点面试中常见的智力题
  14. 一、Zstack基础知识(ZCCT云计算认证)
  15. 百度地图绘制3D棱柱
  16. STM32平台下的TM1812驱动
  17. 2021-11-26学习总结
  18. R语言矩阵操作:根据值找到行号和列号
  19. 英语期末复习——大学英语词汇解析
  20. ZZULIOJ:1008美元和人民币

热门文章

  1. linux笔记(6):东山哪吒D1H测试HDMI显示内置图片-命令行调试
  2. 全志F133(D1s)芯片 如何在Tina下进行显示旋转?
  3. yum安装报错Error: Package,完美解决
  4. 【数据结构实训--集合基本运算(附代码)】
  5. onload和ready的不同
  6. 关于auth0的jwt
  7. 【系统优化】新装Linux系统注意事项增加系统安全
  8. 哈尔滨工程大学-济海追风-声音信标
  9. css中关于文本换行的处理总结
  10. 盖茨被逐出微软董事会真相曝光:长期跟员工搞地下情,27年婚姻中出轨不断,人设已崩...