11、数据链路层的设计问题与差错检测纠正(数据链路层)

1、数据链路层的设计问题

引言

  • 数据链路层主要完成的功能包括:(1)向网络层提供一个定义良好的接口(2)处理传输错误(3)调节数据流,确保慢速接收方不会被快速发送方淹没。
  • 数据链路层将从网络层获取的数据包封装成帧以便传输。每个帧包含一个帧头、一个有效载荷(存放数据包)以及一个帧尾。
1.1提供给网络层的服务
  • 在源机器的网络层有一个实体(称为进程),它将一些比特交给数据链路层,要求传送到目标机器。数据链路层的任务就是将这些比特传输给目标机器,然后交付给网络层,如图a;实际传输如图b,但很容易将这个过程想象成两个数据链路层的进程使用一个数据链路协议进行通信。本章中将隐式使用图a模型。在这里插入图片描述
  • 数据链路层提供的服务因具体协议的不同而有所差异。一般情况下,数据链路层提供以下3种可能的服务:(1)无确认的无连接服务(2)有确认的无连接服务(3)有确认的有连接服务
  • 无确认的无连接服务是指源机器向目标机器发送独立的帧,目标机器并不对这些帧进行确认。以太网就是一个提供此类服务的数据链路层极好实例。这种连接,事先不必建立逻辑连接,事后不必释放连接;若由于线路噪声造成了某一帧的丢失,数据链路层并不试图检测这种情况,更不会恢复。这类服务使用于两种场合:一种是错误率极低的场合,差错恢复可以由上层完成;一种是实时通信,及时交付比准确交付更重要。
  • 有确认的无连接服务。当网络层提供这种服务时,数据链路层仍然没有建立逻辑连接,但发送的帧需要单独确认,使发送方知道发送帧是否到达目的地。如果没有在一个指定的间隔到达,则发送方再次发送该帧,但可能导致一个帧被收发多次,浪费带宽。这类服务适用于不可靠信道,比如无线系统。802.11(WiFi)是此类服务的一个例子。
  • 有确认的有连接服务。发送方和接收方在传输数据之前需要建立一个连接,连接上发送的每一帧都被编号,数据链路层保证发出的每一帧都被接收方收到。它还保证每个帧只被接收一次,并且按正确的顺序接收。它适用于长距离且不可靠的链路,比如卫星通信或者长途电话电路。
1.2成帧
  • 物理层所做的只是接收一个原始比特流并传给目标机器,如果信道存在噪声,物理层会在信号中添加某种冗余以便将误码率降到一定程度。但数据链路层接收的比特流并不一定正确,可能出现值的变化或者比特数量的不一致,因而需要检错和纠错。
  • 数据链路层将比特流拆分成多个离散的帧,为每一个帧计算一个称为校验和的短令牌,并插入到帧中传输。目标机器需要重新计算该帧的校验和,如果计算出来的校验和与该帧包含的校验和不同,则数据链路层知道传输过程中出现了错误,它会采取一定措施(比如丢弃或者发回一个错误报告)。
  • 拆分比特流需要使得接收方发现一个帧的开始,同时要使得所用带宽最少。常用的方法有:(1)字节计数法(2)字节填充的标志字节法(3)比特填充的标志比特法(4)物理层编码违禁法
  • 字节计数法。利用头部中的一个字段表示该帧中的字符数。接收方因此知道该帧有多少字节、在哪里结束,如图a。这个算法的问题在于计数值可能因一个传输错误而被弄混。例如第二帧中的计数值5因为一个比特值反转变成7,如图b,那么接收方就会失去同步,它再也不可能找到下一帧的开始处。即使要求重传,接收方也不知道该跳过多少字节才能到达重传的开始处,因而字节计数法使用很少。
    在这里插入图片描述
  • 字节填充法。它让每个帧用一些特殊的字节作为开始和结束,这些字节称为标志字节。如图a中的FLAG所示。两个连续的标志性字节代表了一帧的结束和开始。因此接收方失去同步也能通过搜索两个标志性字节找到当前帧的结束和下一帧的开始。当标志性字节出现在数据中时,采用特殊的转义字符(ESC)插入其前;接收方的数据链路层在将数据传输给网络层之前必须删除转义字节。如果转义字符也出现在数据中,同样使用一个转义字符插入其前,接收方将删除第一个转义字符。如图b,图中描述的字节填充方案是PPP(Pont-to-Point Protocol)协议使用的略微简化形式(PPP在SONET/SDH链路中使用的是0比特填充法)。在这里插入图片描述
  • 比特填充法。帧的划分可以在比特级完成,因而帧可以包含任意大小单元(而不只是以8比特为单元)组成的二进制比特数。这种方法是为曾经流行的HDLC(高级数据链路控制)协议开发。每帧的开始和结束由一个特殊的比特模式,01111110或十六进制的0x7E标记。这种模式是一个标志性字节。每当发送方的数据链路层在数据中遇到连续5个1,它便自动在输出的比特流中插入一个比特0,接收方会自动删除插入的0。比特填充确保了转换的最小密度,这将有助于物理层保持同步。USB(通用串行总线)采用了比特填充技术。比特填充保证了标志字节只可能出现在帧的边界,而不会出现在帧内数据中。其副作用是一帧的长度取决于它所携带的数据内容。例如,数据中没有标志字节,100个字节数据或许只需要一个100字节左右的帧所携带;然而如果数据全由标志性字节组成,那么每个字节中插入1个0,帧的增幅大约为12.5%。
  • 物理编码违禁法。物理层中叙述的比特编码成信号方法通常包含一些冗余比特,以便帮助接收器同步接收。例如在4B/5B线性编码模式下,4个数据位被映射成5个信号比特,通过这种方法确保线路上的信号有足够的跳变。但32个可用的信号中有16个不会被使用,我们可以利用这些保留的信号来指示帧的开始和结束。
  • 许多链路层协议为安全起见综合使用了这些方法。以太网和802.11使用了共同的分界模式,即用一个定义良好的的比特模式来标识一帧的开始,该比特模式称为前导码。这种定界模式可能很长(802.11典型使用72位),目的是让接收方准备接收输入的数据包。前导码之后是头的长度字段(即计数),这个字段将被用来定位帧的结束处。
1.3差错控制
  • 对于
  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值