数据链路层在物理层提供的服务的基础上向网络层提供服务。


数据链路层_数据链路层



1. 使用点对点的信道的数据链路层:

数据链路层的地位:

数据链路层_数据_02

数据链路层信道类型:

  • 点对点

数据链路层_数据链路层_03

  • 广播信道
  • 一对多
  • 必须使用专用的共享信道协议来协调这些主机的数据发送

数据链路层_链路_04

1.1. 数据链路和帧:

1.1.1. 链路

链路(link)----物理链路

  • 一条点到点的物理路段,中间无任何交换点
  • 一条链路只是一条通路的组成部分

数据链路(date link)----逻辑链路

  • 协议+链路
  • 实例:适配器(网卡)

1.1.2. 帧--数据链路层协议数据单元:

数据链路层_数据_05

数据链路层_数据链路层_06



1.2. 该层的三个基本问题:

1.2.1. 封装成帧:

是什么?

在一段数据前后分别加上首部和尾部,构成一个帧。


首部和尾部的作用是什么?

一个重要作用是帧定界

数据链路层_链路_07

网络层的 IP 数据报传下来后,数据部分(<=MTU)加上首部和尾部,构成一个帧。

注意:帧包括首部和尾部


MTU 最大传送单元(Maximum Transfer Unit):规定了所能传送的帧的数据部分长度上限。(不是帧的总长)


首部和尾部用什么来表示?

控制字符作为帧定界符

  • 控制字符SOH(Start Of Header)放在一帧的最前面,表示帧的首部开始。
  • 控制字符EOT(End Of Transmission)放在一顿的末尾,表示顿的结束。

数据链路层_数据链路层_08


1.2.2. 透明传输

透明传输的背景:

封装成帧的过程中有可能会出现一个问题:即如果数据部分中含有与 SOH 和 EOT 一样的数据,数据链路层就会错误地“找到帧的边界”,导致帧无法被完整接收。

数据链路层_链路_09

所以要解决的关键问题:如何标识一个帧的开始?

接收方必须能从物理层接收的比特流中明确区分出一帧的开始和结束,这个问题被称为帧同步或帧定界




这时就需要透明传输来解决:

  • 透明传输的含义:无论发送什么样的比特组合的数据

据,这些数据都能够按照原样没有差错地通过这个数据链路层。


  • 如何来实现透明传输:
  • 字节(字符)填充法:插入转义字符 ESC 而在接受端的数据链路层在把数据送往网络层之前删除这些插入的控制字符。

数据链路层_数据链路层_10


1.2.3. 差错检测

为什么要有差错检测?

  • 数据在传输过程中可能会出现比特差错:1->0 0->1

在一段时间内,传输错误的比特占所传输比特总数的比率称为

误码率BER(Bit Error Rate)。


如何差错检测?

循环冗余校验 CRC (一种检错方法,不纠错)

  • 原理:

数据链路层_链路_11

  • 计算:

数据链路层_数据_12

数据链路层_链路_13

在数据后面添加上的亢余码称为帧检验序列FCS(Frame Check

Sequence)。

注意点:循环亢余检验CRC和顿检验序列FCS并不等同。

1.CRC是一种常用的检错方法,而FCS是添加在数据后面的亢余码。

2.FCS可以用CRC这种方法得出,但CRC并非用来获得FCS的唯一

方法。


CRC 练习

https://so.csdn.net/so/search?spm=1000.2115.3001.4501&q=crc%E6%A0%A1%E9%AA%8C%E7%A0%81%E7%BB%83%E4%B9%A0&t=&u=

抽取一道例题:

题:

原始报文为:11001010101,其 CRC 生成多项式为 x^4+x^3+x+1进行 CRC 编码。

CRC 生成多项式可转为二进制 1 1 0 1 1 ---作除数

所以在原始报文后加上 4 个 0 -----作被除数

数据链路层_链路_14

检验:

数据链路层_数据链路层_15

余数为 0,所以传输的数据无误。

若数据在传输过程中出错, 即被除数会改变,这时余数一定不是 0,表示数据在传输过程中发生了出错


注意点:

无差错接受:凡是接收端数据链路层接收的帧,我们都能以非常接近于1的概率认为这些帧在传输过程中没有产生差错。

可靠传输:数据链路层的发送端发送什么,在接受端就收到什么。

比特差错:比特在传输过程中可能会产生差错,1可能会变成0,0也可能会变成1。

帧丢失:收到[#1]-[#3](丢失[#2])

帧重复:收到[#1]-[#2]-[#2]-[#3](收到两个[#2])

帧失序:收到[#1]-[#3]-[#2](后传输的帧反而先到达)


2. 点对点协议 PPP:

2.1. PPP 协议的特点:

对于点对点的链路,目前使用得最广泛的数据链路层协议是点对点协议

PPP(Point-to-Point Protocol)。


PPP协议通常用于拨号网络和广域网中的点对点连接

数据链路层_数据_16

数据链路层_数据链路层_17


特点(还需补充):

  • 封装成帧
  • 透明传输
  • 差错检测--有错丢弃
  • 支持多种网络协议-(一条链路上)
  • 支持多种类型链路
  • 检测链路连接状态
  • 具有最大传输单元 MTU-1500byte

PPP协议的组成(还需补充) :

  • 链路控制协议 LCP
  • 网络控制协议 NCP
  • 地址解析协议 ARP(发挥封装成帧的作用):ARP协议用于查找和解析IP地址和MAC地址,它可以将IP地址转换为MAC地址,以及将MAC地址转换为IP地址。



2.2. PPP 协议的帧格式:

我们通常所说的PPP协议的帧,是指使用PPP协议的链路上传输的帧。

数据链路层_数据链路层_18

解读:

  • 首部和尾部分别为 四个字段两个字段
  • 帧的首尾字段都是 F 字段(标志字段,表示一个帧的开始和结尾,即帧定界符
  • 连续两帧只使用一个标志字段。(若连续出现两个标志字段,就可以知道这是个空帧,应丢弃)
  • 地址字段 A:不起作用
  • 控制字段 C:置为 0x 03


2.2.1. PPP 帧 如何实现透明传输

  • 当PPP用在异步传输时,使用字节填充法。
  • 当PPP用在同步传输链路时,采用零比特填充法。
  1. 字节填充:
  • 当信息字段中出现 0x7E 时,将其变成 (0x7D,0x5E) ,如图:
  • 当信息字段中出现 0x7D,将其变成(0x7D,0x5D)

数据链路层_数据链路层_19

  • 若信息字段中出现ASCII的控制字符(即数值小于0x20的字符),则在该字符前面要加入一个0x7D字节,同时将该字符的编码加以改变。例如,出现0x03(在控制字符中是“传输结束”ETX)就要把它转变为2字节序列(0x7D,0x23)。---前插 7D2
  1. 零比特填充:
  • 为什么要零比特填充?

数据链路层_数据链路层_20

  • 如何填充?

在连续五个 1 后填入一个 0。

数据链路层_数据链路层_21

接收端会把连续五个 1 之后的 0 删除

数据链路层_数据_22


2.3. PPP 协议的工作状态:

关系:

物理层--路基

LCP--沙石

NCP--柏油路面

数据链路层_数据链路层_23

3. 适用广播信道的的数据链路层

数据链路层_数据_24

广播信道(Broadcast Channel) 是指在无线通信网络中,所有接收端都可以接收到的信息信道。广播信道的特点是发送端发送的信息可以被网络中的所有接收端接收到,但是接收端不能确定信息的发送者。广播信道在无线通信网络中具有广泛的应用,例如在电视广播、无线电广播、卫星通信等网络中,都使用了广播信道。广播信道可以方便地实现信息的广播和传输,也可以方便地实现信息的共享和分发。广播信道是一种非常常见的无线通信信道,它可以用来描述无线通信网络中的信息传输和接收过程。广播信道可以方便地实现无线通信网络的设计和优化,也可以方便地实现无线通信网络的管理和维护。

3.1. 局域网的数据链路层:

3.1.1. 局域网(Local Area Network)

特点:

数据链路层_数据_25

优点:

数据链路层_链路_26


3.1.2. 局域网拓扑结构

数据链路层_数据链路层_27

问题:在局域网上使用一对多的广播通信方式(即共享信道的方式)存在这样的问题,若多个设备在共享的广播信道上同时发送数据,则会造成彼此干扰,导致发送失败。因此,为了避免发生冲突,就需要媒体介入技术

3.1.3. 媒体共享技术

为什么要有媒体共享技术?

共享信道要着重考虑的问题就是如何使众多用户协调使用信道,不让冲突发生。

  1. 静态划分信道:


数据链路层_链路_28

  1. 动态媒体接入控制(多点接入):

数据链路层_数据链路层_29

由于静态划分信道的成本太高,因此不适合局域网,目前使用较多的技术主要是随机接入。


3.1.4. 第一个局域网的实例---以太网

  1. DIX Ethernet V2:世界上第一个局域网产品(以太网)的规约。
  2. IEEE802.3:第一个IEEE的以太网标准。


其中 IEEE802.3 将局域网的数据链路层划分成了两个子层:

逻辑链路控制和媒体接入控制

数据链路层_数据链路层_30


3.1.5. 适配器(网卡):

数据链路层_数据链路层_31

功能:

  • 进行串 、并行转换
  • 数据缓存
  • 在计算机的操作系统安装设备驱动程序。
  • 实现以太网协议

之前说到动态接入控制中的受控接入已经淘汰,我们直接学习随机接入

3.2. CSMA/CD 协议

为什么要有 CSMA/CD 协议?

还是前面的共享信道的问题:为了使众多用户协调使用信道,不让冲突发生。

概念:

CS( Carrier Sense )--载波监听

MA( Multiple Access)--多点接入

CD(collision detection)--碰撞检测