DLC在5G时代背景下,有线网充分发展,有线网第二阶层的DLC渐渐消失了;而对于移动通信,DLC仍然是必要的。而DLC实际上就是流量控制和差错控制,流量控制是指可以根据状况调整传输速率,差错控制则是上一章节重点说明的通过CRC等差错校验方式检测出错误的能力。

DLC(Data Link Control)

物理层提供位同步,以确保发送方和接收方使用相同的位持续时间和定时;另一方面,数据链路层需要将bits打包成帧,以便每一帧都能区别开来。

Framming

对于多个Tx同时传输时,在单位时间内信道内只允许传输1单位数据,换言之所有源数据需要按顺序占用信道,这很类似操作系统中的调度问题。互相竞争,胜利者占用信道来传输数据,但是也不能只传输这一个数据源,就要求数据的分帧(Framming)。
分帧:封装成帧,将要传输的数据封装成帧在数据链路层传输,由于过大的数据会导致传输时间过长,导致其他进程无法执行,因此大数据需要进行分割,分割成小数据。帧长度分割过大没有结局问题,分割过小又会出现效率问题(因为传输需要头部,如果帧过小,头部和有效数据本身数据量差距不大,整体而言信道传输有效数据的效率就会很低)。所以帧的分割大小要求一定要合适。


分帧的的方式分为长度可变的帧与固定帧。
固定帧:传输大小适中固定,因此头部需要的控制信息也减少了,头部整体数据量也会减小,传输效率有最低保障。也可能发生效率问题。

Flag:用于明确帧与帧之间的间隙。 8bit为01111110。如果有效数据中有与控制信息相同的比特流,就会发生错误截断,将部分有效数据丢失。因此我们需要一种控制方法来解决这个问题,使用的就是每5个连续的1后面追加一个0,这样就会避免出现Flag比特组组合。这种方法被称作 Bit stuffing


可变帧:根据信道的最大速率可以调整分帧的大小,有效数据越多,头部大小也会随之增加,因为需要告知Rx数据变化量。虽然头部较大,但是在效率问题上发挥的比想象中的好。可变帧有面子字符与面向比特两种类型。

Character−OrientedCharacter-OrientedCharacter−Oriented:面向字符,也称面向字节[Character-Byte]。由于数据传输过程中,大多数情况是用8bit的字符来传输可视化的信息,因此一般情况下头部的长度是8的倍数。

ESC:转义字符:由于传输的数据是二进制比特流,那么就有可能在有效数据段中存在和Flag等标识符相同的数据流,此时如果误读为帧的结束就会破坏原数据,因此在特殊字符组合前面增加一个转义字符ESC,就可以告诉Rx接下来的数据是有效数据而非控制数据,就不会截断有效数据。

Flow&Error Control


流量控制和差错校验的组合:
流量控制:调节Tx与Rx之间数据通信速率,根据信道状况实现传输。实现方式Ack(及时响应数据报文)。当传输速率过快,Rx的BUFFER已经满了,无法继续消化传输的数据时,会返回一个响应数据包告诉Tx发慢点或者先别发,当接收能力改善后,则再返回一个数据包要求Tx调整速率或开始发。
差错检验:通过CRC等方式检测出错误后,有两种处理方式。其一是静默丢包,丢掉该数据包的过程不会被感知,如果没有错误也会静默传输给网络层;另一种是返回Ack告诉Tx错误,要求重传。对于Tx而言,流量控制和差错校验组合的系统下,Ack返回是一个常态事务,哪怕接收无错误,也会返回一个Ack表示正常接收,这样加入Rx一定时间内没有返回Ack确认,则会认为没有收到数据包或者数据包出错或Ack丢包等,会重传数据包。

Connectionless Protocol:无连接协议,每个数据包相对独立,在数据链路中传输时不事先建立连接,节点之间的转发由节点自行判断,每个数据包与其他数据包无关,没有顺序到达要求。常用于有线网

Connection-Oriented Protocol:面向连接协议:通信前首先建立一个专属的逻辑信道,在该信道内数据包按照顺序依次编号发送。常用于无线网,有线网中非常罕见

数据链路层协议(Data link layer protocol)

先来简单说明一下Simple, Stop-and-Wait, Go-Back-N, and Selective-Repeat这四种协议,本小节重点说明前两种。
Simple:最简单的,Tx发送信息,Rx接收信息
Stop-and-Wait: 通过Ack实现DLC的协议
Go-back-N:如果第N个数据包出错,则返回Ack来请求Tx进行重传,有DLC功能。一旦检验出错,要求发送方重发最后一个正确接受的信息帧之后的所有未被确认的帧。
Selective-Repeat:出错量比较大,重传负荷重,选择性重传。

finite state machine (FSM):在事件发生之前,机器总是处于其中一种状态。一个FSM被认为是一台具有有限数量状态的机器,某些行为会令机器的状态发生变化。

数据链路层的协议刚好可以用FSM来表示

Simple


Simple没有任何DLC功能,仅仅是发送和接收。
用FSM表示:发送方在接收方提交数据帧给网络层之前不可以继续发下一帧;接收方在接收数据帧之前不得提交;每个FSM只有一种状态,即就绪状态。发送机器保持就绪状态,直到网络层的进程发出请求

Tx-Ready:就绪态:等待数据帧到达/等待Rx提交
Tx-Action:发送一个数据帧给Rx
Rx-Reday:等待数据帧到达
Rx-Action:提交到达的数据帧给网络层

Stop&Wait


最基本的拥有Ack的响应过程,流程如下:

Tx:Ready等待获取网络层传过来的数据/等待收到正确的Ack,

Ready状态:
触发条件:接收网络层的数据包
Action:封装成帧,存一个备份(可能需要重传)然后启动计时器并发送,此后状态转换为锁定态

Blocking状态:
动作1:等待ACK,计时器超时,视为丢包,重传备份
动作2:接收到ACK,但是ACK检验出了错误,传输过程中可能出现未知的错误,重传备份
动作3:接收到正确的ACK,将缓存的备份删除,停止当前计时器

Rx:收到Tx的数据帧,出错则丢包并重新回到就绪态等待重传;正确则提交给网络层并回到就绪态继续等待下一个数据帧的到来

Duplicate问题:在Rx收到数据包并提交后,返回的ACK丢包,此时Tx认为Rx没收到并重传数据,此时Rx收到了两份相同的数据并提交

解决办法:如图所示,为每一个数据帧增加一个编号,ACK返回时添加下一个要传输的帧编号,这样如果收到重复信息也不会提交并且仍然会返回正确的编号。
当节点A向节点B发送数据时,节点A也会确认从节点B收到的数据。

HDLC

High-level Data Link Control (HDLC) 是一个面向bit协议,适用于点到点连接和多点连接

Normal response mode (NRM)


传输分主次,只有主机可以使用命令,其他客机只能响应命令;最近不怎么使用了,要有性能足够优秀的基站才能使用这个模型。

Asynchronous balanced mode (ABM)


网络中的机器均具有同等地位,可以相应或者发出命令

HDLC


I-F:一般的传输用数据,携带有效数据和控制信息
S-F:仅携带控制信息,无有效信息,如ACK
U-F:系统管理预留,管理数据链路用的数据帧

Flag:这个字段包含同步模式01111110,它标识帧的开始和结束。
Add:这个字段包含二级站的地址,如果主站创建的帧,它包含了“目标地址”,如果二级站创建的帧,它包含了一个“源地址”。地址字段可以是一个字节或多个字节长(根据网络的需要)。理解困难的话:主站创建的地址是源计算机,它在局域网内地址唯一,他要与该LAN内其他节点通信就需要 指明目的地,而其他节点在NRM下不具有发起命令的功能,仅能响应命令,因此只能回应源计算机,所以回应时需要写上自己的地址来告诉主机数据来源。
Control:控制字段是用于流和错误控制的一个或两个字节
Information:信息字段包含来自网络层的用户数据或管理信息。它的长度可以根据不同网络间的切换而变化
FCS:帧校验序列(FCS)是HDLC的错误检测域,它可以包含2 -或4字节的CRC

对于这三中类型的帧,他们有固定的地址类型


I-F:最基本传输单元,承载用户信息且具有DLC功能,NS表示帧的编号,NR表示当传输与ACK同时传输时的ACK编号。P/F比较特殊,只有值为1时才有意义,表明了传输的方向,如果是主机发给客机的,则地址栏内写的是目标地址;当客机发给主机,地址栏写的是源地址,不管哪种,地址栏写的都是客机地址。
S-F:监控帧用于流量和错误控制,无论何时piggybacking是不可能的或不合适的。没有有效数据,ACK也有NACK表示不管传送失败还是成功都会给恢复一个确认,如果失败恢复的则是NACK。
U-F:用于在连接的设备之间交换会话管理和控制信息,比如连接建立和连接释放
U-frames包含一个字段的information字段,但一个用于系统管理信息,而不是用户数据

PPP协议

PPP协议:HDLC的表现

PPP被设计来接受来自几个网络层的有效负载,PPP协议无流量控制,出错后会静默丢包。且可以分配IP地址。
这里的控制字节用来管理连接状态已经对两节点之间的链路进行控制。U-frames包含一个信息字段,但是这个字段用于系统管理信息,而不是用户数据

协议字段定义了在数据字段中携带的内容:用户数据或其他信息。该字段默认为2字节长,但双方可以同意只使用1字节
有效载荷领域【Payload field】:该字段携带用户数据或其他信息,数据字段是一个字节序列使用默认的最大1500字节(可以协商进行调整)
FCS:帧检查序列(FCS)只是一个2字节或4字节的标准CRC

PPP连接经历了几个阶段,这些阶段可以在过渡阶段图中显示出来;转换图是一个FSM,从dead state开始。在这种状态下,没有有源载波(在物理层),线路是非唤醒状态。当两个节点中的一个开始通信时,连接进入建立状态【establish state】。

当通过载波建立起连接后,需要有一个认证过程才能成功连接网络阶层

PPP协议中的三种协议
 Link Control Protocol (LCP)
 Two Authentication Protocols (APs)
 Several Network Control Protocols (NCPs)


协议字段的值决定了数据字段的不同。LCP负责建立、维护、配置和终止链接,所有的LCP数据包都在PPP帧的有效负载字段中携带,协议字段设置为十六进制的C021


认证协议:在PPP中起着非常重要的作用,因为PPP是为拨号连接而设计的,在拨号连接中需要验证用户身份,密码身份验证协议和挑战握手身份验证协议


Network Control Protocols:PPP是一种多网络层协议。它可以携带一个网络层数据包协议定义的互联网,OSI, Xerox, DECnet, AppleTalk, Novel,等等

举个例子如IPCP(因特网协议控制协议),设定为携带IP数据包的链路。

用户可以从网络层交换数据包

【通讯原理】Ch.11 DLC(Data Link Control)数据链路控制相关推荐

  1. 计算机网络笔记Part3 数据链路层(Data Link Layer)

    本人计算机网络笔记总目录 计算机网络笔记Part1 概述 计算机网络笔记Part2 物理层(Physical Layer) 计算机网络笔记Part3 数据链路层(Data Link Layer) 计算 ...

  2. 【计算机网络】第三部分 数据链路层(11) 数据链路控制

    文章目录 11.1 成帧 11.1.1 固定长度成帧 11.1.2 可变长度成帧 1. 面向字符协议 2. 面向位协议 11.2 流量控制和差错控制 11.2.1 流量控制 11.2.2 差错控制 1 ...

  3. 【通讯原理】Ch.14 无线LAN-WiFi

    以太网与WIFI的比较 首先来简单对比一下以太网(有线局域网)与WIFI的区别. 以太网:使用CSMA/CD抢占资源来传输数据,随着交换机的出现,建立多个点对点信道通信而使得CSMA/CD的使用最近逐 ...

  4. 《计算机网络》第三章:数据链路层(The Data Link Layer)

    Copyright(C)肖文栋教授@北京科技大学自动化学院 内容安排 3.1 Data Link Layer Design Issues数据链路层设计要点 3.2 Error Detection an ...

  5. 38.CAN通讯原理与配置

    CAN通讯原理与配置 参考资料 探索者STM32F407开发板 <STM32F4开发指南-库函数版本>--CAN通讯实验 CAN参考资料 <STM32中文参考手册_V10>-第 ...

  6. ajax通讯原理,ajax通讯原理以及自己封装一个ajax函数

    ajax通讯原理 要解释ajax的原理,需要从旧的交互方式开始,当用户触发一个http请求到服务器,服务器对其进行处理之后,再返回一个新的html页到客户端,每当服务器处理客户端提交的请求时,客户都只 ...

  7. 【5G系列】RLC (Radio Link Control )协议详解

    本人就职于国际知名终端厂商,负责modem芯片研发. 在5G早期负责终端数据业务层.核心网相关的开发工作,目前牵头6G算力网络技术标准研究. 博客内容主要围绕:        5G协议讲解       ...

  8. 网络工程师入门/底层通讯原理-李强强-专题视频课程

    网络工程师入门/底层通讯原理-204人已学习 课程介绍         网络工程师是通过学习和训练,掌握网络技术的理论知识和操作技能的网络技术人员.网络工程师能够从事计算机信息系统的设计.建设.运行和 ...

  9. Oracle 11g Release 1 (11.1) Data Pump 导出模式

    http://docs.oracle.com/cd/B28359_01/server.111/b28319/dp_export.htm#i1007114 本文内容 Data Pump 提供不同的导出模 ...

最新文章

  1. CSS 布局:40个教程、技巧、例子和最佳实践
  2. 自研Spring容器,带你解析ioc内部原理
  3. 世界领先!详解蚂蚁金服自研数据库OceanBase的高可用及容灾方案
  4. 基于超声波升压中周构建的150kHz的单管选频放大电路
  5. 科研人员请注意!腾讯要为你们专项开放数据、计算资源、实验环境
  6. [云炬创业基础笔记]第十章企业的利润计划测试7
  7. 一文带你快速读懂.NET CLI
  8. 【案例分析】分布式系统的接口幂等性设计!
  9. window.parent和window.opener区别
  10. Codeforces Round #676 (Div. 2) E待补
  11. Linux系统下解压缩安装MongoDB
  12. 144显示器只有60_你知道显示器60Hz和144Hz的刷新率差别有多大吗?你没有用过吗?...
  13. android 访问服务器sql_一次服务器被传webshell事件溯源
  14. Flex App的Size和Link报告
  15. java 计算器 junit测试_测试工具之JUnit4 结合Mockito模拟测试代码
  16. Linux下制作Windows系统盘,制作linux系统盘
  17. 【集合论】集合概念与关系 ( 真子集 | 空集 | 全集 | 幂集 | 集合元素个数 | 求幂集步骤 )
  18. 跨网页的新手引导_用户体验之如何设计一个完美的新手引导流程?(附带案例)...
  19. 使用Poedit汉化wordpress主题和插件
  20. 关于“外接硬盘被写了保护的解决方法”

热门文章

  1. NLP——Tokenizer
  2. 文本语言模型的参数估计-最大似然估计、MAP及贝叶斯估计
  3. 欧拉定理 证明及推论
  4. 11【MyBatis的缓存机制】
  5. 光猫拨号有公网ipv6但是路由器没有下发ipv6的功能怎么办
  6. 9. coo---prolaris
  7. 前端正确处理“文字溢出”的思路
  8. OpenCL错误码和说明
  9. oracle check更改,Oracle With Check Option
  10. iOS Delegate