计算机网络原理与应用(第2版)
上QQ阅读APP看书,第一时间看更新

2.3 数据链路层

2.3.1 数据链路层的功能

物理层只负责接收和发送一串比特流信息,不考虑信息的意义和结构。物理层不能解决真正的数据传输与控制,如异常情况处理、差错控制与恢复及信息格式等。数据链路层协议是建立在物理层基础上的,通过数据链路层协议,在不太可靠的物理链路上实现可靠的数据传输。数据链路层的功能是实现两个相邻节点之间二进制信息块的正确传输,通过进行必要的同步控制、差错控制、流量控制,为网络层提供透明、可靠的数据传输服务。数据链路层协议规定了最小数据传送逻辑单位——帧的格式、差错校验方法、流量控制及寻址方法等,以实现两个相邻节点之间无差错的数据帧传输。这里所说的地址是硬件地址,也称为物理地址。物理地址仅在一个物理网络中有效,属于局部地址,和后文所提及的IP地址不同。IP地址是逻辑地址,是因特网在全球范围内使用的全局地址。

数据链路层的具体功能如下。

(1)帧同步。为了使传输过程中发生差错后只将有错的有限数据进行重发,数据链路层将比特流组合成帧传送。在信息帧中携带有校验信息段,当接收方接收到信息帧时,按照约定的差错控制方法进行校验来发现差错,并进行差错处理。帧的组织结构必须设计成使接收方能明确地从自物理层接收来的比特流中区分出帧的起始和终止,这是帧同步需解决的问题。

(2)差错控制。为了保证数据传输的可靠性,在计算机通信过程中要采用差错控制。通常采用的是检错重发方式(ARQ),即接收方每收到一帧便检查帧中是否有错,一旦有错,就让发送方重传此帧,直到接收方正确接收为止。

(3)流量控制。协调相邻节点间的数据流量,避免出现拥挤或阻塞现象。一般进行通信的节点都需要设置帧缓冲区,用来暂存接收到的数据帧,以待进一步的处理。若发送节点发送数据的速度太快,接收节点来不及处理缓冲区中的数据帧,就会出现接收节点帧缓冲区数据溢出,进而造成溢出数据的丢失。因此,接收节点需要在其接收缓冲区数据溢出之前及时通知发送节点停止或减慢发送速度。

(4)链路管理。包括建立、维持和释放数据链路,并可以为网络层提供几种不同质量的链路服务。如双方通过交换必要的信息确认对方是否处于通信准备就绪状态、设定数据帧的某些字段内容和格式,以及通信结束后的一系列恢复工作,包括缓冲区和状态变量资源的释放等。

2.3.2 数据链路层的帧格式

帧是数据链路层信息传输的基本信息单位,也是数据链路层的协议数据单元。计算机网络的数据交换方式是分组交换,帧是分组在数据链路层的具体体现,它包括按协议规定好的数据部分、发送和接收站点的地址以及处理控制部分等。数据链路层的帧格式如图2.9所示。

图2.9 数据链路层的帧格式

帧头一般包括用于标志一个帧开始和结束的标志字段F(或帧定界符)、用于标明地址的地址字段A、用于进行链路监视和控制的控制字段C,其中标志字段同时还可用作帧的同步和定时信号。数据部分为要传输的数据、报表等信息。帧尾一般是由用于差错控制的帧校验序列FCS和标志字段F组成,帧校验序列校验范围是该帧除帧标志以外的内容。

用户在网络中传输的信息(报文)大小是不固定的,但封装成的数据帧的大小和规格是有限制的。在通信中,一个报文需要几帧进行传输取决于帧的大小和报文的大小。

2.3.3 典型协议及应用

在数据链路层,OSI的协议集也采纳了当前流行的协议。其中包括HDLC、LAP-B以及IEEE 802的数据链路层协议(ISO 8802)。数据链路控制协议可分为两大类,即面向字符的协议和面向比特的协议。面向字符的协议以字符作为传输的基本单位,并用10个专用字符控制传输过程。这类协议发展较早,如IBM的BSC规程。面向比特的协议以比特作为传输的基本单位,它的传输效率高,能适应计算机通信技术的发展,已广泛应用于公用数据网上。

典型的数据链路层协议是ISO制定的高级数据链路协议(HDLC)。它是一个面向比特的链路层协议,能够实现在多点连接的通信链路上一个主站与多个次站之间的数据传输。其帧的格式如图2.10所示。

图2.10 HDLC帧的格式

标志字段(Flag, F)用于标志一个帧的开始和结束,同时还可用作帧的同步和定时信号。它是一个8bit固定组合序列(01111110)。当连续发送数据时,前一帧的结束标志又可作为后一帧的开始;当数据不连续发送时,帧和帧之间可连续发送F。在这种状态下,发送方不断地发送标志字段,而接收方则检测每一个收到的标志字段,一旦发现某个标志字段后面不再是一个标志字段,便可认为一个新的帧传送已经开始。为了保证F编码不会在数据中出现,HDLC采用0bit插入和删除技术。其工作过程是,在发送端检测除标志字段以外的所有字段,若发现连续5个1出现时,便在其后添插一个0,然后继续发送后面的比特流;在接收端同样检测除标志码以外的所有字段,若发现连续5个1后是0,则将其删除以还原恢复比特流。

地址字段(Adress, A)在标志字段F后,字段长度为8bit。当采用扩充寻址方式时,地址长度以8bit为单位进行扩充。主要用于标明地址。

信息字段(Information, I)用于填充要传输的数据、报表等信息。HDLC对数据段的长度没有限制,但在具体实现时需根据具体情况选择最佳的帧长度。

帧校验序列(Frame Check Sequence, FCS)用于差错控制,它对两标志字段之间的A字段、C字段和I字段的内容进行校验。HDLC采纳ITU-T建议的校验生成多项式,即gx)=x16+x12+x5+1,故FCS占16位。后来又提出了32位FCS,以增强检错能力。

控制字段(Control, C)用于进行链路的监视和控制。控制字段区分3种不同的帧,即信息帧(I帧)、监控帧(S帧)和无编号帧(U帧)。各类帧中控制字段的格式如表2.3所示。

表2.3 控制字段位格式

控制字段(C字段)是HDLC的关键。控制字段中的第1位或第1、2位表示传送帧的类型。字段的第1位为0时表示信息帧,第1、2位为10时表示该帧为监控帧,第1、2位为11时表示该帧为无编号帧。第五位是P/F位,即轮询/终止(Poll/Final)位。当P/F位用于命令帧(由主站发出)时,起到轮询的作用,即当该位为1时,要求被轮询的从站给出响应,所以此时P/F位可称轮询位(或P);当P/F位用于响应帧(由从站发出)时,称为终止位(或F位),当其为1时,表示接收方确认的结束。

信息帧(I帧)中包含信息(I)字段,用来传输用户数据,为了进行连续传输,需要对帧进行编号,所以控制字段中包括了帧的编号。其中N(S)为当前发送帧的编号,具有命令的含义;N(R)表示N(R)以前各信息帧已接收,希望接收第N(R)帧,有应答的含义。N(S)、N(R)段均为3位,故帧序号为0.7。

监控帧(S帧)中没有信息(I)字段,用于监视链路的常规操作。S帧C字段第3、4位可组合成00、01、10、11这4种情况,对应4种不同情况的帧,如表2.4所示。

表2.4 4种不同情况监控帧(S帧)

无编号帧(U帧)本身不带编号,即无N(S)和N(R),它用C字段中的第3、4、6、7、8位表示不同的U帧。U帧用于链路的建立和拆除阶段。它可在任何时刻发出而不影响带序号信息帧的交换顺序。