考研408笔记——计算机网络

文章目录

计算机网络

什么是时延带宽积?

时延带宽积 = 传播时延(Propagation Delay) × 链路带宽(Bandwidth)

单位通常是 “比特(bit)”,也可换算为 “字节(Byte,1Byte=8bit)”,其物理含义是:从数据的 “第一个比特” 发出,到 “第一个比特” 到达接收端的这段时间内,发送方一共向链路中发送了多少比特的数据

波特率与比特率

波特率是指发送方1s内能发多少个码元,而比特率指的是发送方1s内能发多少个比特。因此波特率与比特率的关系,实际上就是一个码元与一个比特之间的关系。那码元和比特之间有什么关系呢?

我们物理层传递信息时,最常见的就是用高低电平表示0/1两种状态,但是在实际工程中,信号的状态往往不止两种,比如红绿灯的颜色,就有红黄绿三种状态,这时候你用0/1就来表示就不够了,那怎么办呢?

工程师的解决方法是,再加一个比特位,用两位比特位,就可以用00 / 01 / 10 / 11表示四种状态,我们让00这个状态位作为备用状态,用其余三个数来分别表示红黄绿三种状态

类似的,如果我一个实际工程中的信号,有64中不同的状态,那我就需要用6位比特位来表示。而我们所说的码元,就是前面提到的一个信号,如果一个码元有M种不同的状态,那该码元就需要用 log M(向上取整)个比特位来表示。一个码元= log M 个比特(M是一个码元的状态数),这就是码元与比特之间的关系

进而我们也可以得出比特率和波特率之间的关系:
比特率(bps) = 波特率(Baud) × log₂(M)

奈奎斯特定理

奈奎斯特采样定理:要无失真地恢复一个最高频率为 fc 的模拟信号,采样频率必须 ≥ 2 fc

奈奎斯特定理:对于无噪声的理想低通/带通信道,其中信号的最大传输速率就是2B log M(M是码元的状态总数)。如果信道中信息传输的比特率高于这个最大速率,就会发生严重的码间串扰,使得接收端正确地识别信息变得非常困难

香农极限定理

奈奎斯特定理计算的是无噪声的理想低通/带通信道的极限传输速率,但是我们知道,噪声是无处不在的,香农定理就是对存在高斯白噪声的信道,考虑信道中噪声的信噪比,计算这种情况下信道的极限传输速率
在这里插入图片描述
值得注意的是,并不是说香农考虑了信噪比,香农极限速率就一定比奈奎斯特极限速率小,有时候也会出现相反的情况,因此在实际计算过程中,这俩极限速率我们能算都要算,取一个更小的作为极限速率即可

编码与调制

什么是编码?什么又是调制?

这个问题其实非常简单,将数据转换为数字信号的过程,就叫做编码,而将数据转换为模拟信号的过程,就叫做调制

为什么要编码?

为什么要编码大家应该比较好理解,毕竟信号在生活中是多种多样的,什么光信号、声信号、文字信号、表情信号等等,但是这些信号计算机又认不得,计算机就只认得数字信号。想让计算机帮我们处理生活中各种各样的信号,首先就得让计算机先认识这个信号。那咋样能让计算机认识这个信号呢?就是通过编码,将生活中的各种各样的信号,转化成计算机认识的数字信号。

为什么要调制?

为什么要调制呢?前面我们说过,数据转换为模拟信号的过程,就叫做调制,其实这个定义是不贴切的,或者说是不符合实际目的的。实际上调制干的真正的事情,是给基带信号叠加高频载波!

那什么是基带信号?为什么要给它加高频载波呢?

基带信号是未经调制的原始电信号(如语音、文字、图像转换后的低频电信号),其频率范围通常集中在几Hz到几kHz(例如语音基带信号约300-3400Hz),基带信号的频率是很低的!

为啥要给它加高频载波呢?主要是因为基带信号无法满足工程中远距离、多用户的传输需求

为什么实际无线传输不能用基带信号?

为啥基带信号没法满足远距离传输要求?这个问题也等价于问你低频信号传输的缺陷,或者问你为什么实际无线传输不用基带信号,而要用高频信号。问题的原因主要有下面3点

1. 辐射基带信号所需的天线尺寸太大了,工程上无法实现。而辐射高频信号的天线尺寸就不是很大,工程上可以实现

首先,无线通信依赖电磁波在空气中传播,而电磁波的辐射能力与频率直接相关,根据电磁学原理,要让电磁波有效辐射到空间中,发射天线的尺寸需与电磁波波长处于同一数量级(通常要求天线长度≥波长的1/4)。

而基带信号频率极低,因此对应的波长极长:以300Hz的语音信号为例,其波长λ = c/f(c为光速,约3×10⁸m/s),计算得λ = 1000km。如果我们要想让基带信号有效辐射到空间中,就必须准备至少250km长的天线,这在工程上完全无法实现。

而相对应的,高频载波频率极高(如无线电广播常用MHz级、手机通信用GHz级),对应的波长极短:例如1GHz载波的波长仅0.3m,天线长度只需7.5cm(1/4波长)即可高效辐射,这是无线通信的前提。

2. 低频信号的频率范围太窄了,无法实现频分复用,进而无法实现“多用户同时通信”

若多个用户同时直接传输基带信号,所有信号的频率范围重叠(均为低频段),会在信道中相互干扰,导致接收端无法区分不同用户的信号——这相当于“多人在同一间屋子用同样音量说话,没人能听清”。

而高频载波的频率范围极宽(如射频频段覆盖kHz到THz),通过给不同用户的基带信号“搭载”不同频率的高频载波(即“频分复用”),可将多个信号分配到信道的不同频率区间(“频段”),实现“多用户并行传输且互不干扰”。

例如:调频广播(FM)中,不同电台使用不同的载波频率(如88MHz、92.5MHz),听众通过调节收音机接收频率,即可选择特定电台的信号。

3. 基带信号衰减速度快,抗干扰能力弱,高频信号抗干扰能力强,传播的距离更远
基带信号频率低、带宽窄,直接传输时易受外界低频干扰(如工业电机噪声、市电50Hz干扰),且信号在传输过程中(尤其是有线信道)的衰减速度快,导致传输距离极短(通常仅几十米)。
高频载波的优势在于:

  • 抗干扰性更强:高频段的外界干扰(如工业噪声)更少,且调制后可通过“调幅(AM)、调频(FM)、调相(PM)”等方式,将基带信号的信息加载到载波的幅度、频率或相位上,其中调频/调相的抗干扰能力远优于直接传输基带信号;
  • 传输距离更远:高频电磁波在空间中衰减更慢(尤其在微波、卫星通信中),且可通过中继站放大,实现跨城市、跨洲际传输。

调制的本质

前面我们论述的中心思想就是,工程中信号传输不能用基带信号,而要用高频信号。那如何将我们要传输的基带信号转化成工程中要用到的高频信号呢?答案就是给基带信号叠加高频载波! 基带信号的核心问题是“频率太低”,而高频载波的作用是将基带信号的频率“整体搬移”到高频段,具体过程可类比为:

  • 基带信号 = “货物”(需要传输的信息);
  • 高频载波 = “卡车”(承载货物的载体);
  • 调制 = “将货物装上卡车”(将基带信号与载波结合,形成高频已调信号);
  • 解调 = “到达目的地后卸货”(接收端从已调信号中提取出原始基带信号)。

通过这一“搬移”,信号既能满足无线辐射的天线尺寸要求,又能在高频段实现多用户复用,同时降低传输损耗和干扰。

编码的方式有哪些?

数字信号的编码方式

1)归零(RZ)编码。用高电平表示1、低电平表示0(或者相反),每个码元的中间均跳变到零电平(归零)
在这里插入图片描述

2)非归零(NRZ)编码。与RZ编码的区别是不用归零,一个时钟全部用来传输数据,编码效率最高。但NRZ编码的收发双方存在同步问题,为此需要双方都带有时钟线。
在这里插入图片描述

3)反向非归零(NRZI)编码。用电平的跳变表示0、电平保持不变表示1。USB 2.0的编码方式就是NRZI编码。
在这里插入图片描述

4)曼彻斯特编码。每个码元的中间都发生电平跳变,电平跳变既作为时钟信号(用于同步),又作为数据信号。可用向下跳变表示1、向上跳变表示0,或者采用相反的规定。
在这里插入图片描述

5)差分曼彻斯特编码。数据的表示在于每个码元开始处是否有电平跳变:无跳变表示1,有跳变表示0。差分曼彻斯特编码拥有更强的抗干扰能力。

在这里插入图片描述

曼彻斯特编码和差分曼彻斯特编码在每个码元的中间都发生电平跳变,相当于将一个码元一分为二,编码速率是码元速率的2倍,二者所占的频带宽度是原始基带宽度的2倍。标准以太网使用的就是曼彻斯特编码,而差分曼彻斯特编码则被广泛用于宽带高速网中。
在这里插入图片描述

模拟信号的编码方式

主要包括三个步骤,即采样、量化和编码,常用于对音频信号进行编码的 PCM 编码

1)采样是指对模拟信号进行周期性扫描,将时间上连续的信号变成时间上离散的信号。(注意:采样过程必须遵循奈奎斯特采样定理)
2)量化是指将采样得到的电平幅值按照一定的分级标度转换为对应的数值并取整,这样就将连续的电平幅值转换为了离散的数字量。采样和量化的实质就是分割和转换。
3)编码是指将量化得到的离散整数转换为与之对应的二进制编码

调制的方式有哪些?

这个非常好理解,直接看图就懂了
在这里插入图片描述

模拟调制技术:AM、PM、FM、DPM

基本的调制方式有三种,分别是调幅、调频和调相,思路也很简单,将信号1调制为高振幅/高频率/高相位,将信号0调制为低振幅/低频率/低相位

比如我们用调频的调制方式,如果原信号是模拟信号,那么调制方式就叫FM(调频),如果原信号是数字信号,调制方式就叫FSK(频移键控)。

同理,对于调幅,如果原信号是模拟信号,那么调制方式就叫AM(调幅),如果原信号是数字信号,调制方式就叫PSK(幅移键控)。

对于调相,如果原信号是模拟信号,那么调制方式就叫PM(调相),如果原信号是数字信号,调制方式就叫PSK(相移键控)。

调相又分为绝对调相和相对调相。例如我们刚刚说的PM和PSK,就属于绝对调相,而用前后两个信号的相位不变表示0,相位差为π表示1,这就属于相对调相。如果原信号是模拟信号,那么调制方式就叫DPM,如果原信号是数字信号,调制方式就叫DPSK

数字调制技术:ASK、PSK、FSK、DPSK

综上,我们已经介绍了四种模拟调制技术(AM、PM、FM、DPM)和四种数字调制技术(ASK、PSK、FSK、DPSK),下面以数字调制技术为例,给出四种数字调制技术的对比表格
在这里插入图片描述

正交幅度调制技术

前面我们介绍的基本调制技术,一个码元对应的状态只有两种,但是实际工程中往往一个码元需要对应多种状态,那对于这种情况,我们应该怎么办呢?最常见的做法就是直接加数值,比如调相本来就两个相位,现在我人为划分到4个相位,调幅本来就高低两个振幅,现在我多加几个振幅。

但这种增加的方式是线性增加,不太快。比如说实际工程中一个码元需要对应64种状态,那你要用调幅的话,就是要划分出64个不同的振幅,划分越密集,其实识别起来就越困难,这显然不是我们要的最优解决方案。

为了更进一步让调制技术能适应一个码元对应多种状态的情况,工程师们发明了正交幅度调制(QAM)

QAM在频率相同的前提下,将AM与PM结合起来,形成叠加信号。如果我们在用QAM调制时有 m m m个相位,每个相位有 n n n种振幅,那一个码元就能对应m×n种不同的状态。引入这种方案之后,同样的目标状态数,QAM就没有单纯AM或者PM划分的密集,实现起来也就更容易,识别也就越精准

前面我们已经说了QAM的设计思路,那现在假如说我们给你的通信波特率 B B B,求采用QAM调制方案,信道的数据传输速率 R R R,请你说说你的思路

其实谜底就在谜面上,信道通信波特率是B,说明信道1s最多传B个码元,下面我们只要搞清楚,一个码元有多少比特位就行了。那一个码元有多少比特位,其实主要就取决于一个码元对应多少种状态。前面我们刚刚讲过,采用QAM调制时,如果有 m m m个相位,每个相位有 n n n种振幅,那一个码元就能对应m×n种不同的状态,就需要用 log (mn) 个比特位来表示

因此我们信道的传输速率就是
R = B log ⁡ 2 ( m n ) R = B\log_2(mn) R=Blog2(mn) (单位为b/s)

传输介质

有线传输介质

  1. 双绞线
  2. 同轴电缆
  3. 光纤

局域网传输用到的主要有线传输介质,就是双绞线

  • STP叫做屏蔽双绞线
  • UTP叫做非屏蔽双绞线

其中STP中屏蔽的意思就是在双绞线的外面包一层屏蔽层,目的是进一步提高双绞线的抗电磁干扰能力

无线传输介质

无线传输介质指的主要就是电磁波在空气、水、以及固体介质中传播,其中电磁波根据频段的不同又可以分为

  1. 无线电波
  2. 微波
  3. 红外线
  4. 激光

电磁波频率从低到高的顺序为:

无线电波 < 微波 < 红外线 < 激光(可见光/光学波段)

电磁波种类典型频率范围特点
无线电波kHz ~ GHz最低频,用于广播、通信
微波GHz ~ THz比无线电高,用于雷达、微波炉、卫星通信
红外线THz 级高频,常用于热成像、遥控器
激光(可见光/光学)数百 THz频率更高,是定向的相干光

其中波长越长的电磁波,越容易绕过障碍物,衍射能力越强,也就是我们俗称的,穿透力越强。

而频率越高的电磁波,其能量越高,带宽也越大(通信速率快)

物理层的接口特性

  1. 机械特性。指明接口所用接线器的形状和尺寸、引脚数目和排列、固定和锁定装置等。
  2. 电气特性。指明在接口电缆的各条线上的电压范围、传输速率和距离限制等。
  3. 功能特性。指明某条线上出现的某一电平的电压的意义,以及每条线的功能。
  4. 过程特性,也称规程特性。指明对不同功能的各种可能事件的出现顺序。

中继器和集线器

中继器和集线器都是工作在物理层,用于传输信号的设备,下面我们就来介绍一下这俩的区别和联系(简单来说,集线器就是一个多端口的中继器)

什么是中继器?中继器用来干啥的?

  • 中继器的主要功能:
    👉 接收信号 → 放大/整形 → 再转发
  • 中继器的用途:
    👉 延长网络传输距离(让信号走得更远

中继器只处理两个端口(输入 + 输出),相当于一个信号修复器。信号在传输过程中会有衰减,途径中继器时,中继器就会对衰减的信号进行放大和整形,让他们尽量保持原样(就像人在骑马赶路的过程中,会越来越饿,中继器就是路上的驿站,人在驿站里吃点喝点,再上路就不饿了)


什么是集线器?集线器是用来干啥的?

集线器的本质就是一个多端口的放大器,既然是多端口的放大器,那么它的功能就不只是单纯对信号进行整形和放大,他最大的功能就是当一个 “广播站”

在同一个局域网内,多台主机可以通过集线器相连,形成一个星形网络拓扑(下图中间的那玩意,就可以是一个集线器)
在这里插入图片描述
形成这样的网络拓扑结构之后,如果有一台主机往集线器发数据,集线器就会在内部进行信号的整形和放大,然后将处理好的信号向除了输入端口之外的所有端口输出出去,这样就可以实现小型网络内信息的广播式传输了

当然,中间是集线器的星型网络缺点也很明显:

  1. 只能用于广播通信,无法实现定向通信
  2. 如果两台主机同时向集线器发送数据,这俩的数据都会损坏,谁也别想正常传输

为了解决这样的问题,我们后面又引入了交换机,可以隔离冲突域,实现定向传输

CRC循环冗余校验

我们直接给个具体的例子,来理解CRC冗余校验的方法。

  1. 通信双方协商生成多项式
    假如说我的原始数据是1011,如果收发双方约定好了,要对数据进行CRC冗余校验,那他们会首先约定好一个生成多项式,比如在这个例子中,我们约定生成多项式G=1011。这时候我们就可以确定生成多项式的最高阶数:r=3

  2. 发送方计算CRC冗余码

    • 我们先将原始数据后面补上r个0,得到1011000
    • 然后再拿1011000除以生成多项式1011(模2除法),得到的商就是我们的CRC冗余码
  3. 发送方将原数据和冗余码拼接到一起,然后传递到信道中

  4. 接收方收到数据之后,用生成多项式除以该数据,如果能除尽(没有余数),说明信息没错,如果除不尽,说明信息错了

SDN

SDN(Software-Defined Networking,软件定义网络)是一种新提出的网络架构理念,其核心是将网络的控制平面与数据转发平面分离,通过软件化的控制器对网络进行集中式管理和动态编程,其特性可以概括为 “集中控制、软件化、解耦”

在传统网络中,路由器、交换机等硬件设备同时承担“决策(控制)”和“转发(数据)”功能 。引入SDN之后,SDN就将控制逻辑从硬件中剥离,交给统一的软件控制器,硬件(如路由器和交换机)仅需要按控制器指令转发数据就行,这就大大减轻了硬件负担,提高了转发效率

SDN体系遵循“分层解耦”原则,经典架构分为数据平面、控制平面、应用平面三层,层间通过标准化接口通信,确保各层可独立演进。

1. 数据平面(Data Plane):“转发层”

  • 核心角色:由物理交换机、虚拟交换机(如Open vSwitch)等“转发设备”组成,仅负责数据分组的接收、转发与过滤,不具备自主决策能力。
  • 工作机制:设备内置流表(Flow Table),流表中记录匹配规则(如IP地址、端口号)和执行动作(如转发到指定端口、丢弃、修改字段);设备通过OpenFlow协议接收控制器下发的流表,严格按流表指令处理数据。
  • 典型设备:支持OpenFlow的物理交换机(如华为CE系列、Cisco Nexus系列)、虚拟交换机(OVS、VMware vSwitch)。

2. 控制平面(Control Plane):“大脑层”

  • 核心角色:由SDN控制器(Software-Defined Network Controller)组成,是SDN网络的“决策中心”,负责全网拓扑管理、路由计算、流表下发、策略控制等核心逻辑。
  • 核心能力
    • 全网拓扑感知:通过与数据平面设备通信(如LLDP、BDDP协议),实时获取设备连接关系,构建统一的网络拓扑视图。
    • 集中式控制:根据应用层需求(如带宽保障、流量调度),动态计算最优转发路径,生成流表并下发到数据平面设备。
    • 协议适配:向上提供“北向接口”对接应用层,向下提供“南向接口”(如OpenFlow、NETCONF)对接数据平面,实现跨厂商、跨设备的统一管理。
  • 典型控制器:OpenDaylight(开源,Linux基金会主导)、ONOS(开源,电信级场景)、华为iMaster NCE、Cisco APIC。

3. 应用平面(Application Plane):“业务层”

  • 核心角色:由各类网络应用程序组成,基于控制器提供的API开发,将用户业务需求(如负载均衡、防火墙、VPN)转化为“网络策略”,并下发给控制器执行。
  • 特点:应用与底层硬件解耦,开发者无需关注具体设备型号,只需通过“北向接口”(如REST API、gRPC)调用控制器能力,快速实现业务创新(例如:云场景中“按需创建网络”)。

SDN的关键技术与协议

不同平面间的通信依赖标准化技术与协议,是SDN实现“灵活管控”的基础:

技术/协议所属平面核心作用典型场景
OpenFlow控制-数据平面(南向)控制器与转发设备的“通信标准”,定义流表结构、数据交互格式,实现跨厂商设备统一管控数据中心网络、校园网的流量调度
NETCONF/YANG控制-数据平面(南向)NETCONF负责设备配置的“增删改查”,YANG定义配置数据的“结构化模型”,适用于传统设备的SDN化改造运营商骨干网、企业广域网的设备配置
REST API/gRPC应用-控制平面(北向)应用程序调用控制器能力的“接口标准”,REST API基于HTTP(简单易用),gRPC基于HTTP/2(高性能)云平台(如OpenStack)与SDN控制器的对接
Overlay技术(VXLAN/GRE)数据平面解决传统VLAN的“4096个网段上限”问题,通过“隧道封装”将二层流量封装在三层网络中传输,实现跨地域的虚拟网络隔离多数据中心互联、云租户网络隔离
控制器集群技术控制平面多控制器组成集群,实现“负载分担”和“高可用”,避免单点故障导致全网瘫痪电信级网络、核心业务系统的高可靠需求

IPv6

IPv6(互联网协议第六版)是为解决IPv4(互联网协议第四版)地址耗尽等核心问题而设计的下一代互联网协议,下面是IPv6与IPv4的核心差异对比

对比维度IPv4IPv6
地址空间32位二进制,地址总数约43亿个(2³²)128位二进制,地址总数约3.4×10³⁸个(2¹²⁸),可理解为“每个地球人分配数万亿个地址”
地址格式点分十进制(如192.168.1.1),8组十进制数(0-255)冒分十六进制(如2001:0db8:85a3:0000:0000:8a2e:0370:7334),8组十六进制数(0-FFFF),支持零压缩(如2001:db8:85a3::8a2e:370:7334
地址类型单播(Unicast)、广播(Broadcast)、组播(Multicast)单播、组播、任播(Anycast)(多个节点共享同一地址,数据包仅发送给最近节点),取消广播(用组播替代)
配置方式需手动配置或依赖DHCP(动态主机配置协议),无状态自动配置支持有限支持SLAAC(无状态地址自动配置),设备可自动从路由器获取前缀并生成完整地址,无需DHCP服务器;也支持DHCPv6(有状态配置)
头部结构固定头部20字节,可选头部需额外添加,字段多(如校验和、选项),处理效率低固定头部40字节,结构简化(移除校验和、IP选项等,将“选项”改为“扩展头部”),仅在需要时加载扩展头部,路由转发效率提升
安全性无原生安全机制,需依赖TCP层(如TLS)或第三方协议(如IPsec)IPsec(IP安全协议)原生集成,强制支持身份认证、数据加密和完整性校验,从网络层保障通信安全
QoS支持依赖“服务类型(TOS)”字段,仅8位,对流量优先级的区分能力有限新增“流量类别(Traffic Class)”和“流标签(Flow Label)”字段,可精准标记不同类型流量(如视频、语音),优先保障高实时性业务
MTU(最大传输单元)最小MTU为576字节,需通过“路径MTU发现”协商,易因分片影响效率最小MTU为1280字节(“路径MTU发现”默认关闭),减少分片概率,提升传输稳定性

IPv6的优缺点

  • 优点
    • 地址无限:128位地址空间彻底解决地址耗尽问题,支持物联网(数十亿终端)、5G、边缘计算等场景的大规模连接。
    • 无需NAT:每个设备可直接获取公网IPv6地址,P2P应用无需穿透,通信效率大幅提升。
    • 原生安全:IPsec集成保障数据传输的机密性和完整性,降低网络攻击风险。
    • 简化配置:SLAAC自动配置减少人工操作,尤其适合物联网等无人值守场景。
    • 更好的QoS:流标签字段可精准调度流量,满足5G、VR/AR等对带宽和时延敏感的业务需求。
  • 缺点
    • 兼容性问题:部分老旧设备(如早期路由器、工业控制设备)、操作系统或应用程序不支持IPv6,需升级或替换。
    • 部署成本高:初期需改造网络基础设施(如升级路由协议、部署IPv6网关),且需对运维人员进行技术培训。
    • 过渡复杂度:IPv4与IPv6无法直接互通,需依赖过渡技术(如双栈、隧道),增加网络管理难度。

IPv4到IPv6的过渡策略
由于IPv4无法立即被替代,目前采用“渐进式过渡”策略,核心技术包括:

  1. 双栈技术(Dual Stack)
    设备(如路由器、电脑)同时支持IPv4和IPv6协议栈,可根据目标地址自动选择对应的协议通信。这是目前最主流的过渡方式,例如手机同时获取IPv4和IPv6地址,访问IPv4网站用IPv4,访问IPv6网站用IPv6。

  2. 隧道技术(Tunneling)
    将IPv6数据包封装在IPv4数据包中,通过IPv4网络传输,到达目标网络后再解封装为IPv6数据包。常见方案包括:

    • 6to4:适用于有公网IPv4地址的设备,自动建立隧道。
    • ISATAP:适用于企业内网,将IPv6地址嵌入IPv4地址中,实现内网IPv6通信。
  3. 地址转换技术(NAT64/NAT46)
    类似IPv4的NAT,将IPv6地址与IPv4地址进行转换,实现两类网络的互通。例如,IPv6设备可通过NAT64网关访问IPv4网站,反之通过NAT46访问IPv6网站。

VLAN

什么是VLAN?

VLAN 是虚拟局域网(Virtual Local Area Network)的缩写。所谓的虚拟局域网,简单来说,就是把物理上连在一起的网络,在逻辑上 “拆分成多个互不干扰的小网络”,让不同 VLAN 的设备无法直接通信,就像不在同一个物理网段一样。

为什么要有VLAN?

引入VLAN主要是为了解决传统局域网的三大问题:

  1. 为了缩小广播域,减少拥塞,: 传统 LAN 中,一个设备发送的广播包会传给所有设备,导致 “广播风暴”。VLAN 能将广播域限制在单个 VLAN 内,减少网络拥塞。
  2. 为了提升安全性: 不同 VLAN 的设备默认无法直接通信,需通过路由器等设备转发。这能防止敏感数据被其他 VLAN 的设备非法访问,比如公司的 “财务 VLAN” 和 “员工办公 VLAN” 可隔离。
  3. 未来灵活划分网络: 无需改变物理布线,就能根据 “部门、功能、权限” 等逻辑维度划分网络。例如,即使市场部员工和技术部员工坐在同一区域,也能通过 VLAN 归到各自部门的网络中。

如何实现VLAN?

VLAN 的实现依赖VLAN 标签(Tag),核心流程分两步:

  1. 打标签:当数据帧从设备发送到支持 VLAN 的交换机时,交换机会给数据帧添加一个 “VLAN 标签”,标签中包含该设备所属的 VLAN ID(如 VLAN 10、VLAN 20)。
  2. 识别与转发:其他交换机接收数据帧后,会读取 VLAN 标签,只将数据帧转发到相同 VLAN ID 的端口,不同 VLAN ID 的端口无法直接接收,从而实现逻辑隔离。

VLAN的划分方式

该表格从核心维度出发,清晰对比不同划分方式的差异,可直接用于场景选型参考。

划分方式核心依据适用场景优点缺点配置难度
基于交换机接口交换机物理端口设备位置固定的场景,如办公室工位、服务器机房1. 配置最简单,上手快
2. 稳定性高,无额外解析开销
1. 灵活性差,设备换端口需重新配置
2. 不适合移动设备
★☆☆☆☆
基于MAC地址设备物理MAC地址移动设备多的场景,如笔记本办公、无线打印机1. 设备可任意移动,无需重配
2. 绑定设备,安全性较高
1. 需收集所有设备MAC,工作量大
2. 存在MAC地址伪造风险
★★★☆☆
基于IP地址设备IP地址/IP网段按业务网段划分的场景,如财务网段、研发网段1. 无需绑定端口/MAC,适配网段规划
2. 配置逻辑与IP架构契合
1. 设备改IP可能脱离指定VLAN
2. 依赖IP配置准确性
★★☆☆☆
基于协议/应用数据包协议类型/应用端口需按业务流量隔离的场景,如视频会议、ERP系统1. 能精准管控特定业务流量
2. 适配复杂业务网络需求
1. 配置复杂,需解析数据包
2. 对交换机性能要求高
★★★★☆

介质访问控制

什么是介质访问控制?为什么要介质访问控制?

在教室里上课时,往往同一时刻只有一个人在讲话(或者是老师在授课,或者是学生在回答问题)。为什么呢?这主要是因为,如果教室里有多个人同时说话,他们的声音混在一起,可能谁的话都没法听清楚。

局域网内的通信也是一样:如果同一局域网内的不同设备共享一个广播信道,假如说这时候有多个设备同时往广播信道中发数据,它们的电磁波混在一起,就可以会对原本的波形造成破坏,导致谁也没法正确传递信息。

为了让局域网中的设备能够正常通信,我们就要对通信做一些约束(制定相关的通信协议),确保通信不会相互干扰

什么场景下会用到介质访问控制技术?

只有使用广播信道的数据链路层(多个主机公用同一条信道),才需要考虑介质访问控制。如果是使用点对点全双工的数据链路层,则不需要考虑介质访问控制的问题,因为信道上同时只会有一个主机使用,不可能产生冲突。

随着技术的发展,在有线网领域,使用交换机和点对点链路的交换式局域网相比于使用广播信道的共享式局域网具有更高的通信效率与更好的稳定性,时至今日前者已经彻底取代了后者。然而,由于无线信道本质上是广播信道,所以在无线局域网中仍然大量使用共享媒体技术。

注意:点对点链路不一定是全双工的,对于半双工的点对点链路仍然需要使用介质访问控制技术

介质访问控制的方式有哪些?

介质访问控制在技术上可以分为:

  • 静态划分信道
    • 即:信道划分介质访问控制。
  • 动态媒体接入控制,又可以分为:
    • 随机访问介质访问控制
    • 轮询访问介质访问控制。

接下来将会依次介绍这几种技术。

信道划分介质访问控制

信道划分介质访问控制主要是通过多路复用技术来实现。多路复用具体又可以分为:频分复用、时分复用、波分复用、码分复用

频分复用


在上图中,我们将局域网中的带宽分成了三个子频带,要求主机A发送消息的基带频率必须在频带1中,主机B的基带频率必须在频带2中,主机C的基带频率必须在频带3中

注意:频分复用要求信道总频率宽度大于所有子信道频率宽度之和。同时,为了保证子信道之间互不干扰,需要在它们之间加入隔离带

时分复用(TDM)

时分复用(TDM,Time Division Multiplexing)是基于时间尺度的多路复用。该技术首先将全部的传输时间分割成一个个等长的时间片段,称为TDM帧;再在每一个TDM帧中再划分出等长的时间片段,称为时隙(Time Slot)。每台主机在每一个TDM帧占用固定序号的时隙,这样每台主机只能在指定的时间内发送数据,也就实现了在一条信道上传输多个信号。
在这里插入图片描述

注意看上图,在时分复用技术中,主机A只能在每一个TDM帧的第一个时隙内发送数据,主机B只能在每一个TDM帧的第二个时隙内发送数据,主机C只能在每一个TDM帧的第三个时隙内发送

统计时分复用(STDM)

为什么有了TDM,还要有STDM?
由于时分复用是按固定的顺序依次分配时隙,所以当某个主机被分配到时间片时正好没有数据需要传输,那就只能让传输信道空闲,这样就导致复用后信道的利用率不高。为了解决这个问题,我们就引入了统计时分复用(STDM,Statistic TDM)。

统计时分复用(STDM,Statistic TDM),又称异步时分复用,是一种改进的时分复用,能够有效解决一般的时分复用信道利用率不高的问题

STDM是如何解决时分复用信道利用率不高的问题的?
统计时分复用通过集中器(concentrator)实现,发送方的各个主机的数据将被存储到集中器的输入缓存中,集中器按顺序扫描缓存,将缓存中的数据填入STDM帧中,当一个帧的数据填满后,就将此帧发送出去。所以统计时分复用的时隙是动态分配的
在这里插入图片描述

一般一个STDM帧能容纳多个时隙,但由于主机总会有空闲的时刻,为缩短STDM帧的填满时间以尽快发出STDM帧,STDM帧能容纳的时隙数往往小于主机的数量(如图3.25,一个STDM帧能容纳3个时隙,但一共有5台主机)

波分复用(WDM)

波分就是按照光的不同波长段划分,而波长是频率的倒数乘以光速,所以波分复用(WDM,Wavelength Division Multiplexing)实际上就是对光信号的频分复用。

此技术运用在光纤中,能够做到使用一根光纤来同时传输多种不同频率的光信号,成倍增加了光纤的传输能力

码分复用(CDMA)

码分复用技术的基本设计方案
在CDMA中,每一个比特时间被划分为m个短的间隔,称为码片(chip)。给每台主机分配一个唯一的m bits码片序列。在主机发送数据时,以自身码片序列代表比特1,以其二进制反码代表比特0。

简便起见,令m = 8。假设主机A的码片序列为01011011,那么当它要发送1时,就发送01011011,当它要发送0时,就发送10100100。为方便计算,我们可以将码片序列中的1写为+1,0写为-1,将码片序列表示为一个向量:(-1 +1 -1 +1 +1 -1 +1 +1)。

当多个主机同时发送数据时,信道上的信号就是多个主机码片序列或其反码的叠加。

此外,CDMA要求分配给每个主机的码片是相互正交的。令A的码片序列为向量S,B的码片为向量T,所谓正交,是指向量S和T的规格化内积的值为0,即:

S ⋅ T = 1 m ∑ i = 1 m S i T i = 0 S \cdot T = \frac{1}{m} \sum_{i=1}^{m} S_iT_i = 0 ST=m1i=1mSiTi=0

显然,如果上式成立,那么 S ⋅ ( − T ) = 0 S \cdot (-T) = 0 S(T)=0 ( − S ) ⋅ T = 0 (-S) \cdot T = 0 (S)T=0 ( − S ) ⋅ ( − T ) = 0 (-S) \cdot (-T) = 0 (S)(T)=0。这意味着A的码片正反序列与B的正反序列之间,两两正交。

此外,向量S还满足 S ⋅ S = 1 S \cdot S = 1 SS=1 S ⋅ ( − S ) = − 1 S \cdot (-S) = -1 S(S)=1,即码片序列自己与自己的规格化内积为1,自己与自己的反码的规格化内积为-1。

为什么CDMA支持多个主机同时同频带通信呢?

我们通过以下例子给出解答。首先,假设信道上有发送方主机A、B、C,接收方主机X。X已经提前获知主机A、B、C的码片序列。此时主机X同时接受主机A、B、C发出的信息,其中主机A发送1,B发送0,C发送1,那么X接收到的是三者码片序列的和 S a + ( − S b ) + S c S_a + (-S_b) + S_c Sa+(Sb)+Sc

M a M_a Ma M b M_b Mb M c M_c Mc分别为主机X收到的来自A、B、C发送的信息。X若想分离出这些信息,只需分别将A、B、C的码片序列与这个和做内积,即

M a = S a ⋅ ( S a + ( − S b ) + S c ) = S a ⋅ S a + S a ⋅ ( − S b ) + S a ⋅ S c = 1 + 0 + 0 = 1 M_a = S_a \cdot (S_a + (-S_b) + S_c) = S_a \cdot S_a + S_a \cdot (-S_b) + S_a \cdot S_c = 1 + 0 + 0 = 1 Ma=Sa(Sa+(Sb)+Sc)=SaSa+Sa(Sb)+SaSc=1+0+0=1
M b = S b ⋅ ( S a + ( − S b ) + S c ) = S b ⋅ S a + S b ⋅ ( − S b ) + S b ⋅ S c = 0 + ( − 1 ) + 0 = − 1 M_b = S_b \cdot (S_a + (-S_b) + S_c) = S_b \cdot S_a + S_b \cdot (-S_b) + S_b \cdot S_c = 0 + (-1) + 0 = -1 Mb=Sb(Sa+(Sb)+Sc)=SbSa+Sb(Sb)+SbSc=0+(1)+0=1
M c = S c ⋅ ( S a + ( − S b ) + S c ) = S c ⋅ S a + S c ⋅ ( − S b ) + S c ⋅ S c = 0 + 0 + 1 = 1 M_c = S_c \cdot (S_a + (-S_b) + S_c) = S_c \cdot S_a + S_c \cdot (-S_b) + S_c \cdot S_c = 0 + 0 + 1 = 1 Mc=Sc(Sa+(Sb)+Sc)=ScSa+Sc(Sb)+ScSc=0+0+1=1

注意分离出的结果为-1时对应原信息为0,所以 M b = − 1 M_b = -1 Mb=1代表B发送的信息是0。通过上述方式X顺利获得了A、B、C想要发送的信息,也就实现了多个主机同时同频带通信。

CDMA具有频谱利用率高、抗干扰能力强、保密性强、运行成本较低等优点,主要应用于无线通信系统。

随机访问介质访问控制

静态信道划分用的好好的,为什么还要有动态介质访问控制?

静态信道划分方法需要预先分配好信道,能够有效地解决信道冲突问题。然而信道冲突的情况并不经常出现,在不发生冲突或冲突很少的时候,信道的固定分配将导致信道利用率很低。一条信道连接n台主机,在信道中只有一台主机发送数据,即不发生冲突的情况下,信道的利用率只有1/n。而动态划分信道方法可以有效解决这个问题。

下面我们就来介绍一下随机访问介质访问控制的发展史

ALOHA协议

  1. 纯ALOHA
    • 想发就发,发了之后开始计时,如果超时了还没收到确认信息,则视为发送失败,让发送方等待一段随机时间,再重新发送信息,重复上面的流程
  2. 时隙ALOHA
    • 时隙ALOHA协议将所有主机的时间同步,将时间划分为等长的时隙,做出如下规定:
      ◇ 主机只有在每个时隙开始的时刻才能发送帧。
      ◇ 发送一帧的时间必须小于等于时隙的长度。
      这样设计的目的主要是为了避免两帧部分重叠导致的冲突,从而进一步减少冲突发生的可能性

在这里插入图片描述

CSMA协议(载波监听多路访问)

ALOHA协议用的好好的,为什么要有CSMA协议?

原因肯定还是因为ALOHA协议的通信效率太低了(太随性了)。为了提高同一局域网内不同主机之间的通信效率,工程师们又提出了CSMA协议。

CSMA协议在ALOHA协议基础上进行改进,总体流程为:

  1. 每台主机在发送数据前先使用载波侦听装置检测当前信道是否被占用
    (载波是在通讯信道上传输信号的特定频率的电磁波。信道中有载波即说明信道正在被占用)
  2. 根据信道占用情况以及发送策略决定是否发送数据。
  3. 当发生冲突时,随机等待一段时间后,再重新开始侦听信道

CSMA协议中,主机发送数据的策略:

(1) 1-坚持CSMA:

主机在发送数据前,侦听信道

  1. 如果信道空闲,那么立即发送数据;
  2. 如果信道忙,则继续侦听直到信道空闲,再发送数据。

由于一监听到信道空闲就立即发送,所以信道的利用率较高,但多个主机同时发送导致冲突的可能性也较大。

(2) 非坚持CSMA:

主机在发送数据前,侦听信道

  1. 如果信道空闲,那么立即发送数据;
  2. 如果信道忙,则随机等待一个时间段后,再开始侦听。

为什么有了最初的1-坚持CSMA方案之后,还要有非坚持CSMA方案?

采用1-坚持CSMA方案,发生冲突的可能性很高。相较于1-坚持,非坚持CSMA降低了发生冲突的可能性,但同时也降低了信道的利用率。

(3) p p p-坚持CSMA

p p p-坚持CSMA只适用于分时隙的信道。主机在发送数据前,侦听信道;

  1. 如果信道忙,则推迟到下一个时隙重新侦听(相当于持续监听)

  2. 如果信道空闲,则有 p p p的概率立即发送数据, 1 − p 1-p 1p的概率推迟到下一个时隙重新侦听。

p p p-坚持CSMA既能有效减少冲突,又能比较充分地利用信道。

CSMA/CD

CSMA协议用的好好的,为啥要引入CSMA/CD协议?

CSMA 协议和 ALOHA 协议一样,通过是否收到确认信息判断有无发生冲突,这要求主机完整发送数据并等待特定时间,这段等待的时间里,主机就不能再随便朝外发送其他数据了,这就造成了一个问题,那就是采用CSMA协议进行通信的效率比较低!

为了解决这个问题,工程师们又设计出了载波侦听多路访问/碰撞检测(CSMA/CD,Carrier Sense Multiple Access with Collision Detection)。CSMA/CD协议在 CSMA 协议的基础上,加入了CD(Collision Detection,碰撞检测)的机制。所谓“碰撞检测”,是适配器边发送数据,边检测信道上电压的变化情况。

如果有多个主机同时发送数据,总线上的信号电压变化幅度将会变大。一旦主机检测到总线信号电压变化幅度过大,这就相当于告诉主机,信道中发生碰撞了。检测到碰撞之后,主机再通过相应的策略采取行动,比如等待一段时间再次发送

CSMA/CD 协议的适用范围
CSMA/CD 协议适用于总线形网络和半双工网络这类可能发生冲突的网络中,在全双工网络这种不会发生冲突的网络中,不必使用 CSMA/CD 协议。

CSMA/CD 协议的工作流程

  1. 适配器将需要发送的数据封装成帧,准备发送。
  2. 适配器对信道进行侦听,如果信道忙,则持续侦听直到信道空闲。等到信道空闲之后,开始发送数据帧
  3. 在发送的过程中,适配器持续侦听信道,进行碰撞检测。
    • 如果从开始传输到整个数据帧传输完毕一直未检测到碰撞,表明该帧发送成功。
    • 如果检测到碰撞,则终止发送,并发送一个拥塞信号,告诉局域网中的所有主机,当前信道并非空闲
  4. 检测到碰撞,终止发送之后。适配器会立即执行二进制指数退避算法,等待一段随机事件之后,继续监听信道。

争用期

在这里插入图片描述

通过上图我们发现,抢先发送数据的主机A,在开始发送数据帧后2τ时间内,一定能够知晓自己所发送的数据帧是否遭受碰撞。我们称这个时间2τ为争用期(Contention period)。

CSMA/CD协议规定:如果过了争用期,主机A还没检测到碰撞,那主机A就可以确定,此前发送的这个数据帧已经完好无损的到达目的主机了。

前面已经提到,CSMA/CD协议中,适配器在发送数据的过程中持续侦听信道,即侦听是持续到发送结束的。如果数据帧过小,使得在碰撞发生之前侦听就已经停止,那么就无法检测到碰撞,而误以为数据包已成功发送。显然,数据帧的大小需要足够大,才能保证如果发生冲突,发送方一定能侦测到。最小帧长与争用期以及传输速率之间有如下关系:

最小帧长 = 争用期 × 传输速率

以10Mbit/s以太网为例,其规定局域网中主机发送数据帧的最小帧长为64B。这个64B咋算的呢?

64 B = 512 b i t = 10 M b i t / s × 51.2 u s 64B=512bit=10Mbit/s × 51.2us 64B=512bit=10Mbit/s×51.2us

轮询访问介质访问控制

我随机访问介质访问控制用的好好的,为啥又要提出一个轮询访问介质访问控制?

当链路中大部分主机都较为频繁地发送数据时,多台主机同时发送数据的概率较高,链路负载大。此时如果使用随机访问介质访问控制,那么发生冲突的概率较高,传输效率较低。在这种场景下使用轮询访问介质访问控制,就可以避免因为高频率冲突而引起的时间损耗,提高传输效率

轮询访问介质访问控制的设计思路

所谓轮询访问介质访问控制,就是按一定的次序轮流询问链路中的各个主机,被询问到的主机才能进行数据传输,未被询问的主机必须等待。一种比较典型的轮询访问介质访问控制协议是令牌传递协议(token-passing protocol),其核心思路如下:

  1. 使用一个称为令牌(token)的特殊帧,该帧在链路中的各个主机之间以一个固定的次序交换。
  2. 当一台主机收到令牌时,如果它有数据需要发送,那么它将会持有令牌一段时间,在这段时间内可以发送数据。
  3. 当一台主机收到令牌时,如果它没有数据需要发送,那么立即将令牌转发给下一个主机。

由于令牌只有一个,所以同一时间只会有一台主机持有令牌,也就是只有一台主机在发送数据,因此不会发生冲突。令牌传递协议只涉及到了主机之间的令牌传递,所以其物理拓扑可以不是环形网,但其逻辑拓扑必须是环形网。

令牌传递协议的缺点

令牌访问协议适用于负载较大的链路,但也有一定缺点。例如,由于令牌按照特定次序进行交换,如果一个结点故障,令牌就无法正常传递,整个信道也因此崩溃。

常见的令牌传递协议有光纤分布式数据接口 FDDI 协议、IEEE 802.4 令牌总线协议、IEEE 802.5 令牌环协议等。

CSMA/CA

什么是CSMA/CA

CSMA/CA 是载波监听多路访问 / 冲突避免(Carrier Sense Multiple Access with Collision Avoidance)的缩写,核心是通过 “提前监听 + 主动避免” 的机制,解决无线环境中信号冲突难检测的问题。

为什么要有CSMA/CA

引入CSMA/CA的目的主要是为了解决无线通信的 “冲突痛点”

我们都知道在有线网络中,局域网通过CSMA/CD协议处理冲突,但在无线网络的环境下,采用CSMA/CD协议会有两个很大的问题:

  1. 隐藏终端问题:处于同一无线局域网下的设备 A 和设备 C 都能和 该局域网的 Wi-Fi 发射器(也叫无线接入点Access Point ,简称AP) 通信,但 A 和 C 之间距离远,互相收不到对方信号,因此彼此对对方来说都是不可见的。当设备A和C同时向Wi-Fi 发射器发信号时,这俩信号在wifi发射器附近相撞,都被损坏了
  2. 暴露终端问题:假如说设备 A 在向 AP 发数据时,附近的设备 B 想给C发送数据(默认提到的设备均在同一局域网下)。B在发之前进行了一次信道检测,发现A正在向 AP 发数据,认为以为信道忙,不敢发送数据。但其实 B 的信号不会和 A 冲突,因为他们的目的地不一样,这就造成了B本来能发,现在检测之后不敢发了

为了解决这些无线环境下的特殊问题,CSMA/CA 摒弃了 CSMA/CD(冲突检测)那样 “先冲突再解决”的解决策略,让各设备通过协商主动避免,从源头减少冲突。

具体来说,由于无线环境中存在“隐藏终端”问题(比如设备A和C都能连AP,但A和C互相看不见),直接发数据很容易就冲突。因此CSMA/CA规定,在发送具体的数据帧之前,要先发送RTS(请求发送)、CTS(允许发送)这样的提前“打招呼”的控制帧,配合ACK(确认帧)和NAV(网络分配向量),能精准预留信道,避免冲突。

在一个无线局域网中,有两个设备A和B,还有一个无线接入点AP,请问A在向B发送信息时,是不是绕过AP直接点对点通信的?

在常规的基础架构模式(Infrastructure Mode)无线局域网中,A向B发送信息不会绕过AP,必须经过AP转发。

这是由无线局域网的基础架构模式决定的,该模式也是家庭、企业中最常用的组网方式。

核心原因:基础架构模式的通信规则

  1. 数据链路层限制:在这种模式下,所有无线设备(如A和B)都只与AP建立无线连接,它们之间不直接进行链路层的通信。
  2. AP的转发角色:AP承担着类似“交换机”的角色,负责接收一个设备(如A)发送的数据帧,然后再将该数据帧转发给目标设备(如B)。
  3. 网络统一管理:这种通信方式能确保网络由AP统一管理,便于控制接入权限、分配资源和保障数据安全。

特殊情况:可实现点对点通信的模式
只有在特定的无线局域网模式下,A和B才能绕过AP直接通信,这种模式称为Ad-Hoc模式(也叫对等模式)。

  • 适用场景:通常用于临时组建的小网络,比如两台笔记本电脑在没有AP的情况下直接连接传文件。
  • 局限性:该模式缺乏中心管理,网络稳定性、安全性和可扩展性都远不如基础架构模式,因此很少用于正式的网络环境。

CSMA/CA的信道预约流程

在这里插入图片描述

CSMA/CA的工作流程

以“设备A→AP”传输为例
1. 载波监听+NAV检查(听+等)
设备A要给AP发数据时,先做两件事:

  • 物理监听:检测无线信道是否有其他信号(比如其他设备发的帧),若信道忙则进入随机退避。
  • NAV检查:查看本地维护的NAV定时器(NAV由之前收到的帧中“Duration字段”设置),若NAV未归零(表示信道被预留),则等待NAV倒计时结束。

只有“信道空闲+NAV归零”,且等待完DIFS(分布式帧间隔,约50微秒) 后,设备A才能发起下一步。

2. 设备A发送RTS帧(预约信道)
设备A向AP发送RTS帧(Request To Send,请求发送帧),帧中关键信息是“Duration(持续时间)”:

  • 这个Duration值 = RTS传输时间 + CTS传输时间 + 数据帧传输时间 + ACK传输时间 + 各帧间的SIFS间隔(短帧间隔,约10微秒)。

3. AP回复CTS帧(告诉设备A预约成功)
AP收到RTS帧后,会立即做两件事:

  1. 等待SIFS间隔(无需等DIFS,因为CTS是高优先级控制帧)。
  2. 向设备A发送CTS帧(Clear To Send,允许发送帧),帧中携带和RTS相同的“Duration值”。

其他设备收到CTS帧后,会用CTS中的Duration字段更新自己的NAV定时器。只要自己的NAV定时器不为0,就意味着当前信道正被其他设备用于通信,自己现在不能用。只有当自己的NAV定时器为0,且等待DIFS期间NAV定时器没更新时,自己才能尝试向AP发送RTS帧用于申请信道。

4. 设备A发送数据帧(设备A)
设备A收到CTS帧后,确认信道已预留,同样等待SIFS间隔,然后向AP发送封装好的数据帧(如TCP/UDP数据包)。

  • 此时其他设备的NAV仍在倒计时,不会发送任何帧,确保数据帧传输过程不被干扰。

5. AP回复ACK帧(确认数据接收)
AP成功接收数据帧后,会:

  1. 等待SIFS间隔,向设备A发送ACK帧(Acknowledgment,确认帧),表示“数据已收到,无错误”。
  2. 将ACK帧的Duration值设为0,其他设备收到ACK后,会将自己的NAV定时器清零,意味着“信道已释放,可重新竞争”。
  3. 若设备A在指定时间内没收到ACK(比如数据帧丢失),会认为传输失败,触发重传机制(A设备重新进入退避,再发RTS)。

关键帧的作用总结

帧类型发送方接收方核心作用关键字段
RTS发送端(如设备A)接收端(如AP)请求预留信道,告知其他设备“即将占用信道的时间”Duration(总预留时间)
CTS接收端(如AP)发送端+其他设备确认预留信道,再次广播“信道占用时间”,避免隐藏终端冲突与RTS相同的Duration
ACK接收端(如AP)发送端+其他设备确认数据接收成功,告知其他设备“信道已释放”Duration=0(释放信道)

一句话总结核心逻辑
通过“RTS打招呼→CTS确认→数据传输→ACK收尾”的四步交互,配合NAV定时器“圈定信道占用时间”,让所有设备提前知道“什么时候能发、什么时候不能发”,从源头避免无线环境的冲突。

二进制退避算法

为了避免多个设备同时监听空闲后再次冲突,CSMA/CA 引入了 “二进制指数退避算法”,核心逻辑如下:

  1. 设备第一次冲突后,从 “0 到 2¹-1”(即 0 和 1)中随机选一个数,乘以 “一个时间片的长度” 作为等待时间。(最常见的时间片长度是9us)
  2. 若第二次冲突,从 “0 到 2²-1”(即 0、1、2、3)中随机选等待时间,以此类推。

每冲突一次,等待时间的随机范围翻倍,第十次冲突之后,等待时间的选取范围就被固定为[0, 210 - 1],第十六次冲突之后,放弃发送

这种机制能大幅降低连续冲突的概率,让信道利用更高效。

注意:在当前仍广泛使用的 802.11n/ac(Wi-Fi 4/5)网络中,9μs 是最主流的时间片长度;而早期的 802.11b 网络中 20μs 较为常见;

而在CSMA/CD协议的二进制退避算法中,通常选取2RTT(一个争用期)作为一个时间片的长度

例题

在这里插入图片描述

停止等待、后退N帧(GBN)、选择重传(SR)协议

三种可靠传输机制的对比

以下是停止等待、后退N帧、选择重传三种ARQ协议的核心对比表格。对于选择重传协议和后退N帧协议来说,其实我们重点记一下它们的窗口大小区别就行:假设一共用n位比特位来编号,选择重传协议中发送窗口和接收窗口的大小就都是2n-1,而后退N帧协议中发送窗口的大小是2n -1,接受窗口大小是1。

还要注意一点就是,后退N帧协议采用累计确认机制,而选择重传不是

对比维度停止等待协议(Stop-and-Wait ARQ)后退N帧协议(Go-Back-N ARQ)选择重传协议(Selective Repeat ARQ)
窗口大小发送窗口=1,接收窗口=1发送窗口>1(最大为(2^n - 1),(n)为帧编号位数),接收窗口=1发送窗口=接收窗口(最大均为(2^{n-1}))
发送方式发送一帧后必须等待确认,才能发送下一帧可连续发送窗口内所有帧,无需等待单帧确认可连续发送窗口内所有帧,无需等待单帧确认
接收处理仅按序接收,收到错帧/失序帧则丢弃,等待重传仅按序接收,收到失序帧则丢弃该帧及后续所有帧可接收失序帧,缓存正确帧,仅丢弃错帧
确认机制每帧单独确认(ACK针对单帧)累积确认(ACK确认按序到达的最后一帧)每帧单独确认(ACK针对每个正确接收的帧)
重传机制超时/错帧时,仅重传当前未确认的那一帧超时/错帧时,重传从出错帧开始的所有未确认帧超时/错帧时,仅重传指定的出错帧(其他正确帧无需重传)
信道利用率极低(发送方大部分时间在等待确认)较高(连续发送提升效率,但错帧时冗余重传会降低利用率)最高(仅重传出错帧,减少冗余)

三种可靠传输机制的信道利用率

对停止等待协议来说,其信道利用率计算如下
在这里插入图片描述

U = T D T D + RTT + T A U=\frac{T_{\text{D}}}{T_{\text{D}}+\text{RTT}+T_{\text{A}}} U=TD+RTT+TATD

对于GBN和SR协议来说,他们都属于是发送窗口大于1的协议,信道利用率的计算公式也是一样的
在这里插入图片描述

U = n T D T D + RTT + T A U=\frac{nT_{\text{D}}}{T_{\text{D}}+\text{RTT}+T_{\text{A}}} U=TD+RTT+TAnTD

如果nTd大于Td+RTT+Ta,那么信道利用率就是1

路由算法与路由协议

什么是路由算法?路由算法是用来干啥的?

我们知道信息在网路中传输,其实就是从网络中的一个节点传到另一个节点。那对于一个高度联通的网络,从一点出发到另一点的路径肯定不止一条,这些路径有长有短,有简单的有复杂的,有便宜的有贵的,对于工程师来说,肯定是希望找到一条最短最简单最便宜的路径,让信息在这条路径上传输。

那如何找到这样的最佳路径呢?就是通过路由算法来找!路由算法的作用就是要帮我们要找到一条从源路由器到目的路由器的"最佳"路径(通常"最佳"路径指的都是具有最低费用的路径)

那路由算法具体是怎么帮我们找到最佳路径的呢?
这个就和路由算法的种类有关。不同种类的路由算法帮我们找最佳路径的思路是不一样的

静态路由算法与动态路由算法

最简单的就是静态路由算法,即由工程师在草稿纸上提前算好最佳路径,然后直接输进路由器里面

但是这样的算法有很大的缺陷,因为在当今这么复杂的网络中,其中任意一个节点坏了,或者新增了一个节点,都很有可能会使得你提前在草稿纸上算好的静态最优解失效。

为了能让路由器实时获取当前网络中任意两点之间路径的最优解,工程师们又提出了动态路由算法,其思路就是实时获取当前网络拓扑,然后实时计算出最优解。

常用的动态路由算法根据实现思路不同,也可分为两类:距离-向量路由算法和链路状态路由算法

距离-向量路由算法

距离-向量算法的基础是Bellman-Ford算法,它用于计算单源最短路径(如果图中没有负权边,迪杰斯特拉算法也能用)。我们对每个结点以自身为源点执行Bellman-Ford算法,就可以在全局上求解任意两点之间的最短路径问题。

典型的距离向量路由算法就是RIP算法,它采用跳数作为距离的度量

链路状态路由算法

讲解具体的算法之前,我们要先认识一下,什么叫做路由器的链路状态?
路由器的链路状态会告诉我们这个路由器都和哪些路由器相邻(从这个路由器出发有哪些链路),以及各链路的代价(权重)

链路状态路由算法要求路由器:

  1. 主动测试所有相邻结点的状态
  2. 定期地将链路将状态传播给所有其他结点。

这样就可以使得每个结点都具有整个网络的拓扑结构图,每个结点都知道全网共有多少个结点、哪些结点是相连的、其代价是多少等。知道了这些,每个结点就都可使用Dijkstra最短路径算法计算出到达其他结点的最短路径了

在链路状态算法中,结点每收到一个链路状态报文,就会更新一次自己的网络拓扑图。只要拓扑图发生了变化,就会立即使用Dijkstra算法重新计算到达所有其他结点的最短路径。

典型的链路状态路由算法是OSPF算法

两种动态路由算法的对比

在距离-向量算法中,每个结点仅与它的直接邻居交谈,需要向它的邻居发送自己完整的路由表(路由表往往很大,因此交换代价较大)。

在链路状态算法中,每个结点通过广播的方式与所有其他结点交谈,但是发送的信息并不是自己内部完整的路由表,而只是告诉其他节点,有哪些节点与我相邻,以及对应链路的代价是多少

内部网关协议与外部网关协议

在一个自治系统内部使用的路由选择协议就叫做内部网关协议(IGP)。不同自治系统可以采用不同的内部网关协议。比如自治域A用RIP,自治域B用OSPF

若源主机和目的主机处在不同的自治系统中(两个自治系统可能使用不同的IGP)。则当数据报传到一个自治系统的边界时,就需要使用一种域间路由选择协议,来具体告诉网关路由器,下一步应该往哪个自治域转发。这个协议就叫做外部网关协议(ExternalGatewayProtocol,EGP)。目前使用最多的外部网关协议是BGP-4

自治系统之间的路由选择也称域间路由选择,自治系统内部的路由选择也称域内路由选择。

RIP、OSPF和BGP对比

三种路由协议的比较

协 议RIPOSPFBGP
类型内部内部外部
路由算法距离-向量链路状态路径向量
传递协议UDPIPTCP
路径选择跳数最少代价最低较好,非最佳
交换结点和本结点相邻的路由器网络中的所有路由器和本结点相邻的路由器
交换内容当前本路由器自己的路由表本路由器与其相邻的所有路由器之间的链路状态首次:整个路由表;非首次:有变化的部分

MAC帧、IP数据报、UDP数据报、TCP数据报首部字段对比

协议/字段首部长度尾部长度说明
MAC帧14字节4字节尾部为FCS(帧检验序列)
IP数据报20字节(最小),最长60字节首部长度可变,由IHL字段标识
UDP数据报8字节首部固定长度
TCP报文段20字节(最小),最长60字节首部长度可变,含可选字段

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

PPP协议

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

UDP

UDP数据报结构

在这里插入图片描述

UDP的首部字段

在这里插入图片描述

UDP首部(8字节)

字段长度(字节)说明
源端口2发送端端口号
目的端口2接收端端口号
长度2UDP首部(8字节)+ 数据的总字节数(与伪首部的“UDP总长度”一致)
校验和2初始为0,计算完成后填入结果

UDP伪首部介绍

UDP校验和的计算不仅包含UDP数据报本身(首部+数据),还引入了伪首部(仅用于校验和计算,不实际传输),目的是让UDP能校验源IP、目的IP、协议类型等网络层信息,确保数据报被正确交付到目标。

伪首部(Pseudo Header)结构(12字节)

字段长度(字节)说明
源IP地址4发送端IP地址(32位)
目的IP地址4接收端IP地址(32位)
保留字段1固定为0(填充作用)
协议类型1表示承载的上层协议,UDP固定为17(十进制)
UDP数据报总长度2UDP首部+数据的总字节数(与UDP首部中的“长度”字段一致)

在这里插入图片描述

发送端计算UDP校验和的步骤

  1. 构造校验和计算范围
    将“伪首部 + UDP首部(校验和字段设为0) + 数据”拼接成一个连续的二进制序列

  2. 填充对齐
    若总长度(伪首部+首部+数据)为奇数,则在末尾补一个字节的0(确保总长度为偶数,便于按16位分组计算)

  3. 按16位分组求和
    将上述序列按16位(2字节)分成若干组,将所有组中的16位数按照二进制加法全加起来

    • 加法过程中若产生进位(超过16位),则将进位加到结果的最低位(循环进位)。
  4. 取反得到校验和
    步骤3加完之后,对步骤3的总和取二进制反码,得到的16位值即为UDP校验和,填入UDP首部的“校验和”字段。

接收端校验UDP数据报的过程

  1. 接收端按同样规则构造“伪首部(使用接收端解析的IP地址等) + 收到的UDP首部 + 数据”,并补充0(若长度为奇数)。
  2. 按16位分组进行二进制反码加法(包括收到的校验和字段)。
  3. 若计算结果为全1(16位均为1),则数据未出错;否则,判定为出错(UDP协议对错误数据报的处理是直接丢弃,不反馈也不重传)。

注意:

  • 校验和的可选性:UDP校验和在IPv4中是可选的(若为0表示未计算),但在IPv6中是强制的。
  • 校验和的局限性:校验和仅能检测错误,无法纠正错误,且存在极小概率的漏检(如两比特同时翻转可能被掩盖)

HTTP1.1的持久连接与流水线机制

要介绍这俩概念,必须要和HTTP1.0的非持久连接以及HTTP1.1的非流水线机制对比着来理解

我们直接看一个具体的例子
在这里插入图片描述

上面这道题,浏览器不支持并行TCP连接,也就是说我们客户端与服务器之间任何时刻最多只能建立一个TCP链接,这俩之间不能同时存在多个TCP连接。(其实就是告诉你,不能进行IO多路转接)

非持久连接

如果浏览器和服务器采用HTTP1.0版本协议进行通信,这就意味着服务器每返回一次请求之后,都会主动断开TCP链接。

现在浏览器需要向服务器请求一个页面和七张图片,那就需要发送八次请求,由于浏览器不支持并行TCP连接,因此着8个请求就只能串行发送。HTTP1.0版本协议不支持长连接,因此每发起一个新请求,都需要先发起三次握手重新建立TCP连接,大致的过程就如下图所示

在这里插入图片描述

持久连接

注意,现在我们采用HTTP1.1版本的协议之后,这个协议支持持久连接了,因此我服务器返回web页面置换,不会立即释放连接,而是会继续监听来自对方的下一个请求。传输一个页面和七张图片,浏览器总共只需要发起一次三次握手(最开始请求页面之前发起,之后发图片就不用三次握手了)

引入持久连接之后,双方的通信过程就被优化成了下面的样子

在这里插入图片描述

注意,上面的串行发送,本质上还是停止等待机制,即我一次就传一个请求,收到上一个请求的回复之后,我才发下一个请求。这样做的最大问题就在于,如果中间有某个请求的回复丢失了,那就无法继续发送,发送方就被立即阻塞住了

TCP

TCP三次握手

在这里插入图片描述

TCP四次挥手

在这里插入图片描述

TCP通信过程中,三次握手与四次挥手的请求和确认报文占不占用序号字段?

对客户端来说

  • 只有发起三次握手的请求报文(SYN=1的请求报文)和发起四次挥手的请求报文(FIN=1的请求报文),即使不传递信息,也要单独占用一个序号。
  • 其余从客户端发出的TCP报文段,其数据部分有多少字节,就占用多少序号

对于服务器端来说

  • 只有三次握手过程中第一次响应报文(第二次握手,SYN和ACK标志位均为1的那个响应报文),和四次挥手过程中最后一次响应报文(FIN=1的响应报文),需要单独占用一个字节(即使不传递信息,也要单独占用一个序号)
  • 其余从服务器端发出的TCP报文段,其数据部分有多少字节,就占用多少序号
通信阶段报文类型序号占用情况补充说明
三次握手1客户端→SYN占用(+1)携带客户端初始序号(ISN)
三次握手2服务器→SYN+ACK占用(+1)携带服务器初始序号(ISN)
三次握手3客户端→ACK不占用仅确认,无数据时不占序号
四次挥手1客户端→FIN占用(+1)标记客户端数据发送完毕
四次挥手2服务器→ACK不占用仅确认FIN,无数据传输
四次挥手3服务器→FIN占用(+1)标记服务器数据发送完毕
四次挥手4客户端→ACK不占用最终确认,完成连接关闭

表格已清晰区分各类报文的序号占用规则,关键信息直观呈现。要不要我再补充一份序号变化流程的分步示意图说明

TCP拥塞控制

拥塞控制的思路是慢开始+拥塞避免+快重传+快回复,大家肯定非常熟悉了,下面我们主要讲一下拥塞控制中的一些细节问题

网络拥塞的处理

无论在慢开始阶段还是在拥塞避免阶段,只要网络出现拥塞(触发了超时重传),发送方就要

  1. 把慢开始门限ssthresh设置为出现拥塞时的发送方的cwnd值的一半(但不能小于2)
  2. 把拥塞窗口cwnd重新设置为1,执行慢开始算法。

这样做的目的是迅速减少主机发送到网络中的分组数,使得发生拥塞的路由器有足够时间把队列中积压的分组处理完

快重传和快回复的处理

触发快重传和快恢复机制的条件是:发送方收到了3个冗余的ACK报文

当连续收到3个冗余ACK(重复确认)时,发送方会:

  1. 把慢开始门限ssthresh调整为当前cwnd的一半。
  2. 把cwnd值也调整为当前cwnd的一半(即等于ssthresh值)
  3. 然后开始执行拥塞避免算法,使拥塞窗口缓慢地线性增大。

流水线机制

为了解决这个问题,工程师们又引入了流水线机制,不再让发送方收到上一个请求的回复之后,才发下一个请求,而是让他一次性地并行发送多个请求

在这里插入图片描述

流水线模式下的队头阻塞问题

看到这里是不是感觉流水线模式很牛b,没错,它确实很快,但他还是有弊端的。主要原因就在于接收端的接受窗口是有限的。假如说我通过流水线,一次性向对方发送了10个tcp报文段,其中1号报文段最早发出,但是在过程中丢了。接收方的接收窗口大小是10,现在已经成功接收到了2~9号报文段,请问此时发送方再给请求方发送11号报文段,接收方还能接受吗?答案是不能,因为接收窗口大小就是10,在没有收到1号报文段前,窗口不能滑动,此时只能将11号报文段丢弃。

只有当接收方成功接收到1号报文段时,它才能将1~10号报文段中的数据整体交付给上层,同时将滑动窗口向右滑动10个单位

有人说,2~9号报文段都来了,为啥不能先交付上去呢?原因很简单,请看下面的例子

现在有一段文字 “山本我日你仙人”
其中山本这俩字在1号报文段中,我日你仙人 在2号报文段中,现在我没有收到1号报文段,而是直接将我日你仙人交付给上层用户,用户就会很生气,你没事骂我干嘛,但其实这个信息表达的意思是,要日山本的仙人。

将不完整的信息提交上去,非常不利于信息的准确传递,1-10号报文段的内容在逻辑上是连续的,因此我们不能只提交后面的,不提交前面的。

好了,到现在为止,我们应该已经了解流水线模式的弊端了,它还有一个比较学术的名字:“队头阻塞问题”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值