韩立刚计算机网络——第三章:数据链路层

Posted 想文艺一点的程序员

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了韩立刚计算机网络——第三章:数据链路层相关的知识,希望对你有一定的参考价值。

数据链路层的关键点:网卡 + 物理线路 + 协议
(ppp 协议就是其中一种协议)

1、基本概念

(1)数据发送模型

应用层和应用层的通讯
在这里插入图片描述
流程:主机1 和 主机2 之间的网络通讯:主机1网卡 ——> 电话网 ——> 路由器 ——> 主机2网卡

H1:
运输层:对数据进行封装 ,分段
传输层:给数据 加上目标网络地址
链路层:给数据 加上MAC地址,封装成帧。

R1:
链路层:根据传输的 MAC 地址,判断数据包是不是自己的
网络层:根据 IP 地址,选择最优路径,再给数据 加上目标网络地址,发给下一个路由器。

总体流程:H1 ——> R1 ——> R2 ——> R3 ——> H2

  • 点对点通信和广播信道

点对点:两个笔记本使用一个网线直连。
广播:中间有一个集线器接了很多设备,就成广播信号了。

在这里插入图片描述

我们这一章,只关心数据链路层怎么传输。

底层是什么介质(光纤、同轴电缆、电话线)我们不用管。
底层是什么复用(时分、频分、码分)我们也不用管。
在这里插入图片描述

数据链路层具体是指哪一部分呢?
在这里插入图片描述


(2)链路和数据链路?

链路:是一个物理线路,比如一根网线

但是只有一个物理线路,它还不能通讯,还缺一个控制它的 通信协议,谁来提供呢?
答案:网卡(网卡上面是有数据链路层的协议的,负责来控制数据传输)
在这里插入图片描述


(3)帧

什么是帧:数据链路层传输的数据单位
在这里插入图片描述
数据链路层:像是一个数字管道,而在数字管道上传输的数据单位是帧


2、三个基本问题

封装成帧
透明传输
差错控制


(1)封装成帧

在这里插入图片描述
计算机接受过程中:

  • 只有既收到帧首部,又收到帧尾部的时候,才会接受这个帧,只收到其中一个,是不会接受的。

  • 以太网上传输,最大帧长度为 1500 个字节。

为什么要添加帧头和帧尾?

  • 为了保持数据的完整性, 如果只有帧头的话,我们数据丢了一半对方也不知道

(2)透明传输

  • 透明传输其实就是指无论是什么报文都可以传输,非透明传输就是指某些特殊字符不能传输。
  • 在计算机网络中,透明传输在数据链路层提到过,在数据链路层将网络层协议封装成帧时,会在首部和尾部分别添加 SOH 以及 EOT 这两个特殊字符。
  • 接收方是根据这两个字符来确定帧首和帧尾的,如果上层协议发送过来的数据(即链路层的数据部分)包含EOT,那么接收方在解析这个帧的时候就会误以为数据已经结束
  • 所以,如果链路层对这种情况没有特殊处理,那么就可以理解链路层为非透明传输(因为无法传输EOT这个字符)。
  • 但是数据链路层通过对这个字符添加转移符(如果网络层数据中还存在转移符,就再添加一个转移符)的办法来使数据部分可以传输EOT字符,就实现了透明传输。

在这里插入图片描述
再论什么是透明传输?

  • 在传输的时候,为数据添加了转义字符。
  • 接收之后再将转移子符去掉。
  • 注意!!!:这三个问题都是在数据链路层解决,由网卡进行解决。
  • 所以对于发送者和接收者来说,不知道底层加了这一层保险。

(3)差错控制

在这里插入图片描述
传输过程中:可能产生差错,由环境因素,可能 0 变为1, 1 变为 0。

问题:我们要怎么发现,我们是否在物理线路上发生了差错

解决:CRC 循环冗余检验

在这里插入图片描述
关键:在二进制里面,如何实现冗余检验?


数据规则:

  • 模 2 运算:不进位,不退位(1 + 1 = 0,不等于 10 )

  • 一个数 对 一个 n+1 位的数进行模2 运算的出发,所得的余数是 n位。(比除数少一位)


分析冗余计算的流程:

  • 原始数据:110101

  • 自己设定一个除数,有 k 个 bit 位,位数和我们的原始数据长度有关。(我们设定 k = 4)

  • 先固定冗余码全为 0 ,位数为 k-1 位,然后将其添加到原始数据后面。 (我们设定 k-1 = 3)

  • 第一次 原始 bit 数据 + 冗余码 / 除数除不尽会产生余数。 (这个余数叫做 FCS 帧检验序列)

  • 所以我们将余数加回去,余数 + 原始 bit 数据 + 冗余码 / 除数 。 这样就可以除尽了。

余数 + 原始 bit 数据 + 冗余码 = 原始 bit 数据 + 余数
因为原来的冗余码是 000 ,加任何的三位数,都会变为这三位数 。
000 + 001 = 001

  • 如果此时我们除不尽,则说明我们 原始bit 数据已经发生了变化。

计算举例:

在这里插入图片描述
在这里插入图片描述
所以发送端此时要发送的数据为: 原始数据+余数

接受到拿到数据之后:进行 原始数据+余数 / 除数 。去判断是否有余数,即是否为 0 ,或者不为 0。

如果结果不为 0 ,我们则丢弃这一段数据, 让发送方重新发送一次。


总结:CRC 校验的特点:

  • CRC 只管判断是否出错,并不操心到底是哪里出错了,发现出错之后直接丢弃

  • 直接丢弃不就丢包了吗? 丢不丢包,数据链路层不管
    在这里插入图片描述

注意:CRC 校验并不是 百分之百 可靠,如果差错正好是除数的倍数,我们就没有办法发现。


3、点到点通信(ppp协议)

数据链路层的关键点:网卡 + 物理线路 + 协议
(ppp 协议就是其中一种协议)

是一种数据链路层的协议,ppp协议(point to point protocol)。
应用于拨号上网。
如果我们直接插网线,不适用拨号,就不是使用ppp 协议。
在这里插入图片描述

举例:
通过电话线上网: 电脑通过电话线,直接连到运营商。(用户点到点运营商)
ppp 协议实现的功能:

  • 给我们主机分配一个 IP 地址。
  • 记账功能:如果我们欠费,就不让我们继续使用网络
  • 记录使用时间:我们通过拨号上网,发帖的时间,发帖的 IP 地址,运营商就可以知道。

(比如有人使用网络发帖,运营商那边就可以知道该数据包的IP地址,发送时间)

在这里插入图片描述
数据链路层的关键点:网卡 + 物理线路 + 协议 (ppp协议 就是其中一种)

既然是数据链路层的协议,那么就一定要解决数据链路层的三个基本问题

  • 多种类型链路:可以使用在光纤、同轴电缆、电话线等。
  • 检测连接状态:拨号上网的时候,欠费、密码错误、网线没插好、弹出的框都不一样
  • 最大传输单元:不大于 1500 个单元。
  • 数据压缩协商:节省数据带宽。(比如有 连续 00000000000,我就可以进行压缩)

在数据链路层 ppp 协议,又分成了 3 层。

(1) 提供一个将IP数据报封装到串行链路的方法。IP数据报在PPP帧中就是信息部分,长度受最大传送单元MTU的限制。PPP支持异步链路(无奇偶校验的8比特数据)和面向比特的同步链路。

(2) 链路控制协议LCP(Link Control Protocol),当线路不再需要时,挑出这些线路,测试它们,商议选择,并仔细地再次释放链路控制协议。

(3) 一套网络控制协议NCP(Network Control Protocol),其中每一个协议支持不同的网络层协议,如IP、OSI的网络层等。

(4) 认证协议


(1)ppp 协议的帧格式

在这里插入图片描述

字段长度说明
F:flag1字节标志一个帧的开始或结束,固定为0x7E
A:address1字节地址字段A是固定不变的,固定为0xFF。(因为点到点,地址已经固定)
C:1字节控制字段C是固定不变的,固定为0x03
协议2字节协议字段不同,后面信息部分表示的数据类型不同。
协议
0x0021IP数据报
0xC021链路控制数据LCP
0x8021网络控制数据NCP
0xC023安全性认证PAP
0xC025LQR
0xC223安全性认证CHAP

问题:信息段(有效数据) 中出现了标志段的值,被误以为是标志段怎么办?

第一种办法:字节填充法

  • 当信息字段中出现 0x7E 时,将每一个0x7E字节转变成2字节序列0x7D,0x5E)。

  • 若信息字段中出现一个 0x7D 的字节,则将其转变成2字节序列(0x7D,0x5D)。

  • 若信息字段中出现ASCII码的控制字符(即数值小于0X20的字符),则该字符前面需要加入一个0x7D字节,同时将该字符的编码加以改变(+20)。
    例如:出现0x03,就要把它转为2字节序列(0x7D,0x23)

第二种办法:0比特填充法

适用于传输数据是比特流(图像的位图数据),此时传输数据就不是有效字符了。

  • PPP协议用在SONET/SDH链路时,使用同步传输(一连串的比特连续传送),此时使用0比特填充法。

  • 在发送端扫描整个信息字段,当有5个1连续出现时,立即填入一个0保证信息字段中不会出现6个连续1。 (7E:0111 1110 当中有连续的 6个 1)

  • 在接收端删除连续5个1后面的0

在这里插入图片描述

(2)ppp 协议的工作状态

在这里插入图片描述

  • 演示路由器怎么配置 ppp 协议
    不要求掌握。

4、广播通信

  • 局域网的拓扑

在这里插入图片描述

  • 认识以太网

以太网是局域网的一种, 最初的以太网是将许多计算机都连接到一根总线上,这种连接方法简单又可靠。
在这里插入图片描述

优点:不用划分信道,谁也可以进行通信。

缺点:在这一根链路上,只能有两个电脑在通信。还有容易被其他电脑进行抓包,所以不可靠。


(1)以太网使用 CSMA/CD 协议

CSMA/CD 即 载波侦听 多点接入/冲突检测 (Carrier Sense Multiple Access with Collision Detectio)

  • 多点接入:许多计算机以多点接入的方式,连接在一根总线上面。

  • 载波侦听:发送端在发送数据前对总线进行监听,若监听到其他计算机在发送数据,则等待一段随机时间后,确认总线空闲时才开始发送数据

提问:如果总线总的带宽是 10M ,该总线上面有10台计算机,那么平均每台计算机的带宽是多少?

10 M / 10 = 1M ; 最理想的情况之下,平均每台的带宽是 1M 。
如果发送数据时候,产生碰撞,就会有空闲时间产生,白白浪费带宽。

举例:如果以太网分布很广,网线之间有 1000 米,电信号在网线上传输的时间就会被拉长。

A先给B 发数据,在快到 B 的时候,此时 B 同时给 A 发数据。 在传输线上发送碰撞。
在这里插入图片描述
所以以太网一般不超过 100 米,也是有道理的。


CSMA/ CD 的特点:
不能不进行全双工通信,只能进行半双工通信。(一个时刻,只能有一个方向传输)


(2)争用期、最短有效帧长

争用期

  • 发送端,在发送数据帧之后,最多经过时间 2t (两倍的传播延时时间)就可以知道到底有没有受到碰撞。(2t 称之为 争用期)
  • 在争用期这段时间之内,如果没有发现碰撞,才能肯定这次发送不会发送碰撞。
  • 对于 10Mb/s 的以太网,在争用期内可发送 512 bit,即 64 字节
  • 总结:如果在 64 字节之内没有发生冲突,本次传输就不会发生冲突

最短有效帧

  • 如果发生冲突,就一定在 64 字节之内。
  • 由于一检测到冲突就立即中止发送,这时候发送的数据一定小于 64 字节。
  • 所以以太网会将小于 64 字节的帧,认为时无效帧,从而将他丢掉。

5、以太局域网(以太网)

(1)概述

在这里插入图片描述
在这里插入图片描述
注意:现在很多厂商生成的适配器上,仅装有 MAC 协议,而没有 LLC 协议。


(2)集线器的星型拓扑

之前使用的是总线型:但是有 容易被抓包、速度低的缺点。

  • 星型拓扑
    在这里插入图片描述
    集线器的内部结构:
    网卡:有两个接口:一个是发送、一个接收。
    仍然像传统以太网:所有的机器都能接收,容易被窃取。
    工作在物理层:集线器像网线一样,没有任何智商,看不懂传输的协议,不管什么地址。
    在这里插入图片描述

(3)信道利用率

在这里插入图片描述
以太网发送一帧数据所需要的时间:
在这里插入图片描述

信道利用率,参数 a (a越小,利用率就越高)
在这里插入图片描述
分析:发送速率,因为是电磁波传输,所以速率已经定死了。想要降低 a 有两种办法:

  • 减短物理线的长度
  • 增加一帧数据的长度

在这里插入图片描述
这种情况是不可能出现的,在传输过程中肯定有冲突


(4)MAC 层

当网卡一出厂的时候,在芯片上面就已经烧写了一个全球唯一的 MAC 地址

疑问:网卡厂商那么多,怎么知道这个 MAC 地址有没有被使用呢

  • MAC 地址一共有 48 位 bit 位。 前24位代表不同的厂家,后24位由厂家自己指定。
  • 如果我们想要生成网卡,先让 IEEE(注册管理机构)给分配一个 24 的号,我们才能自己生成。

适配器检查 MAC 地址
适配器就使网卡,网卡收到 MAC 地址之后,就会和自己进行匹配。
在这里插入图片描述


MAC 地址冲突造成的网络故障:

有一台笔记本电脑,在 A 教室上网不同,在其他地方上网都可以通。怎么回事呢?

问题排查:
(1)是不是网线的事情?

不是,因为换别人可以上网的网线,也不能使用。

(2)既然不是网线的故障,那肯定就是笔记本的问题了。 但是笔记在其他地方可以正常上网。

MAC 地址发生了冲突, 疑问不是说每个网卡的MAC 地址都是唯一的吗?怎么还会冲突呢?
1、首先肯定在芯片上面的 MAC 肯定是不能修改的。
2、我们只是让计算不使用网卡的地址,而是使用我们人工指定的 MAC 地址

怎么修改 MAC 地址? 参考博客


MAC 帧格式
在这里插入图片描述

名称作用
前导码每个字节的比特模式为“10101010”。作用:实现收发双方的时钟同步
帧起始定界符字段SFD比特模式为“10101011”。作用:指示一帧的开始
目的地址字段DA标识接收站点的地址。它可以是单个的地址,也可以是组地址或广播地址
源地址字段SA标识发送站点的地址。但它的长度必须与目的地址字段长度相同。
类型/长度字段LEN标识数据字段的字节数长度。 (协议类型)
数据字段为了使协议正常操作,帧长度不能太短,对于10Mbps的CSMA/CD网中,帧的最小长度为64.

6、扩展以太网

1、如何让以太网变得远一点(通过光纤)(光猫:光电转换)
在这里插入图片描述
2、三个小的冲突域,变成了一个大的冲突域。

  • 怎么理解冲突域:在这个冲突域当中,如果有两台计算机在通讯,其他都不能通信

  • 合成大的冲突域:使通信的效率变低了,意味着冲突更多了。

  • 使用集线器来扩展,一个冲突域的计算机,不宜超过 30台
    在这里插入图片描述

(1)网桥

在数据链路层进行扩展 ,集线器属于在物理层进行扩展。(因为集线器和网线一样,没有任何识别功能)

在这里插入图片描述

网桥是一个智能的设备

  • 一开始网桥内部并没有各个机器的 MAC 地址,但是网桥在通信过程中会进行自动学习,记录各个主机的 MAC 地址。

  • 所以一开始,网桥可能会进行广播,对所有机器进行发送。(这是记录的过程)

  • 当网桥里面记录了所有主机的 MAC 地址之后,就可以对相应的冲突域转发, 不继续进行广播。

在这里插入图片描述
在这里插入图片描述
网桥自学习的算法
在这里插入图片描述

(2)交换机

现在我们很少看到网桥这个设备了,我们现在使用交换机

交换机的特点

  • 并不会对所有计算机进行转发,而是一对一进行转发。
  • 所以,其他电脑就不能对冲突域当中的计算机,进行抓包了。
  • 自带有存储转发的功能:当多个数据传来的时候,先放到交换机的缓存区域,然后排队转发
  • 使用交换机之后,我们每个计算机可以实现全双工通信

在这里插入图片描述

举例:查看交换机的 MAC 地址表
在这里插入图片描述

在这里插入图片描述

7、虚拟局域网

(1)什么 VLAN

虚拟局域网是建立在交换机上面的,首先我们的交换机必须支持 VLAN ,并且可以划分网段

举例:一个公司有一个交换机,然后有销售部、研发部、人事部。我们想将这个三个部门划分三个网段。(但是本质上还是在一个网段,只是用软件将他分割开来)

在这里插入图片描述
理解:

  • VLAN ,可以将一个交换机划分为一个一个小的交换机
  • PC0 给 VLAN1 发送一个广播的时候, 只会在自己这个小的交换机进行广播,并不到 VLAN 2 那个小的交换机
  • 此时,PC 0 就不能和 PC2 通信了。(VLAN1 和 VLAN2 被划分开来)

演示:
在这里插入图片描述

在这里插入图片描述

(2)多个交换机划分 VLAN

  • 交换机与交换机之间,可以用一根线连接起来。
    在这里插入图片描述

在这里插入图片描述

8、高速以太网

(1)快速以太网

  • 10Mb/s 是标准以太网。
  • 100mb/s 叫做快速以太网。
  • 1000mb/s 叫做吉比特以太网。
    在这里插入图片描述
    在这里插入图片描述

(2)吉比特以太网

吉比特以太网的数据传输速率是快速以太网的10倍,可达到1Gb/s。吉比特以太网保留了传统10BASE-T以太网的基本特征,具有相同的帧格式和类似的组网方法。

吉比特以太网定义了基于双绞线的物理层标准1000BASE-T和基于光纤通道的物理层标准1000BASE-X:

在这里插入图片描述
组网的三层模型:
在这里插入图片描述
接入层:端口一定要多,解耦我们对应的电脑。
汇聚层:将我们一栋楼的交换机汇聚起来。
核心层:将很多栋楼的 汇聚层 交换机连接起来。

以上是关于韩立刚计算机网络——第三章:数据链路层的主要内容,如果未能解决你的问题,请参考以下文章

韩立刚计算机网络——第四章:网络层

韩立刚计算机网络——第八章:无线网络

团购巨划算韩立刚老师门徒级学习专题,只此一次的超大优惠福利

韩立刚计算机网络——第五章:应用层

韩立刚计算机网络——第七章:Internet 上面的音频和视频

韩立刚17年学习资料399元一网打尽