参考视频:王道计算机考研 计算机网络
参考书:《2022年计算机网络考研复习指导》
计算机网络 | 数据链路层
基本概念
功能概述
- 为网络层提供服务
- 链路管理
- 组帧
- 流量控制
- 差错控制
封装成帧与透明传输
封装成帧
封装成帧就是加将数据加头加尾,相当于将数据打包。
透明传输
透明传输就是为了防止特殊的数据无法正常传输的的情况的发生,比如说在封装成帧的过程中出现数据中的某些标记符与开始/结束标记符恰巧重复等等情况。
字符计数法
在帧的首部使用一个计数字段(第一个字节,8bit)来表明帧内字符数。
缺点:如果在某一个帧内,标记位后面的某个字节的数据丢失,那么会影响后面的帧。
比如3 1 1 和 4 2 2 2,如果前面的帧丢失变成 3 1,那么后面的4就会被补到前面变成 3 1 4导致错误。
字符填充法
就是加头加尾分别标记开始结束,和零比特填充法(见下)对比,开始和结束的对应的字符不一样。
但有可能出现数据内某段比特流数据正好与标记字段重复,从而导致误判断的情况。
解决方法:添加转义字符。
零比特填充法
违规编码法
使用高-高,低-低来定界帧的起始和终止。
因为曼彻斯特编码不使用高-高,低-低来表示,所以如果使用高-高,低-低来表示帧起始和终止就不会与数据冲突。
小结
由于字节计数法中计数字段的脆弱性(计数字段错误将带来灾难性后果)以及字符填充法实现上的复杂性和不兼容性,目前较普遍使用的帧同步法是比特填充法和违规编码法。
差错控制
差错是什么?
数据链路层的差错的是比特的错误。
差错从何而来?
为什么要在数据链路层进行差错控制?
因为错误可以尽早发现,不会让一个错误的数据包发送了很长时间到达最终目的地之后才被发现,从而导致网络资源的浪费。
检错编码
奇偶校验码
- 奇校验码:添加 0/1 使得 1 的个数为奇数。
- 偶校验码:添加 0/1 使得 1 的个数为偶数。
缺点:只能检测出1、3、5、7、… 等等奇位数错误,检测成功率位50%。
CRC 循环冗余码
用传输数据除以生成多项式得到冗余码。
简化的例子:
实际运算步骤:
注意:
-
阶数就是最高位是哪位,然后位数-1,如10011就是5-1=4,1011就是4-1=3。
-
异或运算就是相同得0,不同得1,比如100和101做异或,结果就是001
-
余数添加到要发送的数据后面,称为帧检验序列FCS
示例:
需要注意的地方:
纠错编码——海明码
纠错编码:发现错误、找到位置、纠正错误。
工作流程:
海明距离:
一般而言,要检测 d 位错,码距至少要 d+1 位;要纠正 d 位错,码距至少要 2d+1 位。
第一步:确认校验码位数r
设有效数据有 m 位,校验码有 r 位。
海明不等式:2r ≥ m + r + 1
第二步:确定校验码和数据的位置
规定校验码 Pi 在海明位号为 2i-1 的位置上,其余各位为信息位。
第三步:求出校验码的值
分组以形成校验关系:
- 校验码 P1:对应 x1,二进制为 001,负责所有形如 1** 的数据位的校验(不包含校验位)。
- 校验码 P2:对应 x2,二进制为 010,负责所有形如 *1* 的数据位的校验(不包含校验位)。
- 校验码 P3:对应 x4,二进制为 100,负责所有形如 **1 的数据位的校验(不包含校验位)。
校验位取值:
校验位 Pi 的值为第 i 组(由该校验位校验的数据位)所有值求异或。
第四步:检测并纠错
每个校验组分别利用校验位和参与形成该校验位的信息位进行奇偶校验检查:
纠错方法1:找到不满足奇偶校验的分组取交集,再与满足奇偶校验的分组取差集,得到的就是错误位。
例如,4号校验码和1号校验码出错,取交集得5、7位中有错误,再因为2号校验码正确,7位无错,所以错误位是5。
纠错方法2:校验位和参与形成该校验位的信息位全部异或,校验方程S3S2S1的计算结果就是错误位的位号。
小结
流量控制与可靠传输机制
数据链路层的流量控制只针对发送方,由接收方来控制(控制方法:收不下就不回复确认),只限制发送方的帧的发送速率。
流量控制是为了让传输过程中的发送速度和接受速度匹配,减少传输出错与资源浪费。
流量控制方法:
窗口大小:
- 停止-等待协议:发送窗口大小 = 1,接收窗口大小 = 1。
- 后退N帧协议(GBN):发送窗口大小 ≥ 1,接收窗口大小 = 1。
- 选择重传协议(SR):发送窗口大小 > 1,接收窗口大小 > 1。
注:这三个协议的窗口大小都是固定的。
可靠传输:发送端发送什么,接收端就要接收到什么。
数据链路层的可靠传输使用确认和超时重传两种机制来完成。
注:数据链路层的流量控制是点到点的,而传输层的流量控制是端到端的。
停止-等待协议(Stop-and-Wait)
停止-等待协议的无差错情况:
停止-等待协议的有差错情况:
- 数据帧丢失或出错
- ACK丢失
- ACK迟到
停止-等待协议的特点:
- 简单
- 信道利用率低。大部分时间数据都在路上,发送方很长时间闲置,资源浪费
停止-等待协议的性能分析:
信道利用率 & 信道吞吐率 :
后退N帧协议(GBN)
滑动窗口:
发送方必须响应的三件事:
- 上层调用
- 收到了一个 ACK
- 超时事件
累计确认:就是收到一个确认帧,那么它和它之前的所有帧都默认已收到。反之,如果某个确认帧没收到,那么它和它之后的所有帧都默认丢失(即使收到了也丢掉),进行重传。
接收方要做的事:
- 若按顺序正确收到 n 号帧,窗口前移一个位置,并为 n 号帧发回一个 ACK。
- 若收到的数据帧落在接收窗口之外,一律丢弃,并为最近按序接收的帧重新发送 ACK。
示例:
出现超时:发送方重传所有已发送但未被确认的帧。
滑动窗口的长度:
发送窗口不能无限大,与使用的编号的比特数有关。
很简单,就是1比特编号0和1,同理2比特编号0-3。如果用1比特编号,却要4个窗口长度,那么窗口内数据编号都编不过来,直接乱套了。
后退N帧协议(GBN)的优缺点:
- 优点:提高了信道利用率
- 缺点:因为重传机制的原因导致已经收到数据却需要强行丢弃而造成浪费
例题:
选择重传协议(SR)
为了解决GBN的缺点,我们选择只重传错误的帧,这样的话就不用浪费资源将已经收到的帧重传一次了。
和GBN相比,选择重传协议(SR)的发送方和接收方都有滑动窗口,和GBN的区别其实就是做了一个数据缓存,已经收到的帧不用扔了,等待之前因意外丢失的帧收到的时候确认即可,但是只能缓存窗口尺寸内的包含的帧。
选择重传协议(SR)的滑动窗口:
发送方必须响应的三件事:
- 上层调用
- 收到了一个 ACK
- 超时事件
接收方要做的事:
示例:
因为编号的问题,发送窗口不能无限大。
窗口过大会导致二义性(在极端情况下接收方不知道接收的帧是新帧还是旧帧)。
发送窗口最后和接收窗口大小相同,这样利用率比较高。
滑动窗口的长度:
设窗口有 2n 个编号(0、1、…、2n-1),需要满足条件:发送窗口 + 接收窗口 ≤ 2n,最好是发送窗口 = 接收窗口 = 2n-1。
例题:
介质访问控制
传输数据使用的两种链路:
- 点对点链路:应用于PPP协议,常用于广域网。
- 广播式链路:应用于早期的以太网、(无线)局域网。典型拓扑结构:总线型、星型(逻辑总线型)。
介质访问控制的目的:让节点之间的通信不会进行相互干扰。
三种介质访问控制协议在不同网络负载情况下的表现:
注:只有随机访问介质访问控制会产生冲突。
信道划分介质访问控制
信道划分介质访问控制:静态划分信道。
虽然使用一条共享信道,但是通过多路复用技术组合进行传输,提高了信道的利用率。
频分多路复用(FDM)
共享时间,不共享空间。
时分多路复用(TDM)
共享空间,不共享时间。
改进:统计时分多路复用(STDM,又称异步时分多路复用)
波分多路复用(WDM)
实质:光的频分多路复用。
码分多路复用(CDM)
采用不同的编码来区分各路原始信号。
既共享信道的频率,又共享时间。
随机访问介质访问控制
随机访问介质访问控制协议又称为争用型协议。
核心思想:胜利者通过争用获得信道,从而获得信息的发送权。
实质:将广播信道转化为点对点信道。
ALOHA 协议
纯 ALOHA 协议:
纯 ALOHA 协议太随性了,导致纯 ALOHA 网络的吞吐量很低。
改进:时隙 ALOHA 协议
CSMA 协议
分类:
- 1-坚持 CSMA
- 非坚持 CSMA
- p-坚持 CSMA
1-坚持 CSMA 协议:
非坚持 CSMA 协议:
p-坚持 CSMA 协议:
总结:
名称 | 描述 | 优点 | 缺点 |
---|---|---|---|
1-坚持CSMA | 发送信息时监听信道,一空闲下来就立即传输,信道忙也一直监听,如果发送时冲突就等待随机时长之后再监听 | 立即发送,利用率高 | 如果多台设备同时监听,那么会发生冲突 |
非坚持CSMA | 发送信息时监听信道,如果空闲就立即传输,信道忙就随机等待一段时间后再监听 | 冲突发生的几率减少 | 因为需要等待,所以利用率不高 |
p-坚持CSMA | 发送信息时监听信道,空闲时以概率p进行传输,概率1-p不传输。信道忙就随机等待一段时间后再监听 | 冲突减少的同时效率也比较高 | 即使发生冲突也要坚持发送数据,资源被浪费 |
CSMA/CD 协议
为什么先听后发还会有冲突?
因为链路实际有长短,发送数据需要时间,这个时间内可能就被其他节点当成空闲状态导致发生碰撞。
传播时延对载波监听的影响:
如何确认碰撞后的重传时机?
由此我们可以想到最小帧长的问题,因为如果帧太短,帧都发送完了才检测到碰撞导致停止,导致无法停止碰撞。
CSMA/CD 协议应用于有线局域网。
CSMA/CA 协议
CSMA/CD 协议应用于有线局域网。但在无线局域网,不能简单搬用 CSMA/CD 协议,特别是碰撞检测部分。
原因:
- 接收信号的强度往往会远小于发射信号的强度,且在无限介质上信号强度的动态变化范围很大,若要实现碰撞检测,则硬件上的花费过大。
- 无线通信中,并非所有的站点都能听到对方,即存在“隐蔽站”问题。
CSMA/CA 协议的工作原理:
CSMA/CD 协议 vs CSMA/CA 协议:
轮询访问介质访问控制
主要包括两大类,一个是轮询协议,另一个是令牌传递协议。
轮询访问介质访问控制既不共享时间,也不共享空间。
轮询协议:
- 轮询开销:在随着服务的节点越多,需要用于查询是否发送数据发送的数据帧也就越多,会造成一定开销。
- 等待延迟:因为这是轮流“邀请”,所以难免某个节点需要发送数据,但是主节点还在较远的需要里有需求的节点那边,导致需求得不到立即响应。
- 单点故障:代表主机故障,无法“邀请”从属结点发送数据。
令牌传递协议:
令牌传递协议主要应用于令牌环局域网。
令牌:一组特殊的比特组成的MAC控制帧。
在节点之间没有收发数据的需求时,令牌在节点之间循环。
发送数据的流程:
- 当一个节点需要时就可以获得这个令牌,然后修改这个令牌的状态(空闲→占用)。
- 再将令牌与数据帧结合,让其在节点构成的环之间流动。
- 不是目的地的节点收到令牌也不接受,直接略过,目标节点收到信息并复制一份到本地(传输完成),因为是个闭环,所以发送节点最后得到令牌。
- 最后,发送令牌的节点对令牌的内容进行检查,如果发现数据出错还要重新发一遍。
局域网
局域网(Local Area Network,LAN)自然就是局部地区形成的一个区域网络,其特点就是分布地区范围有限,可大可小,大到一栋建筑楼与相邻建筑之间的连接,小到可以是办公室之间的联系。局域网自身相对其他网络传输速度更快,性能更稳定,框架简易,并且是封闭性,这也是很多机构选择的原因所在。局域网自身的组成大体由计算机设备、网络连接设备、网络传输介质3大部分构成,其中,计算机设备又包括服务器与工作站,网络连接设备则包含了网卡、集线器、交换机,网络传输介质简单来说就是网线,由同轴电缆、双绞线及光缆3大原件构成。
基本概念和体系结构
概括:范围大小,速度快,延迟低,节点平等。
传输介质:
局域网 | 常用介质 |
---|---|
有线局域网 | 双绞线,同轴电缆,光纤 |
无线局域网 | 电磁波 |
拓扑结构:
三种特殊的局域网拓扑实现:
- 以太网(使用范围最广的局域网):逻辑拓扑是总线型结构,物理拓扑是星型/拓展星型结构。
- 令牌环(IEEE 802.5):逻辑拓扑是环形结构,物理拓扑是星型结构。
- FDDI(光纤分布数字接口,IEEE 802.8):逻辑拓扑是环形结构,物理拓扑是双环结构。
介质访问控制方法:
局域网的分类:
IEEE 802 标准:
IEEE 802 系列标准是 IEEE 802 LAN/MAN 标准委员会制定的局域网、城域网技术标准。其中最广泛使用的有以太网、令牌环、无线局域网等。这一系列标准中的每一个子标准都由委员会中的一个专门工作组负责。
IEEE 802 标准定义的局域网参考模型只对应 OSI 参考模型的数据链路层和物理层,并将数据链路层拆分成:
- 逻辑链路控制(LLC)子层
- 媒体接入控制(MAC)子层
以太网
特点:
- 逻辑拓扑是总线型结构,物理拓扑是星型/拓展星型结构。
- 信息以广播方式发送。
- 使用 CSMA/CD 进行访问控制。
以太网采用2种方式简化通信:
- 采用无连接的工作方式,不对发送帧编号,不要求接收方确认,提供不可靠的服务。
- 数据都采用曼彻斯特编码,便于接收端提取同步信号。
以太网传输介质和拓扑结构的发展:
10BASE-T以太网:
适配器和MAC地址(科普,仅作了解):
以太网MAC帧:
以太网MAC帧最短要64B,其中数据最短要46B。
高速以太网:
速率 ≥ 100Mb/s的以太网。
无线局域网
IEEE 802.11:
- 星型拓扑
- 在MAC层使用CSMA/CA协议
使用 IEEE 802.11 系列协议的局域网称为 Wi-Fi。
IEEE 802.11的MAC帧头格式:
无线局域网的分类:
- 有固定基础设施无线局域网
- 无固定基础设施移动自组织网络
有固定基础设施无线局域网
采用 IEEE 802.11系列协议标准。
无固定基础设施移动自组织网络
各节点地位平等,中间结点都为转发结点(都有路由器的功能)。
虚拟局域网
传统局域网的局限:
虚拟局域网(Virtual Local Area Network,VLAN)是一组逻辑上的设备和用户,这些设备和用户并不受物理位置的限制,可以根据功能、部门及应用等因素将它们组织起来,相互之间的通信就好像它们在同一个网段中一样,由此得名虚拟局域网。
VLAN是一种比较新的技术,工作在OSI参考模型的第2层和第3层。VLAN可以为几乎局域网内任何信息集成系统架构逻辑拓扑和访问控制,并且与其它共享物理网路链路的信息系统实现相互间无扰共享。VLAN可以为信息业务和子业务、以及信息业务间提供一个相符合业务结构的虚拟网络拓扑架构并实现访问控制功能。
与传统的局域网技术相比较,VLAN技术更加灵活,它具有以下优点:
- 网络设备的移动、添加和修改的管理开销减少。
- 可以控制广播活动。
- 可提高网络的安全性。
VLAN的实现:
除了按端口划分,也可以按MAC地址划分VLAN。
例题:
广域网
广域网的基本介绍
广域网(Wide Area Network,缩写为 WAN),又称外网、公网。是连接不同地区局域网或城域网计算机通信的远程网。通常跨接很大的物理范围,所覆盖的范围从几十公里到几千公里,它能连接多个地区、城市和国家,或横跨几个洲并能提供远距离通信,形成国际性的远程网络。广域网并不等同于互联网。
PPP 协议
点到点协议(Point to Point Protocol,PPP)是为在同等单元之间传输数据包这样的简单链路设计的数据链路层协议,是使用串行线路通信的面向字节的数据链路层协议。这种链路只支持全双工操作,并按照顺序传递数据包。设计目的主要是用来通过拨号或专线方式建立点对点连接发送数据,使其成为各种主机、网桥和路由器之间简单连接的一种共通的解决方案。
PPP 协议满足的要求:
- 简单
- 封装成帧
- 透明传输
- 兼容多种网络层协议
- 满足多种类型链路
- 差错检测:但不能纠错,所以PPP 协议是不可靠协议。
- 检测连接状态
- 网络层地址协商
- 数据压缩协商
PPP 协议无需满足的要求:
- 纠错
- 流量控制
- 对帧进行编号
- 多点线路
PPP 协议有三个组成部分:
- 链路控制协议(LCP)
- 网络控制协议(NCP)
- 一个将 IP 数据封装到串行链路的方法。
PPP 协议的状态图:
PPP 协议的帧格式:
HDLC 协议
HDLC 协议是可靠传输协议。
HDLC 协议的站:
HDLC 协议的帧格式:
PPP 协议 vs HDLC 协议
为什么HDLC协议更可靠,但是我们使用PPP协议?
因为现在网络要求高,数据链路层、网络层本来就是不可靠的尽力传输,差错控制这些复杂的交给了传输层。
数据链路层设备
集线器(Hub)
集线器主要在物理层应用。
集线器可以扩展以太网,但是集线器会无脑将一个设备的所有消息转发到集线器所连的所有设备,故会将所连接的所有设备变成一个大的冲突域,同时只能有两台设备进行通信,且设备越多,冲突越多。
网桥(Bridge)
使用网桥时,由于网桥会根据 MAC 地址进行过滤,所以不会形成冲突域。
网桥通常只有2个端口。
网桥的分类:
- 透明网桥
- 源路由网桥
透明网桥:
通过自学习来构建转发表。每一个通过网桥的数据包都会被记录下网桥收到数据时数据对应的地址和网桥自己的接口,通过许许多多的数据包的构造的缓存,网桥就可以知道哪个数据包在哪个接口,以后如果要传输数据包就知道要往哪个接口发送数据包了。
源路由网桥:
在发送时,直接将最佳路径放到帧首部。
那么网桥如何获得最佳路径?
通过广播方式想目标地址发送广播,此时可能会经过不同路由产生不同的路径,目标地址收到后再将每一条路径都发一个响应帧给网桥,网桥经过对比就知道哪个接口最快了。
以太网交换机
以太网交换机本质:多端口网桥。
以太网交换机的两种交换形式:
以太网交换机的自学习功能:
冲突域和广播域
示例: