前言
数据链路层主要是解决局域网内部数据传输问题,这与网络层和传输层的可靠传输是不冲突的,可以理解为数据链路层负责局域网内可靠传输,网络层负责局域网之间的可靠传输,传输层负责端到端的可靠传输
3.1 数据链路层的概述
- 链路:从一个结点到相邻结点的一段物理线路,而中间没有任何其他的交换结点
- 数据链路:指把实现通信协议的硬件和软件加到链路上,就构成了数据链路
- 数据链路层以帧为单位传输和处理数据
数据链路层的三个重要问题
- 封装成帧
- 差错检测
- 可靠传输
局域网:
使用点对点信道的数据链路层
使用广播信道的数据链路层(共享式局域网)
使用二层交换机的数据链路层(交换式局域网)
使用无线技术(无线局域网)
3.2 封装成帧
封装成帧
定义:
数据链路层给上层交付的协议数据单元添加帧头和帧尾使之成为帧
帧头帧尾包含着重要的控制信息
帧头帧尾的作用之一:帧定界(如PPP协议帧的标志)
但是以太网V2帧没有标志
帧定界依靠在物理层时添加前导码来定界
且以太网还规定了96ms的帧间间隔时间,所以并不需要帧结束标志
透明传输
数据链路层对上层交付的传输数据没有限制,就好像数据链路层不存在一样
面向字节的物理链路使用字节填充实现透明传输 (插ESC)
转义字符ESC:
是一种特殊的控制字符,长度为一个字节,十进制值为27,并不是ESC这三字符
但是如果数据帧中存在数据(flag)与帧定界标志相同,如何保证透明传输呢?
(在帧的数据部分的flag前加转义字符)
为了正确传输帧数据,给数据中的flag前加ESC转义字符。
在接收方的物理层提取帧时,遇到第一个flag认定为帧开始
然后遇到ESC,删除ESC,认定下一字节是和标志相同的帧数据
并不是帧结束标志
如此反复
直到遇到单独的flag,认定为帧结束标志
如果数据帧中存在数据(flag)与帧定界标志相同,同时又存在转义字符,如何保证透明传输呢?
(依旧是插入ESC,对帧数据部分的每个flag和ESC前都插ESC)
面向比特的物理链路使用比特填充实现透明传输 (零比特填充法)
(PPP帧就是这种)
在发送前,采用零比特填充法,对数据部分进行扫描,每5个连续的比特1后面插入一个比特0
确保了帧的透明传输
接收方的物理层提取帧时,将帧的数据部分的每5个连续的1后面的那个0去除即可
其他

3.3 差错检验
前言
在通信链路中,比特在传输过程中可能产生差错:1变0 0变1之类的称为比特差错
误码率BER(Bit Error Rate)=传输错误的比特/传输比特总量
由于存在比特差错,发送的数据不能正确送达,错误数据毫无意义
故此引入差错检验 检查帧在传输过程中是否产生了误码
两种帧均通过帧检验序列FCS来检查帧在传输过程中是否产生了误码
校验方法
- 奇偶校验(漏检率高,一般不用)

- 循环冗余校验(CRC)
a.双方约定好一个生成多项式
b.发送方基于待发送的数据和多项式计算出冗余码,将其添加到待传输数据的后面一起传输
c.接收方通过多项式来计算收到的数据是否产生了误码
具体方法
两个实例:
其他:
3.4.1 可靠传输基本概念
简单来说:
不重复/不丢失/不失序
比特差错只是传输差错的一种
传输差错包括:
比特差错(数据链路层出现)
分组丢失(更上层)
分组失序(更上层)
分组重复(更上层)
3.4.2 可靠传输的实现机制
停止-等待协议SW
情况1(确认与否认分组)
情况2(超时重传)
情况3 分组编号

情况4 确认不明(文字上不好解释。。。)

小结
回退N帧协议GBN
举例引入
前提部署:
发送窗口的尺寸WT
接收窗口的尺寸WR
序号落在发送窗口内的数据分组可被连续发送,
不必等收到接收方的相应确认分组后再发送
无差错的情况
无误发送
接收方按序接收,每接收一个,接收窗口就向前滑动一个位置,并发送ACK分组
同时,发送方可以将已发送的数据分组从缓存中删除
接收方可以择机将以接收的数据分组交付上层处理
累积确认
此外,接收方不一定要对所有已接收的数据分组发送ACK,可以采用累积确认
无误发送
返回ACK时,采用累积确认
即使ACK1丢失,但是ACK4表示:从标号为0到4的数据分组无误
发送方收到ACK4,依次滑动发送窗口,开启新一轮的传输
累积确认的优点:
1.即使存在确认分组丢失
发送方也可能不必重传
2.减小接收方的开销,节约网络资源
有差错的情况
发送过程中出现误码(编号为5的数据分组出现误码)
接收方通过差错检验,检测出编号为5的数据分组出现误码。
丢弃该数据分组,后面到达的4个分组的编号,匹配不上接收窗口对应的序号
4个全部丢弃。
丢弃后,发送丢弃数量个的ACK上一次的最大值(本例为ACK4)
发送方,早已接收过ACk4,当收到重复的ACK4时,就知道了之前所发送的数据分组出现差错,可以不等超时计时器就立刻重传出现差错的那一批数据分组
若发送窗口超过取值范围
发送正常,回复的ACK7丢失
必将导致发送方超时重传
小结
选择重传协议SR
引入

举例说明
准备
发送,但丢失
对于接收方
只要编号落入接收窗口内且无误码的数据分组,接收方都会接收
并对每次成功接收都返回ACK确认分组
本例中,
0和1依次接收成功,接收窗口依次向前滑动,返回ACK
2被检测出误码,接收失败,被丢弃,窗口不动
3仍可继续被成功接收,但2未接收成功,窗口不能移动,回ACK
图如下
对于发送方
依次收到ACK0和1,依次滑动窗口,删除缓存的0和1,覆盖到编号为4,5的分组,将其发送
收到ACK3,窗口不动,因为这是一个未按序到达的分组(ACK2未收到),记录编号为3的分组已收到,
这样只会对2号分组超时重传
分组4和5发送,并被接收,返回ACK4和ACK5给发送方,记录收到确认ACK4和5
但是窗口不会移动,因为未为按序接收ACK(ACK2还未收到),直到分组2超时重传,并且发送方收到ACK2,窗口和移动相应多的次数
发送方收到ACK2,滑动窗口4次,继续正常发送

小结
3.5 点对点协议PPP
应用方向
PPP协议组成部分及各部分功能
封装成帧后的PPP帧格式
PPP的透明传输
PPP协议的差错检验
PPP的工作状态(略)
小结
相关link:https://blog.csdn.net/answer3lin/article/details/87395991
3.6 媒体接入控制及CSMA/CD
3.6.1媒体接入控制的基本概念(?)
根据定义可知,媒体介入控制是一种协调局域网内的秩序的协议
其大体分为两大类方法来实现维持秩序
{
1.静态划分信道
2.动态接入控制
}
百度百科的注解:
该协议位于OSI七层协议中数据链路层的下半部分,主要负责控制与连接物
理层的物理介质。 
3.6.2媒体接入控制之静态划分信道(多个用户在复用,就是多址)
信道复用(增大对信道带宽的利用率)
举例理解就是:
半径超大的导管只是在传输1L自来水,纯纯浪费,为了进一步利用,可以
内部划分多条小管道,同时运送
分类 {
频分复用(水陆空并用)
时分复用(周期性一人用一会儿)
波分复用(光波的频分复用)
码分复用(各用户可在同样的时间使用同样的频带进行通信)
}
码分复用的应用举例
(1)
(2)
3.6.3 媒体接入控制之动态接入控制(随机接入)CSMA/CD
早期共享式以太网使用CSMA/CD来实现
理解上:数据碰撞后,“变质”为碰撞信号,继续发送
CSMA/CD:载波监听 多址接入 碰撞检测
CSMA/CD的相关概念之争用期

CSMA/CD的相关概念之最小帧长
最小帧长为64字节(512比特),故 发送512比特的时间即为争用期
为什么帧长度不能小于64Bytes?(有点像,你把船开到公海,不受国家法律控制也不受保护 /doge保命)
因为:端 发送帧完毕后不再对该帧进行碰撞检测了
不检测就不知道该帧是否遭遇碰撞,更无法重发
不够64字节的帧,必须加入一些填充字节,使得帧长度不小于64字节
所以说,凡是收到小于64字节的帧,都是碰撞过后的无用帧

CSMA/CD的相关概念之最大帧长
MAC帧最长1518字节
插入vlan后的802.1q 最长为1522字节(加上了4字节的vlan标记)
帧过长的劣势:
1.长时间占用总线
2.可能导致接收端缓冲区溢出
CSMA/CD的相关概念之退避算法
CSMA/CD的帧发送/帧接收流程

CSMA/CD的相关题目
类比:路程=时间x速度
最小帧长=争用期X数据传输速率
注意:
通俗的来说
数据传输速率:是把数据发送到信道上的速度
信号传输速度:是数据在信道上传输的速度
3.6.4 (略)媒体接入控制之动态接入控制(随机接入)CSMA/CA
CSMA/CA
载波监听/多址接入/碰撞避免
处于的体系位置
在无线局域网中,不用碰撞检测的原因(为什么要CA而不是用已有的CD?)
1.在无线网卡上实现CD,对硬件要求高
2.无线电波传播存在隐蔽站。
(例子中:
A范围内,可以发数据给B,并持续碰撞检测,但C也可以发数据给B,
A无法预测,所以进行碰撞检测意义不大
)
3.7 MAC地址,IP地址以及ARP协议
前言
MAC地址
定义
48位(6字节)用以标识网络设备接口的16进制字符
又称硬件地址,物理地址
MAC地址固化在网卡中
一台PC 一般有两个网卡 就有两个MAC
{
有线网卡
无线网卡
}

IEEE 802局域网的MAC地址格式
6字节 十六进制表示 用 - : 隔开
IEEE 802局域网的MAC发送顺序
字节间的发送顺序: 第一字节 —> 第六字节
字节内的发送顺序: b0 —> b7
其他
单播mac地址
目的地址填对应的单播mac地址
广播mac地址
目的地址填FF-FF-FF-FF-FF-FF
多播(组播)mac地址(就像建了个讨论组,组内的才会接收)
目的地址填多播地址
例如:A在”讨论组”发消息,B和C在组内,接受
D不在,拒绝
(是否在组内:查看多播组列表)
IP地址
定义:
因特网上的主机和路由器所使用的地址,用于标识两部分信息:
{
网络号:标识网络
主机号:表示同一网络上的不同主机
}
直接小结(这里只是提一下,具体的IP相关知识在网络层讲解)
重点:数据包传递时
{
源/目的MAC地址一直在变
源/目的 IP 地址始终不变
}
ARP协议
引入:
由上节引出的问题,设备(主机或路由器)间只知道IP地址,不知道其对应MAC地址是什么?
故此,引出ARP协议
大体过程:
同一网段内
B想向C发送数据包,但只知道C的IP地址
B根据C的IP查看自身ARP高速缓存表
if 没有
发送ARP请求报文(该报文封装在MAC帧中,目的地址为FF-FF-FF-FF-FF)去获取C的MAC地址
if 有
取得ip地址相关联的MAC地址,目的MAC地址填上刚刚查询到的即可
具体看图示
图示步骤一
图示步骤二
图示步骤三
图示步骤四
图示步骤五
关于ARP高速缓存表中的类型
{
静态:手工指定,长期有效
动态:自动获取,生命周期默认两分钟(主要是,MAC地址可能会变,比
如换个网卡)
}
解答上节课的遗留问题
逐段使用ARP协议获取MAC地址
3.8 集线器和交换机的区别
同轴电缆 总线型 以太网
依照CSMA/CD协议使用网络资源
(CSMA/CD工作在半双工模式下,为什么?因为全双工会碰撞啊。。)
具体数据发送流程见 前面讲的(单播/多播/广播)
集线器 星型 (共享式)以太网
交换机 对应 (交换式)以太网
交换机通常有多个接口(8口 24口都有)
交换机具有并行性,能同时连通多对接口,使得多对主机能同时通信
且无碰撞(可以看出是全双工,全双工可以看出不使用CSMA/CD)
转发方式:
(常用)1.存储转发:
先在缓冲区存储接收到的整个数据帧,
然后进行CRC校验,检查数据帧是否正确,
if 正确
再进行转发。
else 丢弃
由于先存储,再计算CRC,再发送,繁杂, 也就造成了高延迟的现象,但无误
2.直通转发:
交换机在收到数据帧后,不进行缓存和校验,而
是直接转发到目的端口。
快又傻的方式
3.无碎片转发:
接收64字节(最小帧长度),无误后,再转发
比直通转发好一点点。。。
帧交换表(交换机接口的MAC地址和接口编号的映射表)
通过交换机的自学习算法,而获得的存储了交换机各接口编号和其对应的MAC地址的映射表
使用HUB组网
独立的以太网
(此时数据只会在各系部自身的冲突域中发送,如图)
(简单来说就是,HUB只是替代了同轴电缆,逻辑上还是总线型的形式)
经过HUB组网
冲突域变大
如图示(一系的C发送数据给二系的A的过程)
对比集线器和交换机
发送单播帧的比较
发送广播帧的比较
碰撞域比较
交换机可以隔离碰撞域
3.9 以太网交换机自学习和转发帧的流程
简述一下”明确丢弃”:
交换机不会违反A端口发送的数据帧,还发回A端口
如图:
G和A通过HUB相连在交换机1的1接口
G发送数据帧给A,通过HUB,和在总线上发送一样,给所有接口都发该帧
PC_A发现目的地址就是A,接收
交换机1的1接口也收到该帧,查看帧交换表,有A~~~1;
但是该帧就是来自1接口,所以,丢弃该帧

3.10 以太网交换机的生成树协议STP
曾经疑惑(不成体系就会漏洞百出)
为什么两台交换机间要用两条交叉线连接?
生成树什么条件下用啊?
如何提高以太网的可靠性?
多连条备用链路不就行了(冗余链路)
多加了冗余链路会造成网络环路,进而导致广播风暴,浪费网络资源等不良效果,得不偿失啊!!怎么办?
使用生成树协议啊,使得整个网络呈树状结构
(堵塞部分会造成环的链路口,留作备用就行了)
既增加了网络的可靠性
又避免了网络环路带来的各种问题
具体选举过程:
生成树选举过程.docx
小结
3.11 虚拟局域网VLAN
前言
曾经的疑惑
为什么要用VLAN,什么情况用VLAN,VLAN作用是什么?
简单的说vlan的作用就是分割广播域
巨大的广播域有很多弊端
广播风暴——广播风暴会浪费大量网络资源和各主机CPU资源
难以管理和维护
潜在的安全问题
3.11.1 虚拟局域网VLAN的概述
引入
广泛使用交换机会造成巨大的广播域!!!
带来大量弊端
如何分割广播域?
1.使用路由器(路由器贵,成本高)
由于路由器默认情况下不对广播数据包进行转发
所以路由器可以隔离广播域
2.划分VLAN
划分vlan前,全局广播
按需划分VLAN后
可得:
同一个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标记转变为普通以太网帧————简称“去标签”
交换机的端口类型
端口类型
Access
Trunk
Hybrid
各端口的缺省VLAN ID(default)
如:
思科交换机所有端口的默认VLAN都是VLAN1
Native VLAN (又称本征VLAN)
华为交换机称缺省VALN为端口VLAN ID,简记:PVID
Access端口
接收普通帧—->打标签—->对比VID和PVID—->判断是否转发
基于端口划分VLAN2和VLAN3后的广播帧转发
Trunk端口
发送处理:
if VID等于PVID
去标签 再转发
else
直接转发
接收处理:
if 未打标签
打上目前端口的PVID上的VLAN标签
else
直接转发
Hybrid端口(华为专有端口模式,了解即可)
完结,于2022年2月8日23:17:59
复习于2022.3.3 13:09

