计算机网络(五)——数据链路层

数据链路层

05数据链路层.pdf

数据链路层基础

概念

  • 物理层和数据链路层的本质作用都是用来构建网络通信、访问通道,但它们所建立的通信通道是不一样的。首先要说明的一点是,在物理层上构建的是物理链路,在数据链路层上构建的是逻辑链路或者数据链路
  • 物理链路是指在物理层设备(包括传输介质、物理接口和收发器等)和相应物理层通信规程作用下形成的物理线路,是永久存在的,且是不可删除的(除非物理拆除);逻辑链路则是通信双方在需要进行数据通信时,在数据链路层设备和相应的通信规程作用下建立的逻辑链路,可以是永远存在的(如局域网中的以太网链路),也可以不是永久存在的(如广域网中的链路),是否永久存在要视具体的数据链路层服务类型而定。

目的

  • 在原始的、有差错的物理传输线路的基础上,采取差错检测,差错控制和流量控制等方法,将有差错的物理线路改进成逻辑上的无差错的数据链路,以便向他的上一层网络层提供高质量的服务。
    具体而言,数据链路层中与传输介质访问无关的问题都集中在 LLC 子层来解决,为网络层提供服务。其主要功能包括逻辑链路的建立和释放、提供与网络层的接口(也就是前面说到的 SAP)、数据传输差错控制、给数据帧加上传输序列号等。

必要性

  • 一是数据链路层可以屏蔽物理层中介与传输介质的不同,以及通信,规程协议的不同,从逻辑上正从逻辑意义上构建一条性能稳定,不受传输介质类型影响的人物及数据传输通道
  • 二是因为物理层数据是一位一位单独传输的,传输效率低,而且容易出现数据传输差错,通过数据链路层把数据进行封装成以帧为单位进行传输,可以提高传输效率,而且还能做数据传输差错控制。

结构

  • 在OSI/RM和TCP/IP体系结构中,数据电路层就一层。而在局域网体系结构中,是可以细分为两个子层的,就是逻辑链路控制(Logical Link Control, LLC)子层和介质访问控制(Medium Access Control, MAC)。
  • SAP服务访问点:各层 SAP 的表示形式是对应层第一个单词的第-个字母加上“SAP”,如物理层 SAP 表示为 PSAP (Physical layer Service Access Point),对应的就是网络通信中设备的具体物理接口;数据链路层 SAP 表示为 DLSAP (Data Link Control layer Service Access Point),对应的就是各个物理接口的 MAC 地址;网络层 SAP 表示为 NSAP (Network layer Service Access Point),对应的就是各物理接口上配置的网络地址(如IP地址,但在OSI/RM 中网络地址不一定是 IP 地址,要视具体的网络层协议而定,如还可以是 IPX 地址);传输层 SAP 表示为 TSAP (Transport layer Service Access Point),对应的就是具体网络应用通信所用的传输层端口;会话层 SAP 表示为 SLSAP (Session layer Service Access Point),对应的就是具体网络应用会话进程;表示层 SAP 表示为 PLSAP (Presentation layer Service Access Point),对应的就是具体网络应用进程中的用户标识。
  • Mac子层:控制不同用户数据传输中对物理层传输介质的访问,包括数据帧的封装/卸装,帧的寻址和识别,帧的接收与发送,帧的差错控制,以及介质访问冲突控制等。
  • LLC子层:LLC子层的最基本功能,就是负责数据链路层中的逻辑链路(逻辑链路就是物理层信道中的物理链路,在通过LLC协议作用后形成的虚拟电路)。包括逻辑链路的建立和释放,控制信号交换,数据流量控制,解释上层通信协议传来的命令并生产响应,以及克服数据在传输的过程当中发生的种种问题。如数据发生错误、重复收到相同的数据、接收数据顺序与传送的顺序不一致等。在LLC子层方面,IEEE 802系列中只制定了一种标准——IEEE 802.2。

主要功能及实现原理

基本功能:就是向网络层提供透明可靠的数据传输服务。

  • 透明”是指要使在数据链路层上所传输的数据在内容、格式及编码上都没有限制,也就是要使一些本来用于特殊用途的控制字符(具体有哪些控制字符将在本章后面介绍)也能像正常的数据一样传输,使接收端不要误认为这些字符为控制字符;
  • 可靠的传输使数据从发送端无差错地在数据链路上传输到目的接收端。

主要功能:数据链路管理,封装成帧,透明传输,差错控制。

  • 数据链路管理
    • 数据链路层提供的服务类型,包括服务分为以下三类:有确认的面向连接服务、有确认的无连接服务、无确认的无连接服务。前者称为面向连接服务(Connection-oriented Servce),后面两者称为无连接服务(Connetionless Service)。
      • 有确认的面向连接服务包括两层含义:一是在提供服务时,必须先建立好双方通信连接;二是在提供服务时,必须要求对方确认后才进行。这种服务类型存在三个阶段,即数据链路建立、数据传输、数据链路释放等阶段。
      • 有确认的无连接服务与有确认的面向连接服务的相同之处就是接收端在接收到的每-一个数据帧时都向发送端确认;不同之处在于它在进行数据传输前是不需要建立专门的数据链路的,自然也不需要在数据传输结束后释放数据链路(事实上是因为这类服务所用的数据链路已建立起来,而緹永久存在的,所以不用另外建立,如局域网中的链路)。
      • 无确认的无连接服务与前面的有确认的无连接服务的相同之处就在于它们都不需要在进行数据传输前先建立专门的数据链路,也就是无须先在通信双方建立通信连接;不同之处就是它在进行数据传输时不要求接收端对所接收到的每一个数据帧进行确认。
    • LLC子层的链路管理功能主要是针对前面所介绍的有确认的面向连接服务类型(主要应用于广域网中)。它包括三个主要阶段:链路建立、链路保持、链路释放。
  • 数据帧封装
    • 网络层传输的包(packet,又称分组),在数据链路层中传输的是“帧”(frame)。数据包到达数据链路层后加上数据链路层的协议头和协议尾就构成了一个数据帧。在每个帧的前部加上一个帧头部,在帧的结尾处加上一个帧尾部,把网络层的数据包作为帧的数据部分,就构成了一个完整帧。帧头和帧尾就是作为帧的起始和结束标志,也就是帧边界。-
  • 由数据包封装成的数据帧其大小是受对应的数据链路层协议的 MTU(最大传输单元)限制的,如以太网数据链路层封装网络层IP包的 MTU 值为 1500 字节(这是指帧中数据部分,也就是来自网络层整个数据分组,最大不能超过 1500 字节,但不包括帧头和帧尾部分)。同时,帧还有最小大小限制,如以太网帧中封装的 IP 包最小值为 46 字节,如果封装的 IP 包小于最小帧要求时,就要用一些特殊字符进行填充,以满足对应链路中传输最小帧的限制。
  • 比特流的帧组装
    及透明传输原理

    • 字节计数法:是一种以一个特殊字符代表一个帧的起始,并以一个专门的字段来标识当前帧内字节数的帧同步方法。接收端可以通过对该特殊字符的识别从比特流中区分出每个帧的起始,并从专门字段中获知每个帧后面跟随的“数据”(Data)字段的字节数,从而可确定出每个帧的结束位置。
    • 比特填充的首尾定界符法:是通过在帧头和帧尾各插入一- 个特定的比特串(如 1111110) 来标识-一个数据帧的起始与结束,这个帧头、帧尾特定比特串称为帧标志符。如传输的比特流为 100110101, 组装成帧后就是 01111110100111010101111110。而为了透明传输,也就是为了避免在信息位中出现的与帧起始和结束标志符相似的比特串时被误判为帧的首、尾标志,采用了比特填充的方法。比如上面采用的特定模式为 0111, 则对信息位中的任何连续出现的 5 个“1”(因为帧标志符中是有 5 个连续“1”),发送端自动在其后插入一个“0”。
    • 字符填充的首尾定界符法: 是用一些特定的控制字符来定界-一个帧的起始与结束,如 IBM 的 BSC 协议在每个数据块的头部用一个或多个同步字符“SYN”来标记数据块的开始;尾部用字符“ETX“来标记数据决的结束。另外,为了不使数据信息中与以上特定字符相同的字符被误判为帧的首尾定界符,可以在这种数据帧的帧头填充一个转义控制字符(Data Link Escape -Startof Text, DLE),这就属于“透明传输”的范围了
    • 违法编码法:是在物理层采用特定的比特编码方法时采用。例如,曼彻斯特编码方法,将数据“1”编码成“高-低”电平对(在半个码元处跳变),将数据“0”编码成“低-高”电平对。而高-高电平对和低-低电平对在数据比特中是违法的,因此可以借用这些违法编码序列来定界帧的起始与终止。违法编码法不需要任何填充技术,便能实现数据的透明性,但它只适用于采用冗余编码的特殊编码环境。

差错控制方案

概念:为保证数据的正确传输。要实现差错控制须具备两种能力:1.发现差错的能力;2.纠正错误的能力;

差错检测:在数据链路层检测数据传输错误的方法-~般是通过对差错编码进行校验来实现,常见的校验方法有奇偶校验码(Parity Check Code, PCC)、循环冗余校验(Cyclic Redundancy Check, CRC)两种。它们都统称为检错码(error- detecting code)。

  • 奇偶校验码(PPC)是奇校验码和偶校验码的统称,是一种有效检测单个错误的检错方法。是根据被传输的一组二进制代码的数位中“1”的个数是奇数或偶数来进行校验的。采用“1”的奇数个校验的方法称为奇校验,反之称为偶校验,但采用何种校验是事先确定好的。
    • 它的基本校验思想是在原信息代码的最后添加一位用于奇校验或偶校验的代码,这样最终的帧代码是由n-1位信元码和1位校验码组成,可以表示成为(n,n-1)。加上校验码的最终目的就是要让传输的帧中“1”的个数固定为奇数(采用奇校验时)或偶数(采用偶校验时),然后通过接收端对接收到的帧中“1”的个数的实际计算结果与所选定的校验方式进行比较,就可以得出对应帧数据在传输过程中是否岀错了。如果是奇校验码,在附加上一个校验码以后,码长为n的码中“1”的个
      数为奇数;如果是偶校验码,则在附加上一个校验码以后,码长为n的码中“1”的个数为偶数(0个“1”也看成是偶数个“1”)。
    • 缺点:奇偶校验方法只可以用来检査单个码元错误,检错能力较差,所以一般只用于本身误码率较低的环境,如用于以太局域网中、用于磁盘的数据存储中等。
  • 循环冗余校验(CRC)是一种根据传输或保存的数据而产生固定位数校验码的方法,主要用来检测或校验数据传输或者保存后可能出现的错误。生成的数字在传输或者储存之前计算出来并且附加到数据后面,然后接收端进行检验确定数据是否发生变化。
    • 根本思想就是先在要发送的帧后面附加一个数(这个数就是用来校验的校验码,也是二进制序列的),生成一个新帧发送给接收端。当然,这个附加的数不是随意的,它要使所生成的新帧能与发送端和接收端共同选定的某个特定数整除(注意,这里不是直接采用=进制除法,而是采用一种称为模 2 除法的方法)。到达接收端后,再把接收到的新帧除以(同样采用模 2 除法)这个选定的除数。因为在发送端发送数据帧之前就已附加了一个数,做了去余处理(也就已经能整除了),所以结果应该没有余数。如果有余数,则表明该帧在传输过程中出现了差错。
    • 模2除法与算术除法类似、但它既不向上位借位,也不比较除数和被除数的相同位数值的大小,只以相同位数进行相除。
      模2加法运算为:1+1=0,0+1=1,0+0=0, 无进位,也无借位。
      模2减法运算为:1-1=0,0-1=1,1-0=1,0-0=0, 也无进位,无借位。
      相当于二进制中的逻辑异或运算。也就是比较后,两者对应位相同则结果为 0”,不同则结果为“1”。如 100101 除以 1110, 结果得到商为 11, 余数为 1, 如图 5-9 a 图所示。再如 11 x11-101, 如图 5-9%图所示。
  • CRC 校验的实现分为以下几个步骤

1) 先选择(可以随机选择,也可按标准选择,具体在后面介绍)一个用于在接收端进行校验时,对接收的帧进行除法运算的除数(是二进制比较特串,通常是以多项方式表示,所以 CRC 又称多项式编码方法,这个多项式又称生成多项式)。

2) 看所选定的除数二进制位数(假设为 k 位),然后在要发送的数据帧(假设为 m 位)后面加上 k- 1 位“0”,接着以这个加了 k-1 个“0”的新帧(一共是 m+k-1 位)以“模 2 除法”方式除以上面这个除数,所得到的余数(也是二进制的比特串)就是该帧的 CRC 校验码,又称 FCS(帧校验序列)。但要注意的是,余数的位数比除数位数只能少一位,哪怕前面位是 0,甚至是全为 0(附带好整除时)也都不能省略。

3) 再把这个校验码附加在原数据帧(就是 m 位的帧,注意不是在后面形成的 m+k-1 位的帧)后面,构建一个新帧发送到接收端,最后在接收端再把这个新帧以“模 2 除法”方式除以前面选择的除数,如果没有余数,则表明该帧在传输过程中没出错,否则出现了差错。

  • CRC 校验码的计算示例

现假设选择的 CRC 生成多项式为 G(X) =x⁴+x³+1, 要求出二进制序列 10110011 的 CRC 校验码。

下面是具体的计算过程

1) 首先把生成多项式转换成=进制数,G(X) =x⁴+x³+1 可以知道,它一共是 5 位(总位数等于最高位的幂次加 1,即 4+1=5),然后根据多项式各项的含义(多项式只列出二进制值为 1 的位,也就是这个二进制的第 4 位、第 3 位、第 0 位的二进制均为 1, 其他位为 0) 很快就可得到它的二进制比特串为 11001。

2) 因为生成多项式的位数为 5, 根据前面的介绍得知,CRC 校验码的位数为 4(校验码的位数比生成多项式的位数少 1)。因为原数据帧 10110011, 在它后面再加 4 个 0,得到 101100110000, 然后把这个数以“模 2 除法”方式除以生成多项式,得到的结果为 0100,如图 5-10 所示。注意参考前面介绍的“模 2 除法”运算法则。

3) 用上步计算得到的 CRC 校验替换帧 1011001 10000 后面的 4 个“0”,得到新的帧 101100110100。再把这个新帧发送到接收端。4) 当以上新帧到达接收端后,接收端会把这个新帧再用上面选定的除数 11001 以“模 2 除法”方式法除,验证余数是否为 0,如果为 0,则证明该帧数据在传输过程中没有出现差错,否则出现了差错。

差错纠正:在差错纠正方面,数据链路层针对不同的传输类型采取了不同的纠错方法。

  • 反馈检测:是一种最简单、最容易实现,但并不常用的差错控制方法。这种差错控制方法的信道利用率低,因为在这种差错控制方法中每个数据帧均要求至少在信道中往返传输两次。对于面向字符的异步传输(如键盘与主机的通信、ATM 传输协议等)一般是采用“反馈检测”的方法来进行纠错。
    • 基本原理:反馈检测法不需要利用前面介绍的 PCC(奇偶校验码)和 CRC(循环冗余校验码)检测错码技术,其把差错检测和差错纠正的任务全部交给发送端。它要求接受端在接收到每一个数据帧后均要向发送端发送一个表示是否接收了该数据帧的反馈信息,且这个反馈信息就是原来由发送端发给接收端的原始数据帧。发送端在收到接收端发送的反馈信息后,通过对比保存在缓存中原来该帧的数据来判断接收端是否正确接收了该数据帧。
    • 两项附加技术:反馈检测原理可以发现,这里有一个问题,那就是可能因一些原因导致一些数据帧在传输过程中完全丢失了,接收端根本没收到这些数据帧,自然也就不会向发送端发送对应数据帧的反馈信息了。为了解决这个问题,通常在数据发送时引入计时器(Timer)来限定接收端发回反馈信息的时间间隔。当发送端发送一帧数据的同时启动计时器,若在限定时间间隔内没有收到接收端的反馈信息,即计时器超时(Timeout),则可认为传的对应帧已出错,或丢失,继而发送端知道要重新发送对应的数据帧。以上计时器方案虽然解决了由于数据丢失而引发的意外,但可能由于网络线路比较忙,送达的某帧数据在到达接收端时有所延迟,超出了计时器限定的时间范围,发送端仍然会重发对应的数据帧,这样就可能使接收端多次接收同一数据帧了。为了防止发生这种现象,在“数据链路层”又采取了“帧编号”(也就是“帧序列号”)方法对发送的每个数据帧进行编号(同- 数据帧编号一^样,无论发送多少次),从而使接收端能从该编号来区分是新发来的帧,还是已经接受但又重新发来的帧,从而确定要不要将接收到的帧递交给网络层。“数据链路层”通过使用“计数器”和“帧编号”两种措施来保证每个数据帧最终都能被正确地递交给目标网络层一次。
  • 自动重发请求(Automatic Repeat reQuest,ARQ法):由于在“反馈检测法”中一帧数据会在信道中至少往返传输两次,传输效率低,所以一般采用ARQ法。ARQ 法有几种具体的实现方案,空闲重发请求(Idle RQ)和“连续重发请求”(Continuous RQ)是其中最基本的两种方案。实现原理就是先让发送端将要发送的数据帧附加一定的冗余检错码(如前面介绍的 PCC、CRC 码)一起发送,接收端则根据检错码对数据帧进行错误检测,若发现错误,就返回请求重发的响应(不用返回全部的帧),发送端收到请求重发的响应后,便重新传送该数据帧。
    • 空闲重发请求方案又称停等(Stop and Wait)法,该方案规定发送端每发送一帧后就要停下来,然后等待接收端发来的确认信息(这就是停等的意思),仅当接收端确认(ACK)信息后才继续发送下一数据帧。如果收到的是否认(NAK)消息,表示接收端接收的数据有错,请求发送端重发。另外,在计时器超时时,发送端也会重发对应的帧。
    • 为了减小占空比,提高传输效率,人们又提出了连续重发请求(Continuous ARQ)的差错控制方案。连续重发请求方案是指发送端可以连续发送一系列数据帧(也不总是不断地发送,具体可以连续发送多少个帧,要视双方的缓存空间大小,即窗口大小而定),即不用等前一帧被确认便可继续发送下一帧,效率大大提高。当然,在这个连续发送的过程中也可以接收来自接收端的响应消息(可以是确认帧,也可能是否认帧),发送端同样可以对传输出错的数据帧(如接收端返回了否认帧,或者响应计时器超时的帧)进行重发
  • 纠错码(Eror- correcting Code):另外还有一些编码本身具有自动纠正错误的能力,称为纠错码”(Eror- correcting Code),在数据链路层中常用的如海明码(Hamming Code)。海明码(Hamming Code)是一个可以有多个校验位,具有检测并纠正一~位错误代码功能的纠错码,所以它也仅用于信道特性比较好的环境中,如以太局域网中,因为如果信道特性不好的情况下,出现的错误通常不是一位。
    • 海明码的检错、纠错基本思想是将有效信息按某种规律分成若干组,每组安排一个校验位进行奇偶性测试,然后产生多位检测信息,并从中得出具体的出错位置,最后通过对错误位取反(也是原来是 l 就变成 0,原来是 0 就变成 1) 来将其纠正。
      要采用海明码纠错,需要按以下步骤来进行:计算校验位数 -> 确定校验码位置 -> 确定校验码 -> 实现校验和纠错

流量控制方案

含义:一是发送端的数据发送速度与接收端的数据接收速度要匹配,否则接收端来不及接
收就会造成数据在传输过程中的丢失。是发送端的
数据发送速度要与线路上的承载速率(与线路信道带宽有关)相匹配,否则也会造成数据在传输过程中的丢失。

对于数据链路层来说控制的是相邻两节点之间数据链路上的流量,而对于传输层来说控制的是从源到最终目的端之间的流量。
数据链路层的流量控制方案主要有两种:一种是适用于面向字符的异步通信协议(如 RS-232) 中的简单流量控制方案 XON/XOFF (继续/停止)方案;另一种是适用于大量数据通信环境中的“滑动窗口机制”。

  • 基于反馈的流量控制方案: 就是接收端在接收到一个数据帧后,要向发送端发送一个确认帧,表示发送端可以继续向它发送数据了。这种方案也称“停-等”方案,就是发送端在发送一帧数据后必须等待接收端返回确认响应消息,然后才能发送下一数据帧。接收端是通过检査帧的校验序列
    (rCS),无错则发送确认帧,否则不发送返回消息,表示该帧已出错,要求重发。

    • XON/XOFF (transmitter on/transmitter off,继续传输/停止传输)是一种流量控制协议,常用于数据传输速率大于等于 1200 bps,而接收端数据处理速率远小于这个值(也就是通信双方速率不同步)的情形,通过对发送端的数据传输速率进行控制,以达到与接收数据数据处理速率匹配。

    XON/XOFF (继续/停止)是一种最简单的流量控制技术,主要适用于异步通信中,接收端通过使用特殊字符来控制发送端数据的发送。其基本思想是:当接收端认为不能继续接收数据时(也就是接收端的缓存空间满了或者接近满时),接收端会向发送端发送-一个 XOFF 控制字符,当发送端收到对应的 XOFF 控制字符时就停止数据的继续发送;当接收端可以继续接收数据时,接收端会再向发送端发送一~个 XON 控制字符,发送端收到这个控制字符后就知道可以恢复数据发送了,继续发送数据,一直这么循环下去。

    其中 XON 采用 ASCI 字符集中的控制字符 DC1(十进制值为 17, 十六进制值为 11,相当于按下“Ctrl+Q“组合键)XOFF 采用 ASCI 字符集中的控制字符 DC3(十进制值为 19, 十六进制值为 13,相当于按下“Ctrl+S”组合键)。在一次数据传输过程中,XOFF、XON 的周期可重复多次,但这些操作对用户来说是透明的,也就是说用户不用管它,设备会自动操作。

  • 许多异步数据通信软件均支持XON/XOFF协议。这种方案也可用于计算机向打印机或其他终端设备(如Modem的串行通信)发送字符,在这种情况下,打印机或终端设备中的控制部件用以控制字符流量。如我们在通过 Modem 拨号连接网络时,采用的就是这种流量控制方法。当从 PC 机上的数据到达 Modem 时,如果 Modem 中的缓存空间满了,它就会向 PC 机发送一个代表“停止传输”的 XOFF 控制字符,而当 Modem 中的缓存空间没满时,Modem 又会向 PC 机传送一个代表“继续传输”的 XON 控制字符。再如,在局域网中一台 PC 机连接了一台打印速度比较慢的打印机,当 PC 机开始向打印机发送要打印的文件时,因为 PC 机的数据传输速率非常高,有许多文件打印机很难及时打印。此时打印机会向 PC 机发送一个 XOFF 字符来通知 PC 机,要求暂停文件的发送。PC 机上的软件看到来自打印机的 XOFF 控制字符后,就会暂停文件的发送;而当打印机中排队等候打印的文件打完了,或者打印得差不多了时,打印机又会向 PC 机发送一个 XON 控制字符,通知 PC 机可以继续发送要打印的文件。
  • 基于速率的流量控制方案:是基于窗口滑动杋制的速率控制方案,它规定发送端一次可以发送多少个数据帧,限制了发送端的数据传输速率,而无须接收端发回确认帧。
    • 1. 理解“滑动窗口”机制
      “滑动窗口机制”中的“窗口”是指发送端和接收端的缓存空间大小;“滑动”的意思是指缓存空间中存放的未处理帧数是变化的,发送端在收到确认帧后会删除原来保存在缓存中的待重发帧,而接收端向网络层提交一个帧后也会删除原来保存在缓存中的帧。

    至于缓存空间大小,采取不同的流量控制方案其会有不同的值,但要明白的是,缓存空间都是非常有限的,就像计算机 CPU 中的缓存一样。缓存越大,成本越高。如在 5.3.4 节介绍的空闲重发请求方案中,一次只能发送一个帧,发完一个帧后就等待来自接收端的确认帧,收到确认帧后就删除原来保存在缓存空间中的待重发帧,接收端不需要缓存空间,因为它接收到数据后即进行处理,对于有错误的帧直接丢弃。所以在“空闲重发请求”方案中仅发送端需要保存一个帧的缓存空间,也就是它的“缓存空间大小”就是-一个帧。

    而在前面介绍的“连续重发请求”方案中,发送端一次可以连续发送多个帧,并且在其缓存空间中保存所有已发,但没有接收到来自接收端确认帧的待重发帧,而不用像“空闲重发请求”那样发

    帧停下来等待接收端的确认帧;接收端也可以在缓存空间中保存来不及处理的帧,大大提高了数据传输的效率。

面向字符的BSC协议

面向字符的同步方法也称“字符填充的首尾定界符法”。在该同步方法中,数据帧中的数据都被看作字符序列(所以称之为面向字符的同步传输),所有的控制信息也都是字符形式(当然数据的表示形式还是二进制的比特流),每个数据块的头部用一个或多个同步字符 S YN 来标记数据块的开始;尾部用字符 ETX 来标记数据决的结束。
面向字符的同步传输协议的典型代表就是 IBM 公司的 BSC 协议。BSC 协议规定,链路_上传送的数据必须是由规定字符集(可以是 ASCII,或者 EBCDIC (Extended Binary Coded Decimal Interchange Code,扩展=进制-十进制交换码))中的字符组成,控制信息也必须由同一个字符集中的若干指定的控制字符构成。

BSC控制字符与数据块结构
BSC 协议与所有同步传输协议一样,也是一次可以传送由若千个字符组成的数据块(通常是一~帧),而不是一次只传送一个字符。同时规定了十种特殊字符(称为通信控制字符)作为这个数据块的开始与结束标志,以及整个传输过程的各种控制信息标志(并不是每个数据块中都有这十种全部的控制字符)。

这十种通信控制字符说明如下

DACK (Acknowledge):确认标志,由接收端发出的,作为对正确接收到报文的响应。
DDLE (Data Link Escape):转义标志,用于指示后面的字符是数据字符,而不是特殊控制字符。这是用来进行透明传输的,当在报文中也存在这十个控制字符时,在这些字符前加上 DLE 字符后,通知接收端把它们当作普通的报文处理,而不是作为控制字符来识别。具体将在本节后面介绍。
DENQ (Enquire):询问标志,用于请求远程站点给出响应。响应可能包括远程站点的身份或状态。

DEOT (End of Transmission):发送完毕标志,用于表示一个或多个文本的发送结束,并拆除链路。
DETB (End of transmission Block):块终止或组终止标志,用于标志每个数据块的结束位置。仅在一一个报文要分成多个数据块传输时才有此标志。DETX (End of Text):文本终止标志,标志报文文本的结束。仅在一一个报文不分成多个数据块传输时才有此标志。
DNAK (Negative Acknowledge):否认标志,由接收端发出的,作为对未正确接收的报文响应。
DSOH (Start of Head):报头开始标志,用于表示报文的标题信息或报头的开始。仅在报文的第-一个数据块中才有此标志。
DSTX (Startof Test):文本开始标志,标志标题信息的结束和报文文本的开始。每个数据块均有此标志。
DSYN (Synchronous):字符同步标志,用以实现通信双方的字符同步,或用于在无数据传输时保持同步。在每个数据块中均有此标志,而且通常是两个。-

BSC 协议数据透明传输原理
面向字符的同步传输协议不像异步传输协议那样需要在每个字符前后附加起始和停止位,因此传输效率提高了。但由于采用了一些特殊的传输控制字符,在增强了通信控制能力和校验功能的同时也带来了新的问题,那就是如何区别数据字符代码和特殊控制字符代码。因为在数据块中完全有可能出现与特殊控制字符代码相同的数据字符,这就会在接收端产生误解。比如正文有个与终止字符 ETX 的代码相同(在 ASI 码中为 0000011) 的数据字符,如果不做任何处理,接收端就不会把它当作普通数据处理,而误认为是正文结束,进而产生差错。
为此解决这一问题,面向字符的同步传输协议应具有将数据块中的特殊字符作为普通数据处理的能力,这种能力称为数据透明。解决方案是在同步传输协议中设置转义字符 DLE (Data Link Escape,数据链路封装)。当需要在数据块中传输-个与某个特殊字符代码一样的数据时,就要先在它前面要加一一个 DLE 代码(ASCII 码中为 00000),这样接收端在收到一个 DLE 代码时,就知道了它下面一一个字符是普通的数据字符,而不是通信控制字符。在接收端如果发现一个与某个特殊字符代码相同的字符是 DLE 代码,则直接删除前面的 DLE 代码,仅接收真实的数据部分。

面向比特的SDLC和HDLC协议

面向比特的同步传输协议中,数据块是作为比特流来处理的(而不是作为字符流来处理),所以称之为面向比特的同步传输。在面向比特的同步传输中,每个数据块的头部和尾部都用一个特殊的比特序列(如 1111110) 来标记数据块的开始和结束,这就是面向比特的同步传输协议中的基本成帧原理,或者说是基本的帧同步原理。在局域网中所采用的传输方式都是面向位流的同步传输方式,由它们各自的介质访问控制协议来定义具体的数据格式(即帧格式)以及相应的介质访问控制方法。
面向比特同步传输的通信协议中,最具有代表性的是 IBM 的 SDLC (Synchronous Data Link Control,同步数据链路控制)协议、国际标准化组织 ISO 的 HDLC 协议,美国国家标准协会 ANSI 的 ADCCP。

  • SDLC 协议是一种 IBM 数据链路层协议,适用于系统网络体系结构(SNA); HDLC是一~种在同步网上传输数据、面向位的数据链路层协议,是 ISO 对 IBM 的 SDLC 协议进行了改进和标准化的协议。但是** SDLC 属于单链路规程,而 HDLC 属于多链路规程。所有面向比特的数据链路控制(DLC)协议均采用统一的帧格式,且不论是数据还是单独的控制信息均以帧为单位传送。
    SDLC 支持识别两类网络站点:主站点(Primary Station)和从站点(Secondary Station**)。主站点控制从站点,主站点轮询从站点是否有数据要发送。也就是说,从站点只有在主站点授权前提下才可以向主站点发送信息,如果一个从站点有数据要发送,当它被主站点识别后才可开始数据传输。主站点按照预先确定的顺序选择从站点,一旦选定的从站点已经导入数据,那么它即可进行数传输。同时主站点可以建立和拆除链路,并在运行过程中控制这些链路。

HDLC 链路结构和操作方式
HDLC 是也采用主站点和从站点操作方式。在链路上起控制作用的站点称为主站点,其他的受主站控制的站点称为从站点。主站点负责对数据流进行组织,并且对链路。上的差错实施恢复。由主站点发往从站点的帧称为命令帧,而由从站点返回主站点的帧称为响应帧。连有多个站点的链路通常使用查询技术,对其他站点进行查询的站点称为主站点,而在点到点链路中每个站点均可作为主站点。主站需要比从站点有更多的功能,所以当终端与主机相连时,主机一~般总是主站点;在一个站点连接多条链路的情况下,该站点对于一些链路而言可能是主站点,而对另外-一些链路而言又可能是从站点。在 HDLC 中,对主站点、从站点和复合站点定义了图 5-16 所示的三种链路结构:不平衡链路结构、对称非平衡链路结构和平衡链路结构。从图中可以看出,不同链路结构,允许的站点的类型以及各站点发送命令帧和响应帧的权限也不一样。

SDLC/HDLC帧结构

  • SDLC/HDLC帧类型及其标识方法

面向字符的PPP同步传输协议

BSC、SDLC、HDLC 都属于局域网中的数据链路层协议,而 PPP (Point-to-Point Protocol,点对点协议)是一种应用非常广泛的广域网数据链路层协议。如我们在使用 Modem 进行拨号连接时就需要用到它,路由器设备间的 Serial 口之间的连接也要封装这个协议。

  • PPP简介
  • PPP帧结构与透明传输原理
  • PPP链路建立和拆除流程
  • PPP的PAP/CHAP身份认证

数据链路层主要网络设备

计算机网卡

  • 1. 有线以太网卡
    在企业局域网中,我们通常所说的有线网卡通常就是指以太网卡,所以在此也仅限于对以太网卡的介绍,而不再涉及目前在企业局域网中很少见到的其他网络类型的网卡,如令牌环网卡、令牌总线网卡和 FDDI 网卡等。另外,网卡除了要区分网络类型外,还可根据所应用的环境分为普通工作站网卡和服务器网卡两类。
    有线网卡还可根据以下几个方面可以进行进一步划分:一是网卡的主机接口,也就是网卡与计算机的接口;二是网卡主机接口总线的位数;三是网卡的网络接口类型,也对应了网卡所支持的传输介质类型;四是网卡所支持的以太网标准。
  • 2. WLAN 网卡
    在 WLAN 网卡方面,相对有线网卡来说要简单-些,那是因为就目前来说 WLAN 技术还不如有线网络那么先进,所以在主机接口方面没有什么特殊要求,一般的 32 位 PCI 或者 USB 1.1、2.0 或者 3.0 版本接口即可满足。
    在 WLAN 网卡选择方面主要考虑网卡的主机接口和所使用的 WLAN 技术标准。在台式机工作站中通常选用 PCI 或者 USB 接口的 WLAN 网卡(主要是 PCI 接口),如图 5-32 所示。

网桥及其工作原理

  • 1. 理解“网桥”的含义
    网桥(Bridge)是早期的两端口二层网络设备,用来连接不同网段的计算机网络设备(如图 5-34 所示),同时它又可隔离冲突域,因为它的两个端口不是共享一条背板总线(分别有-条独立的交换信道),比当时的集线器(Hub)性能更好(集线器上各端口都是共享同一条背板总线的)。后来,网桥被具有更多端口、同时也可隔离冲突域的交换机(Switch)所取代。
    也有人把“网桥”比喻成-一个聪明的中继器(Repeater)。因为中继器只是对所接收的信号进行放大,然后直接发送到另一个端口连接的电缆上,主要用于扩展网络的物理连接范围;而网桥除了可以扩展网络的物理连接范围外,还可以对 MAC 地址进行分区,隔离不同物理网段之间的碰撞(也就是隔离“冲突域”)。集线器和中继器都是物理层设备,而网桥属于二层设备。
  • 2. 网桥工作原理解析
    前面说到了网桥具有两种主要特性:- 是可基于物理网段的 MAC 地址进行学习,二是可以隔离冲突域。下面通过一个示例来进行解析。
    假设图 5-34 中所示的物理网段 1 和物理网段 2 中的主机都是通过集线器集中连接的,则这样这两个物理网段各自形成一个冲突域,因为集线器是采用共享介质传输的,而网桥的背板信道不是共享的(每个端口的数据收发都有一条单独的信道),所以一个集线器就是一个冲突域。网桥的数据转发原理如图 5-35 所示。下面是具体的解析。-

二层交换机

  • 在计算机网络设备还有一种是工作在数据链路层的,那就是二层交换机(其实三层或以上层次交换机同样提供二层交换功能)。
    交换机(Switch)可以说同时是集线器和网桥的升级换代产品,因为交换机具有集线器-样的集中连接功能,同时它又具有网桥的数据交换功能。所以可以这样说,交换机是带有交换功能的集线器,或者说交换机是多端口的网桥。
  • 1. 交换机的主要特性
    (1) 具有多个交换端口
    (2) 数据转发效率更高
    (3) 更强的 MAC 地址自动学习能力
  • 2. 交换机与集线器的区别
    交换机最开始是为了解决集线器共享传输介质、端口带宽过窄、容易产生广播风暴而产生的。最初的交换机是工作在 OSI 开放体系结构中的第-层,所以又称二层交换机。交换机与集线器的区别主要体现在如下几个方面:
    (1) 在 OSI 中的工作层次不同
    交换机(特指二层交换机,下同)和集线器在 OSI 开放体系模型中对应的层次不一样,集线器工作在第一层(物理层),而交换机至少是工作在第二层,更高级的交换机可以工作在第三层(网络层)、第四层(传输层)和第七层(应用层),对应也就有三层交换机、四层交换机、七层交换机等之说了。本章仅介绍二层交换机。

(2) 数据传输方式不同
集线器的数据传输方式是多次复制方式的广播传输,而交换机的数据传输是有目的的,数据只对目的节点发送,只是在自己的 MAC 地址表中找不到的情况下第一次使用以 FF-FF-FF-FF-FF-FF 作为 MAC 地址的“泛洪”广播方式传输。所以,交换机在数据传输效率和信道利用率方面要远高于集线器,集线器更容易产生“广播风暴”。

(3) 背板信道占用方式不同
在带宽占用方面,集线器所有端口都是共享集线器背板中的一条信道带宽,而交换机的每个端口的收、发都有独享的背板信道带宽,属于“交换”方式。这样- *来更进一步使得交换机的数据传输效率以及传输性能要远高于集线器。

  • 3. 交换机的分类
    (1) 根据网络类型划分
    根据交换机所应用的局域网类型可以将局域网交换机分为标准以太网交换机(10 Mbps 传输速率)、快速以太网交换机(100 Mbps 传输速率)、千兆以太网交换机(1000 Mbps 传输速率)、十千兆以太网交换机(10000 Mbps 传输速率)等。(2) 按交换机结构划分
    如果按交换机结构来划分的话,交换机可分为固定端口交换机和模块化交换机两种。

    (3) 按是否支持网管功能划分
    按交换机是否支持网络管理功能可以将交换机划分为网管型和非网管理型两大类。网管型交换机可以通过控制端口(Console)或 Web 界面进行配置与管理,非网管型交换机则不能进行任何配置与管理,仅可按照出厂的默认设置进行工作,也就是通常所说的傻瓜型交换机。

  • 二层交换原理
  • 二层交换原理

1)当交换机从某个端口收到一个数据帧后,先读取帧头部的源 MAC 地址,并与自已缓存中的映射表(CAM 表)进行比较,如果没有找到,则在 CAM 表中添加一个该源 MAC 地址与发送该帧的源端口映射表项。这就是交换机的 MAC 地址自动学习功能。

2) 如果在 CAM 表项查到了帧中源 MAC 地址,则继续查看是否有帧中目的 MAC 地址所对应的映射表项。如果有,则直接把该帧转发到目的 MAC 地址节点所连接的交换机端口,然后由该端口发送到目的主机。

3) 如果在交换机 CAM 表中没有找到帧中目的 MAC 地址所对应的表项,则把该数据帧向除源端口外的其他所有端口上进行泛洪。

4) 当 MAC 地址与帧中目的 MAC 地致的主机接收了该数据帧后就会向源主机产生-一个应答帧,交换机获取该应答帧后从其中的源 MAC 地址中获取了对应的 MAC 地址和所连接端口的映射关系,并添加到 CAM 表中。这样下次再有 MAC 地址为这个 MAC 地址的帧发送时交换机就可以直接从 CAM 表中找到对应的转发端口,直接转发,不用再泛洪了。

 

Advertisements

发表评论

Fill in your details below or click an icon to log in:

WordPress.com 徽标

You are commenting using your WordPress.com account. Log Out /  更改 )

Google photo

You are commenting using your Google account. Log Out /  更改 )

Twitter picture

You are commenting using your Twitter account. Log Out /  更改 )

Facebook photo

You are commenting using your Facebook account. Log Out /  更改 )

Connecting to %s

在 WordPress.com 上创建您自己的网站
开始
%d 博主赞过:
search previous next tag category expand menu location phone mail time cart zoom edit close