计算机网络:数据链路层协议(2)

目录

[一、无线通信协议 802.11](#一、无线通信协议 802.11)

(1)为什么无线通信不采用碰撞检测,而使用碰撞避免?

(2)碰撞避免的原理

二、集线器与交换机

(1)集线器与冲突域

(2)交换机

[2.1 存储转发型交换机](#2.1 存储转发型交换机)

[2.2 直通型交换机](#2.2 直通型交换机)

三、虚拟局域网VLAN

(1)VLAN引入的背景

(2)VLAN的工作原理

(3)Access口和Trunk口


数据链路层是计算机网络体系中承上启下的关键层次,它屏蔽了物理层的电气、无线等底层差异,为网络层提供了可靠的点到点与多点到点通信服务。在有线以太网的基础之上,现代网络进一步延伸出无线通信、交换机级联与虚拟局域网(VLAN)等核心技术,共同构成了局域网通信的基石。

本文将从无线通信协议 802.11 出发,解析无线环境下碰撞避免的底层逻辑;再过渡到集线器与交换机 的演进,对比共享式与交换式网络的本质区别;最后深入虚拟局域网 VLAN,讲解其如何通过标签技术实现广播域隔离与跨设备通信。这些内容不仅是理解局域网通信的核心,也是构建工业级项目协议、设计可靠通信架构的必备知识。

一、无线通信协议 802.11

无线通信其实出发点和有线通信一致,但是由于其采用某一特定频段的电磁波通信,而电磁波相较于有线中更容易被干扰、丢失。所以无线通信协议增加了可靠确认协议等部分,用以缓解高频丢失的问题。

(1)为什么无线通信不采用碰撞检测,而使用碰撞避免?

在有线通信的以太网协议中,我们直接让各主机先发送,再检测是否有碰撞,如果有则终止发送并等待后续重传。那为何在无线通信中无法使用简单的碰撞检测呢?为什么不能使用交换机的思想:一对一全双工通信,直接避免碰撞检测?

首先一台WIFI路由器设备只能发送特定频段的信号,比如常见的有2.4G/5G。这意味着你的其他设备也必须工作在相同频段下,否则路由器无法解析电磁波信号。而一旦各设备的频段相同了,就会使得信道只有一个!类似于有线中的共享总线架构,你可以把空气想象成原来有线场景下的总线,所以半双工总线下碰撞是无法避免的,必须得有适当的策略来规避。

其次,当你的手机A在发送电磁波时,手机附近的电磁场非常强烈,对于其他设备B的电磁波有强烈的削弱作用,设备B的信号很难被A的无线模块捕捉识别到,即使识别到了也非常模糊,容易产生错乱。但更重要的是:电磁波极其容易被障碍物阻挡(生活中我们把门关上,WIFI效果就变差很多),使得手机A和设备C可能根本无法感知到对方存在,误以为没有数据碰撞。但是设备B作为A、C的中间设备,他能接收双方的数据,从而收到的是两者融合的乱码,直接丢弃,导致A、C都以为网络很差。

这两个原因使得无线通信不能使用碰撞检测CMSA/CD,而必须研究出新的碰撞避免策略CMSA/CA。

(2)碰撞避免的原理

碰撞避免的本质是"先预约、再发送、不抢道"的交通规则,好比红绿灯,在可以通行前先给你来个倒计时,红灯倒计时结束后你才能通过,而你通过的同时又开始绿灯倒计时,记录你剩余的通过时间,从根本上避免了碰撞的发生。

1. 信道监听与等待(DIFS)

  • 发送前先监听信道:
    • 若信道空闲 → 等待DIFS(分布式帧间间隔) 时间,确认信道稳定空闲后再竞争。
    • 若信道忙 → 等待信道空闲 + 额外 DIFS 时间,再进入退避阶段。
  • 作用:避免多个设备同时抢信道,减少初始碰撞概率。
  • DIFS就是一个稳定区间,用于确保空闲一定不是随机的。

2. 发送 RTS 预约信道

  • 发送端向 AP 发送 RTS(请求发送) 帧,帧首部的 Duration 字段写入: 从现在开始,到我发完数据 + 收到 ACK 为止的总时长。
  • 所有能听到 RTS 的设备,都会将自己的 NAV(网络分配向量) 计时器设为这个时长,倒计时结束前禁止发送。
  • 作用:第一次广播预约,通知 "能听见我的设备" 信道被占用。
  • 其中AP指的是中心路由器,他是所有设备的中转入口。

3. AP 回复 CTS 补全预约

  • AP 收到 RTS 并通过 CRC 校验后,等待 SIFS(短帧间间隔) ,然后回复 CTS帧。
  • CTS 帧首部同样写入剩余预约时长,所有能听到 AP 的设备(包括隐蔽终端) 都会更新自己的 NAV 计时器。
  • 作用:第二次广播预约,专门通知 "听不见发送端,但能听见 AP 的隐蔽终端",彻底避免隐蔽终端碰撞。
  • 其中SIFS是极短的空闲间隔,他的作用是让刚刚处于接收的AP的射频硬件转变成发送模式,同时让AP的无线通信协议层准备好CTS帧,准备发送。

4. 发送数据帧并再次预约

  • 发送端收到 CTS 后,等待 SIFS 时间完成 CRC 校验,然后发送数据帧
  • 数据帧首部再次写入剩余预约时长,强化信道占用通知。
  • 此时所有设备的 NAV 计时器仍在倒计时,确保数据传输期间无人抢道。这里的SIFS不再是为了切换射频硬件的工作模式,而是为了更新预约时间T和添加校验字段CFS,并且等待时空中的CTS电磁波消散,避免和自己产生混乱叠加。

5. 接收端回复 ACK 确认

  • 接收端收到数据帧并通过 CRC 校验后,等待 SIFS 时间,回复 ACK(确认) 帧。
  • 若发送端收到 ACK,说明本次传输成功;若未收到,则认为数据丢失 / 碰撞。
  • 这里的SIFS仍然是为了给ACK添加FCS校验字段。

6. 重传与指数退避

  • 未收到 ACK 时,发送端会重传,最多重传 16 次。
  • 每次重传前,会使用二进制指数退避算法:随机等待一段时间再竞争信道,避免多次重传加剧碰撞。

值得注意的是:在无线通信中,由于干扰、信号强度衰减等问题,每发一帧都需要重新类握手竞争(即空闲等待后,才发送RTS预约请求),即使你设备A可能要发100帧,你也需要进行100次上述过程。

不过由于这个预计时间是理想化的,可能不是特别精准,所以除了预计时间外,还会采取硬件检测模块,双保险保证同一时间内只有一个设备在发送数据。

二、集线器与交换机

(1)集线器与冲突域

由于物理导线各方面的限制原因,两台主机之间的通信距离不能太远,例如10-BASE-T以太网中两台主机的最远通信距离就是100米,一旦超过200米信号就会衰减到无法正确识别,所以诞生了一种设备叫做中继器,他能将信号再生从而延长通信距离。

同时为了解决多台设备导线冗杂的问题,又发明了集线器,它采取总线架构让多主机以半双工、竞争发送数据,节省了一定网线资源。我们称为集线器。注意:现代集线器通常内置了中继器模块,我们后续讨论的集线器均指此类。

由于集线器是一个纯粹工作在物理层的模块,他不会对数据链路层以上的任何东西产生任何影响(比如速率、帧格式等等)。但正是因为总线架构,使得同一个集线器连接的各个主机共享总线带宽,形成冲突域(即之前我们在以太网帧中讨论的数据碰撞问题)。

(2)交换机

交换机相比于集线器做了一定的提升,通常能起到隔离冲突域的作用,使得各主机工作在全双工通信方式下,大幅提高了各主机带宽,并直接避免了数据碰撞问题。

而实现精准全双工转发,离不开"自学习算法",它的核心就是:每次保存发送方MAC地址和端口的映射表,如果表中没有记录则泛洪广播。这里有兴趣的同学可以查看相关资料加深学习。

而交换机通常有两种设计方式:存储转发型交换机、直通型交换机。

2.1 存储转发型交换机

存储转发型交换机由于内存模块的引入,使得交换机处理器可以方便的检查数据完整性、正确性。甚至还能对其进行格式转换、速率转换等,比如端口A收到的是1类格式报文,我可以转变成2类型格式报文发往端口B。

缺点:延迟大,需要将整个帧进行检查。

优点:可靠性高,可以支具有不同速率的端口的交换、差错检测等。

2.2 直通型交换机

直通型交换机无处理模块,在对MAC地址进行检测后就会立马转发到对应端口,不具备任何转换功能。

优点:延迟小只检查目的地址。

缺点:可靠性低,无法支持具有不同速率的端口的交换。

三、虚拟局域网VLAN

(1)VLAN引入的背景

在早期没有路由器、没有VLAN技术的时代,所有的交换机都通过级联的方式连接,这意味着:每个交换机下的任意一台主机都属于同一个局域网!看似可以方便的让各机器进行通信,但是却及其容易引发泛洪,使得整个局域网的利用率不高,还可能引发网络波动等问题。

于是人们引入了VLAN技术,在软件层面将交换机切割成几个不同的部分,每部分单独构成一个局域网。

(2)VLAN的工作原理

IEEE802.1Q帧(俗称DotOneQ)对以太网帧格式进行了扩展,插入了4字节的VLAN标记(tag),而VLAN标记的最后12位称为VLAN标识符VID,它唯一地标志了以太网帧属于哪一个VLAN。

不过值得注意的是:VID的取值范围0~4095(0~2-1),即0和4095都不用来表示VLAN,因此用于表示VLAN的VID有效取值范围为1~4094。

在划分VLAN后,同一个VLAN中的主机无论是广播帧还是单播帧都只能在同一个LAN中进行发送,如果想 跨LAN进行数据传输必须经过网络层设备。

(3)Access口和Trunk口

1. Access 口(接入口)

作用:只属于一个 VLAN,接终端设备

特点:

  • 只允许 一个 VLAN 通过
  • 发出去的帧:不带标签(untagged)
  • 收进来的帧:交换机自动打上该端口的 VLAN 标签

你可以理解:电脑不知道 VLAN 是什么,也看不懂标签。 Access 口就是 "帮电脑偷偷打标签、撕标签" 的翻译官。
2. Trunk 口(干道 / 级联口)

作用:同时传输多个 VLAN,接交换机 / 路由器

特点:

  • 允许 所有 VLAN 或指定多个 VLAN 通过
  • 必须带标签(tagged)
  • 交换机之间靠标签区分是哪个 VLAN

你可以理解:Trunk 就是一条 "多车道高速公路", 每辆车都标着 VLAN 号,不会走错道。

相关推荐
学习3人组2 小时前
WSS排错检查
网络协议·https·ssl
EasyDSS2 小时前
EasyDSS视频流媒体WebRTC技术解析:智慧校园直播、点播与会议一体化融合实践
运维·网络·人工智能·架构·音视频·m3u8·点播技术
袁小皮皮不皮2 小时前
【HCIA】第二章 ipv4协议以及子网划分与集合
linux·运维·服务器·网络·网络协议·tcp/ip·信息与通信
Ken_11153 小时前
Linux放开端口
linux·服务器·网络
艾莉丝努力练剑3 小时前
System V IPC内核实现精析
linux·运维·服务器·网络·c++·人工智能·学习
NaclarbCSDN3 小时前
[特殊字符] HTTP 超详细详解 | 从入门到看懂浏览器请求
网络·网络协议·http
云边云科技_云网融合3 小时前
百度首页中宇联云计算SD-AIoT:万物互联时代,从 “能连上” 到 “用得放心” 的技术革命
网络·数据库·人工智能
艾莉丝努力练剑3 小时前
【Linux:文件 + 进程】进程间通信进阶(1)
linux·运维·服务器·网络·c++·人工智能·进程
菜萝卜子3 小时前
【k8s】K8s网络打通:CalicoBGP模式对接OpenWrt/FRR实战
网络·容器·kubernetes