Bootstrap

计算机网络——数据链路层

文章目录

一、数据链路层的地位

在这里插入图片描述
如图,主机H1给主机H2发送数据,中间要经过3个路由器和电话网、局域网以及广域网等多种网络。

以五层协议的角度来看,主机应具有体系结构中的各个层次,而路由器只需具有体系结构中的下面三层,各设备通过物理层下面的传输媒体进行互连。当主机H1向H2发送数据时,数据的流动如下图所示。
在这里插入图片描述

假设数据包只在数据链路层从左向右沿水平方向传送。从数据链路层来看,主机H1到H2的通信可以看成是4段不同的链路上的通信组成的,如下图所示。
在这里插入图片描述

二、数据链路和帧

2.1什么是链路?什么是数据链路?

2.1.1链路

一条不远的点到点的物理线路段,中间没有任何其他的交换结点。
一条链路只是一条通路的一个组成部分。
或物理链路

2.1.2数据链路

把实现控制数据传输的协议的硬件和软件加到链路上,就构成了数据链路
或逻辑链路
典型实现:适配器(即网卡)

2.2数据链路层协议数据单元:帧

数据链路层把网络层交下来的数据构成帧发送到链路上以及把接收到的帧中的数据取出并上交到网络层在互联网中,网络层协议数据单元就是IP数据报(或简称为数据包、分组、包)

三、数据链路层的三个基本问题

3.1封装成帧

在一段数据的前后分别添加首部和尾部,构成一个帧。(一个帧的帧长等于帧的数据部分长度加上帧首部和帧尾部的长度)

首部和尾部的一个重要作用就是进行帧定界(即确定帧的界限)
添加帧头和帧尾的目的都是为了在链路上以帧为单元来传送数据,也就是为了实现数据链路层本身的功能。
在发送帧时,是从帧首部开始发送的。各种数据链路层协议都对帧首部和尾部有明显的规定。

虽然为了提高帧的传输效率应当使帧的数据部分长度尽可能大于首部和尾部的长度,但是每一种数据链路层协议都规定了所能传送的帧的数据部分长度上限,即最大传送单元MTU

帧定字符: 用控制字符作为帧定字符
控制字符SOH:放在一帧的最前面,表示帧的首部开始
控制字符EOT:放在一帧的末尾,表示帧的结束
作用:当数据在传输过程中出现差错时,帧定界符的作用更加明显。
假定发送端在尚未发送完一个帧时突然出现故障,中断了发送。但随后很快又恢复正常,于是重新从头开始发送刚才未发送完的帧。由于使用了帧定界符,接收端就知道前面收到的数据是个不完整的帧(只有首部开始符SOH而没有传输结束符EOT),必须丢弃。而后面收到的数据有明确的帧定界符(SOH和EOT),因此这是一个完整的帧,应当收下

3.2透明传输

3.2.1透明传输的条件

由于帧的开始和结束的标记使用专门指明的控制字符,因此所传输的数据中的任何8比特的组合一定不允许和用作帧定界的控制字符的比特编码一样,否则就会出现帧定界的错误。

3.2.2透明传输的定义

当传送的帧是用文本文件组成的帧时(文本文件中的字符都是从键盘上输入的),其数据部分显然不会出现像SOH或EOT这样的帧定界控制字符。可见不管从键盘上输入什么字符都可以放在这样的帧中传输过去,因此这样的传输就是透明传输。

因为文本文件里的字符都在ASCII码范围内,而SOH、EOT的十六进制编码分别是01和04,也就是说不在ASCII码的范围内。简单来说就是SOH(或EOT)并不是S、O、H这三个字符

但当数据部分是非ASCII码的文本文件时(如二进制代码的计算机程序或图像等),情况就不同了。如果数据中的某个字节的二进制代码恰好和SOH或E0T这种控制字符一样(见图3-6),数据链路层就会错误地“找到帧的边界”,把部分帧收下(误认为是个完整的帧),而把剩下的那部分数据丢弃(这部分找不到帧定界控制字符SOH)。
如下图所示:
在这里插入图片描述
这显然不是透明传输
因为当遇到数据中碰巧出现字符“EOT”时就传过去了。数据中的“EOT”将被接收端错误地解释为“传输结束”的控制字符,而在其后面的数据因找不到“SOH”被接收端当作无效帧而丢弃。但实际上在数据中出现的字符“E0T”并非控制字符而仅仅是二进制数据00000100。

”在数据链路层透明传送数据“表示:无论发送什么样的比特组合的数据,这些数据都能够按原样没有差错地通过这个数据链路层。

3.2.3解决透明传输的问题

解决透明传输问题也就是设法使数据中可能出现的控制字符”SOH“和”EOT“在接收端不被解释为控制字符

用”字节填充“或”字符填充“法来解决透明传输问题:发送端的数据链路层在数据中出现控制字符的前面插入一个转义字符”ESC“(十六进制为1B)。而在接收端的数据链路层在把数据送往网络层之前删除这个插入的转义字符

3.3差错检测

3.3.1比特差错

发送方将封装好的帧通过物理层发送到传输媒体,帧在传输过程中遭遇干扰后可能会出现误码,也就是比特0可能变成了比特1,反之亦然。

误码率BER

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

3.3.2接收方如何判断帧在传输过程中是否出现了误码?
循环冗余检验CRC原理

原理:在发送端,先把数据划分为组。假定每组k个比特
CRC运算:在每组M后面在添加供差错检测用的n位冗余码,然后构成一个帧发送出去,一共发送(k+n)位。

CRC冗余码的计算:
1.先把数据划分为组,假定每组k个比特,带传送数据为M。
2.用二进制的模2运算进行2的n次方成M的运算,这相当于在M后面添加n个0
3.得到(k+n)位的数除以事 先选定好的长度为(n+1)位的除数P,得出商是Q,余数是R。余数R比除数P少1位,即R是n位。
4.将余数R作为冗余码拼接在数据M后面,一起发送出去(这种为了进行检错而添加的冗余码常称为帧检验序列FCS
例子:
令M=101001(k=6),假定除数p=1101(即n=3)
在这里插入图片描述

若得出的余数R=0,则判定这个帧没有差错,就接受
若余数不等于0,则判定这个帧有差错(但无法确定究竟是哪一位或哪几位出现了差错),就丢弃。

模2运算

模2运算是一种二进制算法,CRC校验技术中的核心部分。
本质是异或运算,且不考虑进位和借位。
(1)模2加法
0+0=0   0+1=1  1+0=1   1+1=0

(2)模2减法
0-0=0   0-1=1   1-0=1   1-1=0

(3)模2乘法
0×0=0   0×1=0   1×0=0   1×1=1

多位二进制模2乘法类似于普通意义上的多位二进制乘法
不同之处在于后者累加中间结果(或称部分积)时采用带进位的加法
模2乘法对中间结果的处理方式采用的是模2加法

(4)模2除法
被除数位数足够,即位数 ≥ 除数位数,则商对应写1,不够则商对应写0(也就是部分余数首位为0时,商上0;否则反之)。
得到的余数始终比除数位数少1。

帧检验序列FCS

循环冗余检验CRC和帧检验序列FCS并不等同

1.CRC是一种常用的检错方法,而FCS是添加在数据后面的冗余码。
2.FCS可以用CRC这种方法得出,但CRC并非用来获得FCS的唯一方法

3.3.3注意

1.仅用循环冗余检验CRC差错检测技术只能做到无差错接受,即凡是接受的帧(即不包括丢弃的帧),我们都能以非常接近于1的概率认为这些帧在传输过程中没有产生差错。
2.无比特差错与无传输差错是不同的

可靠传输是数据链路层的发送端发送什么,在接收端就收到什么
传输差错可分为两大类:比特差错和传输差错(帧丢失、帧重复、帧失序等)
在数据链路层使用CRC检验,能够实现无比特差错,但这还不是可靠传输
要做到可靠传输,还必须再加上帧编号、确认和重传等机制

四、点对点协议PPP(数据链路层协议)

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

4.1PPP协议的特点

4.1.1应满足的需求

IETF认为,在设计PPP协议时必须考虑以下多方面的需求

  1. 简单
  2. 封装成帧:必须规定特殊的字符作为帧定界符
  3. 透明性:必须保证数据传输的透明性
  4. 多种网络层协议:能够在同一条物理链路上同时支持多种网络层协议
  5. 多种类型链路:能够在多种类型的链路上运行
  6. 差错检测:能够对接收端接收到的帧进行检测,并立即丢弃有差错的帧
  7. 检测连接状态:能够及时自动检测出链路是否处于正常工作状态
  8. 最大传送单元:必须对每一种类型的点对点链路设置最大传送单元MTU的标准默认值,促进各种实现之间的互操作性
  9. 网络层地址协商:必须提供一种机制使通信的两个网络层层实体能够通过协商知道或能配置彼此的网络层地址
  10. 数据压缩协商:必须提供一种方法来协商使用数据压缩算法
4.1.2PPP协议的组成

三个组成部分:
1.一个将IP数据包封装到串行链路的方法
2.一个链路控制协议LCP
3.一套网络控制协议NCP

4.2PPP协议的帧格式

在这里插入图片描述

4.2.1各字段的意义

各字段的意义:
首部(4个字段):
1.标志字段F:0x7E.连续两帧之间只需要用一个标志字段
2.地址字段A:只置为0xFF。实际上不起作用
3.控制字段C:通常为0x03
4.协议字段
局部(两个字段)

4.2.2透明传输的问题

当PPP用在异步传输时,使用字节填充 :将转义字符定义为0x7D
当PPP用在同步传输链路时,采用零比特填充法:只要发现有5个连续1,则立即填入一个0,这样就可以保证不会出现6个连续的1

异步传输

什么是异步传输?
异步传输是一种面向字符的传输,一般以字符为一个单位传输,而非一坨坨地传
简单地来说就是发送方和接收方无需进行同步,你搞你的他搞他的,不是实时同步,而是分组同步,如QQ离线发送文件。又比如计算机键盘与主机的通信。按下一个字母键、数字键或特殊字符键,就发送一个8比特位的ASCII代码。键盘可以在任何时刻发送代码,这取决于用户的输入速度,内部的硬件必须能够在任何时刻接收一个键入的字符。

异步传输的潜在问题:即接收方并不知道数据会在什么时候到达。在它检测到数据并做出响应之前,第一个比特已经过去了。
这就像有人出乎意料地从后面走上来跟你说话,而你没来得及反应过来,漏掉了最前面的几个词。
因此,每次异步传输的信息都以一个起始位开头,它通知接收方数据已经到达了,这就给了接收方响应、接收和缓存数据比特的时间;在传输结束时,一个停止位表示该次传输信息的终止
起始位:先发出一个逻辑”0”信号,表示传输字符的开始。
空闲位:处于逻辑“1”状态,表示当前线路上没有资料传送。

异步传输的缺点:
由于每个信息都加上了“同步”信息,因此计时的漂移不会产生大的积累,但却产生了较多的开销。对于数据传输量很小的低速设备来说问题不大,但对于那些数据传输量很大的高速设备来说,负载增值就相当严重了。因此,异步传输常用于低速设备。

同步传输

同步传输:
同步传输是面向比特的传输
同步传输的比特分组要大得多。它不是独立地发送每个字符,每个字符都有自己的开始位和停止位,而是把它们组合起来一起发送。我们将这些组合称为数据帧,或简称为帧。
数据帧的第一部分包含一组同步字符,它是一个独特的比特组合,类似于前面提到的起始位,用于通知接收方一个帧已经到达,但它同时还能确保接收方的采样速度和比特的到达速度保持一致,使收发双方进入同步。帧的最后一部分是一个帧结束标记。与同步字符一样,它也是一个独特的比特串,类似于前面提到的停止位,用于表示在下一帧开始之前没有别的即将到达的数据了

同步传输的优点:
同步传输通常要比异步传输快速得多。接收方不必对每个字符进行开始和停止的操作。一旦检测到帧同步字符,它就在接下来的数据到达时接收它们。

同步传输的缺点:
数据比特位越长,缓存数据所需要的缓冲区也越大,这就限制了一个帧的大小。
帧越大,它占据传输媒体的连续时间也越长。在极端的情况下,这将导致其他用户等得太久。

总结:
异步传输: 你传输吧,我去做我的事了,传输完了告诉我一声  同步传输: 你现在传输,我要亲眼看你传输完成,才去做别的事

4.3PPP协议的工作状态(即链路初始化过程)

1.用户拨号接入ISP(网络业务提供商)后,就建立了一条从用户个人电脑到ISP的物理连接。
2.用户个人电脑向ISP发送一系列的链路控制协议LCP分组(封装成多个PPP帧),以便建立LCP连接

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;