14、数据链路协议实例(数据链路层)

引言
大多数广域网的基础设施是以点到点方式建设的。通过广域网中的SONET光纤链路和ADSL链路发送数据包需要点到点链路,还会用到拨号调制解调器、租用线路和线缆调制解调器等。所谓点到点协议(PPP)的标准协议就是使用这些链路来发送数据包。PPP由RFC1661定义,并在RFC1662中得到进一步的阐述。

1、SONET上的数据包

  • 物理层描述的SONET是物理层协议,它最常用在广域网的光纤链路上,这些光纤链路构成了通信网络的骨干网。它提供了一个定义良好速度运行的比特流,比如2.4Gbps的OC-48链路。比特流被组织成固定大小字节的有效载荷,不管用户是否有数据发送,每隔125微秒要发出一个比特流。

  • 为了在这些链路上承载数据包,需要某种成帧机制来在比特流中区分数据包。运行在IP路由器上的PPP就提供了这种运行机制,如图。
    在这里插入图片描述

  • PPP功能包括处理错误检测链路的配置、支持多种协议、允许身份认证等。它是一个早期简化协议的改进,那个协议称为串行线路Internet协议(SLIP)。PPP提供了3个主要特性:(1)一种成帧方法。它可以毫无歧义地区分出一帧的结束和下一帧的开始。(2)一个链路控制协议。它可用于启动线路、测试线路、协商参数,以及当线路不再需要时温和地关闭线路。该协议称为链路控制协议(LCP)(3)一种协商网络层选项的方式。协商方式独立于网络层协议,所选择的方法是针对每一种支持的网络层都有一个不同的网络控制协议(NCP)

  • 因为没有必要重新发明轮子,所以PPP帧格式的选择酷似HDLC帧格式。HDLC是高级数据链路控制协议,是一个早期被广泛使用的家庭协议实例。PPP和HDLC之间的主要区别在于:PPP是面向字节并使用字节填充技术,而HDLC协议使用比特填充技术,允许帧的长度不是字节的整数倍。第二个区别是:HDLC提供了可靠的数据传输,所采用的方式正是我们以熟悉的滑动窗口、确认和超时机制,PPP也可以在诸如无线网络等嘈杂的环境里提供可靠传输,具体细节由RFC1663定义,然而实际上Internet几乎都是采用一种“无编号模式”来提供无连接无确认服务。

  • PPP帧格式如图所示,所有的PPP帧都从标准的HDLC标志字节0x7E(01111110)开始。标志字节如果出现在Payload字段,则要用转义字节0x7D去填充其前;然后将标志字节与0x20进行XOR操作,这样使得第6位比特反转。例如0x7D 0x5E是标志字节0x7E的转义序列。这意味着只需要找到0x7E就可以找到帧的开始和结束。接收到一个帧后要去掉填充字节,再对其后字节用0x20进行XOR操作。两帧之间只需要一个标志字节,当链路上没有帧发送时,可以用多个标志字节填充。在这里插入图片描述

  • 紧跟在帧开始处标记字节后面出现的是Address字段,这个字段总是被设置为二进制值11111111,表示所有站点都应该接受该帧,使用这个值可避免如何为数据链路层分配地址这样的问题。Address字段后面是Control字段,默认值是00000011,此值表示一个未编号帧。因为Address和Control字段总是取默认配置的常数,因此LCP提供了某种必要的机制,运行通信双方就是否省略这两个字段进行协商,去掉的话可以为每帧节省2个字节的空间。

  • PPP的第四个字段是Protocol字段,它的任务是通告Payload字段中包含了什么类型的数据包。以0开始的编码定义为IP版本4、IP版本6以及其他可能用到的网络层协议。以1开始的编码被用于PPP配置协议,包括LCP和针对每个网络层协议而设置的不同NCP。Protocol字段的默认大小为2个字节,但它可以通过LCP协商减少到1个字节。Payload字段是可变长度,最高可达某个协商的最大值。如果在链路建立时没有通过LCP协议进行协商,则默认长度1500字节。如果需要,在有效载荷后填充字节以便满足帧的长度要求。Payload字段后面是Checksum字段,它通常占2个字节,但可以协商使用4个字节,4字节的校检和与32位的CRC相同,其生成的多项式正是CRC章节后面给出的多项式,2字节的校检和也是一个工业标准CRC。

  • PPP是一个成帧机制,它可以在多种类型的物理层上承载多种协议的数据包。为了在SONET上使用PPP,RFC2615列出了一些可用的选择。因为这是检测物理层、数据链路层和网络层传输错误的主要手段,因此采用了4字节的校检和。PPP还有一个特点:PPP的有效载荷在插入到SONET的有效载荷之前先进行扰码操作(物理层有述)。用长伪随机序列对有效载荷进行扰码XOR之后再传送出去。问题在于为了保持同步SONET比特流,必须频繁进行比特跳变,这些跳变很自然地与语音信号的变化结合在一起,但在数据通信中用户选择发送的信息和数据包可能包含一长串的0,有了扰频技术,用户因为发送一长串0而导致的问题的可能性降到极低。

  • 在通过SONET线路发送PPP帧之前,必须建立和配置PPP链路。PPP链路的启动、使用和关闭的一系列阶段如图所示。在这里插入图片描述

  • 链路的初始状态为DEAD,这意味着不存在物理层连接。当物理层连接被建立起来,链路转移到ESTABLISH状态。此时,PPP对等实体交换一系列的LCP报文进行上面所说的那些PPP选项的协商,这些LCP报文放在PPP帧的Payload字段,初始发起连接的实体提出自己的选项请求,对等实体可以部分接受或者全部接受、全部拒绝,同时也可以提供自己的选项要求。如果LCP选项协商成功,链路状态进入AUTHENTICATE(认证)状态。现在,如果需要,双方可以互相检查对方的身份。如果认证成功,则链路进入NETWORK状态,通过发送一系列的NCP包来配置网络参数。NCP协议很难一概而论,因为每个协议特定于实际采用的某个网络协议,允许执行针对特定网络层协议的配置请求。例如,对于IP协议而言,为链路的两端分配IP地址是最重要的可能操作。一旦进入OPEN状态,双方就可以进行数据传输。正是在这个状态,IP数据包被承载在PPP帧中通过SONET线路传输。当完成数据传输后,链路进入TERMINATE(终止)状态;当物理层连接被舍弃后从这里回到DEAD状态。

2、对称数字用户线

  • ADSL以Mbps速率将百万计的家庭用户连接到Internet上,并且使用的是与普通老式电话服务相同的本地回路。ADSL使用的协议和设备的概貌如图所示,PC使用以太网链路把IP数据包发送到DSL调制解调器;然后DSL调制解调器通过本地回路把IP数据包发送到DSLAM(DSL接入复用器,该设备在电话公司端局),发送数据包所用的协议就是我们将要学习的协议。在DSLAM设备上把IP数据包提取出来,并被注入到ISP网络,从而到达Internet上的任何目的地。

  • 图中,ADSL链路之上的协议底部是ADSL物理层。它们基于称为正交频分复用(也称离散多音)的数字调制解调方案,接近协议栈顶部,恰好位于IP网络层正下方的是PPP,该协议与前述相同。在这里插入图片描述

  • 在ADSL和PPP两者之间的是ATM和AAL5。异步传输模式(ATM)早在20世纪90年代初就被设计了出来,应用于诸如DSL那样的带宽接入线路以及电话网络内部的广域网网链路。ATM是一种链路层,它的传输基于固定长度的信息信元。其名称中的异步意味着这些信元并不总是以连续的方式发送,这与SONET在同步线路上发送的方式不同,只有当出现需要运载的信息时,才发送信元。ATM是一种面向连接的技术,每个信元在它的头部带有虚电路标识符,交换设备根据此标识符沿着连接建立的路径转发信元。

  • 每个信元53字节长,由一个48字节的有效载荷以及一个5字节的头组成。利用这些小信元,ATM可以为不同用户灵活划分物理层链路的带宽。这种能力对网络应用非常有用,例如在同一条链路上发送语音信息和数据信息,不会因为出现很长的数据包而导致声音样本值的延迟变化过大。为了在ATM网络上发送数据,需要将数据映射成一系列的信元。这个映射由ATM适配层完成,映射过程称为分段和重组。针对不同的服务定义了几个适配层,从周期性的声音样本到数据包数据。其中一个主要用于数据包数据的适配层是ATM适配层5(AAL5)。一个AAL5帧如图所示,除了帧头还有一个帧尾,给出了帧的长度和利用错误检测的4字节CRC。很自然,这里的CRC与PPP等使用的相同。已表明该CRC强大到足以检测出非传统错误(诸如信元重新排序)。除了有效载荷外,AAL5帧还需要被填充。填充的目的是使得帧的总长度是48字节的倍数,以便帧被均匀地划分成多个信元。这里不需要地址,因为每个信元携带的虚电路标识符将引导它们到达正确的目的地。
    在这里插入图片描述-

  • 仅涉及在ADSL的情况下PPP如何使用ATM?这项工作由另一个称为ATM上的PPP(PPPoA)标准完成,这个标准不是真正意义上的协议,但详细说明了PPP和AAL5帧如何工作的,该标准由RFC2364描述。只有PPP协议和有效载荷字段被放置在AAL5的有效载荷,协议字段告诉远端DSLAM有效载荷包含的是一个IP数据包,或者另一种协议的数据包(比如LCP协议)。在AAL5帧内,PPP的成帧功能并不是必须的,因为在这里起不到任何作用;ATM和AAL5早已提供了成帧功能;同样,PPP的CRC也没有必要,因为AAL5已经包括了相同的CRC。这个错误机制补充了ADSL的物理层功能,ADSL物理层采用Reed-Solomon码来检测错误,同时还用1字节的CRC来检测遗漏的任何错误。该方案具有比在SONET上发送数据包更为复杂的错误恢复机制,因为ADSL是一种非常嘈杂的信道。

3、数据链路层总结

  • 数据链路层的任务是将物理层提供的原始比特流转换成由网络层使用的帧流。链路层为这样的帧流提供不同程度的可靠性,范围从无连接无确认的服务到可靠的面向连接服务不等。
  • 链路层采用的成帧方法各种各样,包括字节计数、字节填充和比特填充。数据链路协议提供了差错控制机制来检测或纠正传输受损的帧,以及重新传输丢失的帧。为了防止快速方淹没慢速接收方,数据链路协议还提供了流量控制机制。滑动窗口机制被广泛用来以一种简单方式集成差错控制和流量控制两大机制。当窗口大小为1个数据包时,则协议是停-等式的。
  • 纠错和检错码使用不同的数字技术把冗余信息添加到消息中。卷积码和里德所罗门码被广泛用于纠错,低密度校检码越来越受欢迎。实际使用的检错码包括冗余循环校检和校检和两种。所有这些编码不仅可被用在链路层,而且也可以用在其它层。
  • 我们考察了一系列协议,这些协议在更现实的假设下通过确认和重传,或者自动重复请求机制为上层提供了一个可靠的链路层。从一个无错误的环境开始,即接收方可以处理传送给它的任何帧,我们引出了流量控制,然后是带有序号的差错控制和等-停式算法。然后,我们使用滑动窗口算法允许双向通信,并引出捎带确认的概念。最后给出两个协议把多个帧的传输管道化,以此来防止发送方被一个有着漫长传播延迟的链路所阻塞。接收方可以丢弃所有乱序的帧,或者为了获得更大的带宽效率而缓冲这些乱序帧,并且给发送方反馈否定确认。前一种策略是回退n协议,后一种策略是选择重传协议。
  • Internet使用PPP作为点到点线路上的主要数据链路协议。PPP协议提供了无连接的无确认服务,使用标志字节区分帧的边界,至于错误检测则采用CRC。该协议通常被用在运载数据包的一系列链路上,包括广域网中的SONET链路和家庭ADSL链路。

猜你喜欢

转载自blog.csdn.net/ao__ao/article/details/85144059