前言

数据链路层主要是解决局域网内部数据传输问题,这与网络层和传输层的可靠传输是不冲突的,可以理解为数据链路层负责局域网内可靠传输,网络层负责局域网之间的可靠传输,传输层负责端到端的可靠传输

3.1 数据链路层的概述

  • 链路:从一个结点到相邻结点的一段物理线路,而中间没有任何其他的交换结点
  • 数据链路:指把实现通信协议的硬件和软件加到链路上,就构成了数据链路
  • 数据链路层以帧为单位传输和处理数据

数据链路层的三个重要问题

  1. 封装成帧
  2. 差错检测
  3. 可靠传输

局域网:
使用点对点信道的数据链路层
火狐截图_2022-01-25T09-39-36.064Z.png
使用广播信道的数据链路层(共享式局域网)
火狐截图_2022-01-25T09-44-55.540Z.png

使用二层交换机的数据链路层(交换式局域网)
火狐截图_2022-01-25T09-48-01.119Z.png
使用无线技术(无线局域网)
火狐截图_2022-01-25T09-49-04.992Z.png


3.2 封装成帧

封装成帧

定义:
数据链路层给上层交付的协议数据单元添加帧头和帧尾使之成为帧

帧头帧尾包含着重要的控制信息
火狐截图_2022-02-02T05-33-08.519Z.png
帧头帧尾的作用之一:帧定界(如PPP协议帧的标志)

但是以太网V2帧没有标志
帧定界依靠在物理层时添加前导码来定界
火狐截图_2022-02-02T05-39-00.989Z.png且以太网还规定了96ms的帧间间隔时间,所以并不需要帧结束标志
火狐截图_2022-02-02T05-41-15.237Z.png

透明传输

数据链路层对上层交付的传输数据没有限制,就好像数据链路层不存在一样

面向字节的物理链路使用字节填充实现透明传输 (插ESC)

转义字符ESC:
是一种特殊的控制字符,长度为一个字节,十进制值为27,并不是ESC这三字符

但是如果数据帧中存在数据(flag)与帧定界标志相同,如何保证透明传输呢?
(在帧的数据部分的flag前加转义字符)火狐截图_2022-02-02T05-50-56.631Z.png 为了正确传输帧数据,给数据中的flag前加ESC转义字符。
火狐截图_2022-02-02T05-56-03.029Z.png

在接收方的物理层提取帧时,遇到第一个flag认定为帧开始

然后遇到ESC,删除ESC,认定下一字节是和标志相同的帧数据
并不是帧结束标志
如此反复

直到遇到单独的flag,认定为帧结束标志

如果数据帧中存在数据(flag)与帧定界标志相同,同时又存在转义字符,如何保证透明传输呢?
(依旧是插入ESC,对帧数据部分的每个flag和ESC前都插ESC)火狐截图_2022-02-02T06-02-35.962Z.png


面向比特的物理链路使用比特填充实现透明传输 (零比特填充法)

(PPP帧就是这种)
火狐截图_2022-02-02T06-14-04.480Z.png 在发送前,采用零比特填充法,对数据部分进行扫描,每5个连续的比特1后面插入一个比特0
火狐截图_2022-02-02T06-20-08.067Z.png
确保了帧的透明传输

接收方的物理层提取帧时,将帧的数据部分的每5个连续的1后面的那个0去除即可


其他

火狐截图_2022-02-02T06-23-52.164Z.png


3.3 差错检验

前言

在通信链路中,比特在传输过程中可能产生差错:1变0 0变1之类的称为比特差错

误码率BER(Bit Error Rate)=传输错误的比特/传输比特总量

由于存在比特差错,发送的数据不能正确送达,错误数据毫无意义

故此引入差错检验 检查帧在传输过程中是否产生了误码
火狐截图_2022-02-02T06-32-20.251Z.png 两种帧均通过帧检验序列FCS来检查帧在传输过程中是否产生了误码

校验方法

  1. 奇偶校验(漏检率高,一般不用)火狐截图_2022-02-02T06-42-56.289Z.png
  2. 循环冗余校验(CRC)

a.双方约定好一个生成多项式
b.发送方基于待发送的数据和多项式计算出冗余码,将其添加到待传输数据的后面一起传输
c.接收方通过多项式来计算收到的数据是否产生了误码

具体方法
火狐截图_2022-02-02T06-49-59.064Z.png
两个实例:
火狐截图_2022-02-02T06-57-57.170Z.png火狐截图_2022-02-02T07-02-38.915Z.png其他:
火狐截图_2022-02-02T07-06-37.165Z.png


3.4.1 可靠传输基本概念

简单来说:
不重复/不丢失/不失序
火狐截图_2022-02-02T07-12-56.035Z.png 比特差错只是传输差错的一种

传输差错包括:

比特差错(数据链路层出现)
分组丢失(更上层)
分组失序(更上层)
分组重复(更上层)

火狐截图_2022-02-02T07-21-37.330Z.png

3.4.2 可靠传输的实现机制

停止-等待协议SW

情况1(确认与否认分组)火狐截图_2022-02-02T07-49-05.724Z.png
情况2(超时重传)
火狐截图_2022-02-02T07-54-18.126Z.png
情况3 分组编号
火狐截图_2022-02-02T07-59-56.796Z.png
火狐截图_2022-02-02T08-02-52.500Z.png
情况4 确认不明(文字上不好解释。。。)
火狐截图_2022-02-02T08-09-44.780Z.png
火狐截图_2022-02-02T08-13-22.570Z.png
小结火狐截图_2022-02-02T08-16-59.821Z.png
火狐截图_2022-02-02T08-25-02.434Z.png

回退N帧协议GBN

举例引入
前提部署:
发送窗口的尺寸WT
接收窗口的尺寸WR
火狐截图_2022-02-02T12-30-57.032Z.png序号落在发送窗口内的数据分组可被连续发送,
不必等收到接收方的相应确认分组后再发送

无差错的情况

无误发送
火狐截图_2022-02-02T12-33-02.236Z.png
接收方按序接收,每接收一个,接收窗口就向前滑动一个位置,并发送ACK分组
火狐截图_2022-02-02T12-37-18.583Z.png

火狐截图_2022-02-02T12-39-36.084Z.png同时,发送方可以将已发送的数据分组从缓存中删除
接收方可以择机将以接收的数据分组交付上层处理


累积确认
此外,接收方不一定要对所有已接收的数据分组发送ACK,可以采用累积确认

无误发送火狐截图_2022-02-02T12-45-35.404Z.png返回ACK时,采用累积确认

即使ACK1丢失,但是ACK4表示:从标号为0到4的数据分组无误
火狐截图_2022-02-02T12-48-45.858Z.png
发送方收到ACK4,依次滑动发送窗口,开启新一轮的传输

累积确认的优点:
1.即使存在确认分组丢失
发送方也可能不必重传
2.减小接收方的开销,节约网络资源


有差错的情况

发送过程中出现误码(编号为5的数据分组出现误码)
火狐截图_2022-02-02T12-56-11.341Z.png接收方通过差错检验,检测出编号为5的数据分组出现误码。
丢弃该数据分组,后面到达的4个分组的编号,匹配不上接收窗口对应的序号
4个全部丢弃。
火狐截图_2022-02-02T13-00-03.837Z.png丢弃后,发送丢弃数量个的ACK上一次的最大值(本例为ACK4)
火狐截图_2022-02-02T13-02-12.065Z.png发送方,早已接收过ACk4,当收到重复的ACK4时,就知道了之前所发送的数据分组出现差错,可以不等超时计时器就立刻重传出现差错的那一批数据分组
火狐截图_2022-02-02T13-04-43.154Z.png


若发送窗口超过取值范围

发送正常,回复的ACK7丢失
火狐截图_2022-02-02T13-11-09.713Z.png必将导致发送方超时重传
火狐截图_2022-02-02T13-15-19.927Z.png


小结
火狐截图_2022-02-02T13-21-05.808Z.png

选择重传协议SR

引入
火狐截图_2022-02-03T08-49-43.584Z.png火狐截图_2022-02-03T08-51-23.909Z.png

举例说明

准备火狐截图_2022-02-03T08-55-51.623Z.png发送,但丢失

火狐截图_2022-02-03T08-57-41.320Z.png对于接收方
只要编号落入接收窗口内且无误码的数据分组,接收方都会接收
并对每次成功接收都返回ACK确认分组

本例中,
0和1依次接收成功,接收窗口依次向前滑动,返回ACK
2被检测出误码,接收失败,被丢弃,窗口不动
3仍可继续被成功接收,但2未接收成功,窗口不能移动,回ACK
图如下
火狐截图_2022-02-03T09-06-12.744Z.png
对于发送方
依次收到ACK0和1,依次滑动窗口,删除缓存的0和1,覆盖到编号为4,5的分组,将其发送
火狐截图_2022-02-03T09-11-35.451Z.png 收到ACK3,窗口不动,因为这是一个未按序到达的分组(ACK2未收到),记录编号为3的分组已收到,
这样只会对2号分组超时重传
火狐截图_2022-02-03T09-16-00.872Z.png 分组4和5发送,并被接收,返回ACK4和ACK5给发送方,记录收到确认ACK4和5
但是窗口不会移动,因为未为按序接收ACK(ACK2还未收到),直到分组2超时重传,并且发送方收到ACK2,窗口和移动相应多的次数
火狐截图_2022-02-03T09-21-54.840Z.png
发送方收到ACK2,滑动窗口4次,继续正常发送
火狐截图_2022-02-03T09-26-51.856Z.png火狐截图_2022-02-03T09-27-36.090Z.png


小结
火狐截图_2022-02-03T09-34-58.541Z.png


3.5 点对点协议PPP

应用方向
火狐截图_2022-02-03T10-06-59.327Z.png
PPP协议组成部分及各部分功能
火狐截图_2022-02-03T10-12-47.801Z.png
封装成帧后的PPP帧格式
火狐截图_2022-02-03T10-21-43.169Z.png
PPP的透明传输
火狐截图_2022-02-03T10-27-47.567Z.png

PPP协议的差错检验
火狐截图_2022-02-03T10-30-01.806Z.png

PPP的工作状态(略)

小结
火狐截图_2022-02-03T09-57-55.980Z.png相关link:https://blog.csdn.net/answer3lin/article/details/87395991


3.6 媒体接入控制及CSMA/CD

3.6.1媒体接入控制的基本概念(?)

根据定义可知,媒体介入控制是一种协调局域网内的秩序的协议
其大体分为两大类方法来实现维持秩序
{
1.静态划分信道
2.动态接入控制
}

百度百科的注解:
该协议位于OSI七层协议中数据链路层的下半部分,主要负责控制与连接
理层的物理介质。 火狐截图_2022-02-04T08-41-29.197Z.png


3.6.2媒体接入控制之静态划分信道(多个用户在复用,就是多址)

信道复用(增大对信道带宽的利用率)
火狐截图_2022-02-04T08-55-49.233Z.png 举例理解就是:
半径超大的导管只是在传输1L自来水,纯纯浪费,为了进一步利用,可以
内部划分多条小管道,同时运送

分类 {
频分复用(水陆空并用)
火狐截图_2022-02-04T09-05-57.738Z.png
时分复用(周期性一人用一会儿)
火狐截图_2022-02-04T09-09-32.606Z.png
波分复用(光波的频分复用)

码分复用(各用户可在同样的时间使用同样的频带进行通信)
火狐截图_2022-02-04T09-29-51.789Z.png
}
码分复用的应用举例
(1)火狐截图_2022-02-04T09-40-27.342Z.png (2)
火狐截图_2022-02-04T09-49-28.731Z.png


3.6.3 媒体接入控制之动态接入控制(随机接入)CSMA/CD

早期共享式以太网使用CSMA/CD来实现

理解上:数据碰撞后,“变质”为碰撞信号,继续发送

CSMA/CD:载波监听 多址接入 碰撞检测
火狐截图_2022-02-05T08-01-27.485Z.png
CSMA/CD的相关概念之争用期
火狐截图_2022-02-05T08-28-58.250Z.png火狐截图_2022-02-05T08-32-34.779Z.png


CSMA/CD的相关概念之最小帧长
最小帧长为64字节(512比特),故 发送512比特的时间即为争用期

为什么帧长度不能小于64Bytes?(有点像,你把船开到公海,不受国家法律控制也不受保护 /doge保命)
因为:端 发送帧完毕后不再对该帧进行碰撞检测了
不检测就不知道该帧是否遭遇碰撞,更无法重发

不够64字节的帧,必须加入一些填充字节,使得帧长度不小于64字节

所以说,凡是收到小于64字节的帧,都是碰撞过后的无用帧

火狐截图_2022-02-05T08-35-45.236Z.png


CSMA/CD的相关概念之最大帧长
MAC帧最长1518字节
插入vlan后的802.1q 最长为1522字节(加上了4字节的vlan标记)

帧过长的劣势:
1.长时间占用总线
2.可能导致接收端缓冲区溢出
火狐截图_2022-02-05T08-58-34.576Z.png


CSMA/CD的相关概念之退避算法
火狐截图_2022-02-05T09-07-18.764Z.png


CSMA/CD的帧发送/帧接收流程
火狐截图_2022-02-05T09-12-22.789Z.png

火狐截图_2022-02-05T09-14-52.570Z.png


CSMA/CD的相关题目
火狐截图_2022-02-05T09-25-05.716Z.png
类比:路程=时间x速度
最小帧长=争用期X数据传输速率

注意:

通俗的来说
数据传输速率:是把数据发送到信道上的速度
信号传输速度:是数据在信道上传输的速度


3.6.4 (略)媒体接入控制之动态接入控制(随机接入)CSMA/CA

CSMA/CA
载波监听/多址接入/碰撞避免

处于的体系位置火狐截图_2022-02-05T09-53-12.666Z.png
在无线局域网中,不用碰撞检测的原因(为什么要CA而不是用已有的CD?)
1.在无线网卡上实现CD,对硬件要求高
2.无线电波传播存在隐蔽站。
(例子中:
A范围内,可以发数据给B,并持续碰撞检测,但C也可以发数据给B,
A无法预测,所以进行碰撞检测意义不大

火狐截图_2022-02-05T09-58-49.305Z.png

3.7 MAC地址,IP地址以及ARP协议

前言

火狐截图_2022-02-06T13-06-09.952Z.png

MAC地址

定义
48位(6字节)用以标识网络设备接口的16进制字符

又称硬件地址,物理地址

MAC地址固化在网卡中

一台PC 一般有两个网卡 就有两个MAC
{
有线网卡
无线网卡
}
火狐截图_2022-02-06T13-12-11.126Z.png
火狐截图_2022-02-06T13-22-37.896Z.png

IEEE 802局域网的MAC地址格式

6字节 十六进制表示 用 - : 隔开火狐截图_2022-02-06T13-29-39.559Z.png
IEEE 802局域网的MAC发送顺序
字节间的发送顺序: 第一字节 —> 第六字节
字节内的发送顺序: b0 —> b7

其他
单播mac地址
目的地址填对应的单播mac地址
广播mac地址
目的地址填FF-FF-FF-FF-FF-FF
多播(组播)mac地址(就像建了个讨论组,组内的才会接收)
目的地址填多播地址
例如:A在”讨论组”发消息,B和C在组内,接受
D不在,拒绝
(是否在组内:查看多播组列表)
火狐截图_2022-02-06T13-43-27.187Z.png


IP地址

定义:
因特网上的主机和路由器所使用的地址,用于标识两部分信息:
{
网络号:标识网络
主机号:表示同一网络上的不同主机
}

直接小结(这里只是提一下,具体的IP相关知识在网络层讲解)
重点:数据包传递时
{
源/目的MAC地址一直在变
源/目的 IP 地址始终不变
}
火狐截图_2022-02-06T14-10-17.478Z.png


ARP协议

引入:
由上节引出的问题,设备(主机或路由器)间只知道IP地址,不知道其对应MAC地址是什么?火狐截图_2022-02-06T14-14-59.989Z.png故此,引出ARP协议

大体过程:
同一网段内
B想向C发送数据包,但只知道C的IP地址
B根据C的IP查看自身ARP高速缓存表
if 没有
发送ARP请求报文(该报文封装在MAC帧中,目的地址为FF-FF-FF-FF-FF)去获取C的MAC地址
if 有
取得ip地址相关联的MAC地址,目的MAC地址填上刚刚查询到的即可

具体看图示

图示步骤一
火狐截图_2022-02-06T14-32-16.108Z.png
图示步骤二
火狐截图_2022-02-06T14-33-00.133Z.png图示步骤三
火狐截图_2022-02-06T14-34-56.292Z.png图示步骤四
火狐截图_2022-02-06T14-35-51.403Z.png图示步骤五
火狐截图_2022-02-06T14-36-31.335Z.png


关于ARP高速缓存表中的类型
{
静态:手工指定,长期有效
动态:自动获取,生命周期默认两分钟(主要是,MAC地址可能会变,比
如换个网卡)
}
火狐截图_2022-02-06T14-39-19.540Z.png
解答上节课的遗留问题
逐段使用ARP协议获取MAC地址火狐截图_2022-02-06T14-42-01.961Z.png

3.8 集线器和交换机的区别

同轴电缆 总线型 以太网
依照CSMA/CD协议使用网络资源
(CSMA/CD工作在半双工模式下,为什么?因为全双工会碰撞啊。。)
具体数据发送流程见 前面讲的(单播/多播/广播)火狐截图_2022-02-07T12-04-22.616Z.png
集线器 星型 (共享式)以太网
火狐截图_2022-02-07T12-08-48.143Z.png

交换机 对应 (交换式)以太网
交换机通常有多个接口(8口 24口都有)

交换机具有并行性,能同时连通多对接口,使得多对主机能同时通信
且无碰撞(可以看出是全双工,全双工可以看出不使用CSMA/CD)

转发方式
(常用)1.存储转发:
先在缓冲区存储接收到的整个数据帧,
然后进行CRC校验,检查数据帧是否正确,
if 正确
再进行转发。
else 丢弃

由于先存储,再计算CRC,再发送,繁杂, 也就造成了高延迟的现象,但无误
2.直通转发:
交换机在收到数据帧后,不进行缓存和校验,而
是直接转发到目的端口。

快又傻的方式
3.无碎片转发:
接收64字节(最小帧长度),无误后,再转发

比直通转发好一点点。。。

帧交换表(交换机接口的MAC地址和接口编号的映射表)
通过交换机的自学习算法,而获得的存储了交换机各接口编号和其对应的MAC地址的映射表
火狐截图_2022-02-07T12-57-51.835Z.png


使用HUB组网
独立的以太网
(此时数据只会在各系部自身的冲突域中发送,如图)
(简单来说就是,HUB只是替代了同轴电缆,逻辑上还是总线型的形式)火狐截图_2022-02-07T12-16-18.615Z.png
经过HUB组网
冲突域变大
如图示(一系的C发送数据给二系的A的过程)
火狐截图_2022-02-07T12-20-37.079Z.png


对比集线器和交换机
发送单播帧的比较火狐截图_2022-02-07T13-02-46.357Z.png

发送广播帧的比较
火狐截图_2022-02-07T13-05-48.727Z.png
碰撞域比较
火狐截图_2022-02-07T13-09-13.736Z.png

交换机可以隔离碰撞域
火狐截图_2022-02-07T13-10-47.445Z.png


3.9 以太网交换机自学习和转发帧的流程

火狐截图_2022-02-07T14-07-05.070Z.png简述一下”明确丢弃”:
交换机不会违反A端口发送的数据帧,还发回A端口

如图:
G和A通过HUB相连在交换机1的1接口
G发送数据帧给A,通过HUB,和在总线上发送一样,给所有接口都发该帧
PC_A发现目的地址就是A,接收
交换机1的1接口也收到该帧,查看帧交换表,有A~~~1;
但是该帧就是来自1接口,所以,丢弃该帧

火狐截图_2022-02-07T14-08-48.235Z.png


3.10 以太网交换机的生成树协议STP

曾经疑惑(不成体系就会漏洞百出)
为什么两台交换机间要用两条交叉线连接?
生成树什么条件下用啊?
如何提高以太网的可靠性?
多连条备用链路不就行了(冗余链路)

多加了冗余链路会造成网络环路,进而导致广播风暴,浪费网络资源等不良效果,得不偿失啊!!怎么办?
使用生成树协议啊,使得整个网络呈树状结构
(堵塞部分会造成环的链路口,留作备用就行了)

既增加了网络的可靠性
又避免了网络环路带来的各种问题

具体选举过程:
生成树选举过程.docx

小结火狐截图_2022-02-07T14-27-27.677Z.png


3.11 虚拟局域网VLAN

前言

曾经的疑惑
为什么要用VLAN,什么情况用VLAN,VLAN作用是什么?

简单的说vlan的作用就是分割广播域
巨大的广播域有很多弊端
广播风暴——广播风暴会浪费大量网络资源和各主机CPU资源
难以管理和维护
潜在的安全问题


3.11.1 虚拟局域网VLAN的概述

引入
广泛使用交换机会造成巨大的广播域!!!
带来大量弊端火狐截图_2022-02-08T13-54-42.134Z.png
如何分割广播域?
1.使用路由器(路由器贵,成本高)
由于路由器默认情况下不对广播数据包进行转发
所以路由器可以隔离广播域火狐截图_2022-02-08T14-00-32.908Z.png
2.划分VLAN
划分vlan前,全局广播火狐截图_2022-02-08T14-02-29.244Z.png
按需划分VLAN后火狐截图_2022-02-08T14-03-41.849Z.png
可得:
同一个VLAN内部可以广播通信,不同VLAN之间不能广播通信


3.11.2 虚拟局域网VLAN的实现机制

vlan在交换机上实现,需要交换机
1.能够处理带有vlan标记的帧(IEEE 802.1 Q 帧)

2.交换机的各端口可以支持不同的端口类型


IEEE 802.1Q帧(又称dot 1 q帧)
802.1Q帧 (又称dot 1 q帧) 对以太网的MAC帧格式进行了拓展,
插入了4字节的VLAN标记

VID:VLAN标记内的最后12个bit
VID唯一的标识了该帧属于哪个VLAN

802.1Q帧是由交换机处理的,而不是用户主机来处理

当交换机收到普通的以太网帧时,会将其插入4字节的VLAN标记转变为802.1Q帧————简称“打标签”
当交换机转发802.1Q帧时,可能会删除其4字节的VLAN标记转变为普通以太网帧————简称“去标签”
火狐截图_2022-02-08T14-47-33.717Z.png


交换机的端口类型
端口类型
Access
Trunk
Hybrid

各端口的缺省VLAN ID(default)
如:
思科交换机所有端口的默认VLAN都是VLAN1
Native VLAN (又称本征VLAN)

华为交换机称缺省VALN为端口VLAN ID,简记:PVID

Access端口
接收普通帧—->打标签—->对比VID和PVID—->判断是否转发火狐截图_2022-02-08T14-59-45.509Z.png
基于端口划分VLAN2和VLAN3后的广播帧转发
火狐截图_2022-02-08T15-04-43.620Z.png

Trunk端口
发送处理:
if VID等于PVID
去标签 再转发
else
直接转发
接收处理:
if 未打标签
打上目前端口的PVID上的VLAN标签
else
直接转发
火狐截图_2022-02-08T15-13-04.683Z.png

Hybrid端口(华为专有端口模式,了解即可)
火狐截图_2022-02-08T15-16-45.108Z.png


完结,于2022年2月8日23:17:59

复习于2022.3.3 13:09