计算机网络——数据链路层-介质访问控制
一、介质访问控制方法
在局域网中, 介质访问控制(medium access control)简称MAC,也就是信道访问控制方法,可以
简单的把它理解为如何控制网络节点何时发送数据、如何传输数据以及怎样在介质上接收数据,
是解决当局域网中共用信道的使用产生竞争时,如何分配信道的使用权问题
介质访问控制分为以下3类:
1) 信道划分介质访问控制
2) 随机访问介质访问控制(争用型介质访问控制)
3) 轮询访问介质访问控制
1、信道划分介质访问控制
当传输介质的带宽超过了传输单个信号所需的带宽时,人们就通过在一条介质上同时携带多个传输信号的方法来提高传输系统的利用率,这就是所谓的多路复用,也是实现信道划分介质访问控制的途径。
(1)频分多路复用
(2)时分多路复用
(3)波分多路复用
(4)码分多路复用
2、频分复用 FDM(Frequency Division Multiplexing)
• FDM是一种将多路基带信号调制到不同频率载波上再进行叠加形成一个复合信号的多路复用技术。
• 用户在分配到一定的频带后,在通信过程中自始至终都占用这个频带。
• 频分复用的所有用户在同样的时间占用不同的带宽资源(请注意,这里的“带宽”是频率带宽而
不是数据的发送速率)。
• 优点:充分利用了传输介质的带宽,系统效率较高;由于技术比较成熟,实现也较容易
3、时分复用(TDM)
• 时分复用则是将时间划分为一段段等长的时分复用帧(TDM 帧)。每一个时分复用的用户在
每一个 TDM 帧中占用固定序号的时隙。
• 每一个用户所占用的时隙是周期性地出现(其周期就是 TDM 帧的长度)。
• TDM 信号也称为等时(isochronous)信号。
• 时分复用的所有用户是在不同的时间占用同样的频带宽度。

4、波分复用 WDM(Wavelength Division Multiplexing)
波分复用就是光的频分复用。

5、码分复用CDM
• 常用的名词是码分多址 CDMA (Code Division Multiple Access)。
• 各用户使用经过特殊挑选的不同码型,因此彼此不会造成干扰。
• 这种系统发送的信号有很强的抗干扰能力,其频谱类似于白噪声,不易被敌人发现。
• 每一个比特时间划分为 m 个短的间隔,称为码片(chip)。
正交关系的重要特性:
• 任何一个码片向量和该码片向量自己的规格化内积都是1 。
• 一个码片向量和该码片反码的向量的规格化内积值是 –1。
二、随机访问介质访问控制
当几台计算机都使用一条信道发送数据时,就需要去共享信道,随机接入的意思是所有用户都可以根据自己的意愿随机地发送信息,占用信道全部速率,这样就会产生冲突(或者称为碰撞),从而导致所有冲突用户发送数据失败。
(1)ALOHA协议
(2)CSMA 协议
(3)CSMA/CD
(4)CSMA/CA
1、ALOHA协议:
ALOHA协议,其基本思想比较简单:当网络中的任何一个结点需要发送数据时,可以不进行任何检测就发送数据。如果在一段时间内没有收到确认,该结点就认为传输过程中发生了冲突。发生冲突的结点需要等待一段随 机时间后再发送数据,直至发送成功为止。但是其发送成功率不高,最大值只有18.4%
时隙 ALOHA 协议
时隙 ALOHA 协议把所有各站在时间上都同步起来,并将时间划分为一段段等长的时隙(slot),规定只能在每个时隙开始时才能发送一个帧。从而避免了用户发送数据的随意性,减少了数据产生冲突的可能性提高了信道的利用率。(约36%)

2、CSMA协议
载波侦听多路访问(CSMA)协议是在ALOHA协议的基础上改进而来的访问控制协议。在CSMA中,每个结点发送数据之前都使用载波侦听技术来判定通信信道是否空闲。常用的CSMA有以下3种策略。
1) 1-坚持CSMA: 当发送结点监听到信道空闲时, 立即发送数据,如果信道忙,将继续监听。这种方法减小了信道空闲时间,但是增大了冲突的概率,因此一般适合于网络负载小的网络。
2) 非坚持CSMA:当发送结点一旦监听到信道空闲时,立即发送数据,否则延迟一段随机的时间再重新监听。 这种方法减小了冲突概率,但是增大了信道空闲时间。
3) p-坚持CSMA: 属于分时信道,当发送结点监听到信道空闲时,以概率p发送数据,以概率(1-p)不发送数据,延迟一段时间并重新监听。

2、CSMA/CD
适用于总线型网络或半双工网络环境。
• 当几个站同时在总线上发送数据时,总线上的信号电压摆动值将会增大。
• 当一个站检测到的信号电压摆动值超过一定的门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞。
• 所谓“碰撞”就是发生了冲突。因此“碰撞检测”也称为“冲突检测”。
• 在发生碰撞时,总线上传输的信号产生了严重的失真,无法从中恢复出有用的信息来。
• 每一个正在发送数据的站,一旦发现总线上出现了碰撞,就要立即停止发送,免得继续浪费网络资源,然后等待一段随机时间后再次发送。
CSMA/CD的工作过程分为:
• 先听后发
• 边听边发
• 冲突停发
• 随机重发
• 发送站在发送数据的同时能检测到可能存在的冲突,需要在发送完帧之前就能收到已发送出去
的数据
•当某个站监听到总线是空闲时,也可能总线并非真正是空闲的。
• A 向 B 发出的信息,要经过一定的时间后才能传送到 B。
• B 若在 A 发送的信息到达 B 之前发送自己的帧(因为这时 B 的载波监听检测不到 A 所发送的信息),则必然要在某个时间和 A 发送的帧发生碰撞。
• 碰撞的结果是两个帧都变得无用。
3、争用期
• 最先发送数据帧的站,在发送数据帧后至多经过时间 2(两倍的端到端往返时延)就可知道发送的数据帧是否遭受了碰撞。
• 以太网的端到端往返时延 2 称为争用期,或碰撞窗口。
• 经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会发生碰撞。
• 帧的传输时延≥2×总线传播时延
• 最小帧长=总线传播时延×数据传输速率×2
争用期长度
• 以太网取 51.2 s 为争用期的长度。
• 对于 10 Mb/s 以太网,在争用期内可发送512 bit,即 64 字节。
• 以太网在发送数据时,若前 64 字节没有发生冲突,则后续的数据就不会发生冲突。
• 如果发生冲突,就一定是在发送的前 64 字节之内。
• 由于一检测到冲突就立即中止发送,这时已经发送出去的数据一定小于 64 字节。
• 以太网规定了最短有效帧长为 64 字节,凡长度小于 64 字节的帧都是由于冲突而异常中止的无效帧
4、CSMA/CA
• CSMA/CA的全称是Carrier Sense Multiple Access with Collision Avoidance。即载
波侦听多路访问/冲突避免。
• 发送数据前,先检测到信道状态,等到信道空闲后,再等待一段时间后,再次检测信道是否空闲,如果还是空闲,那么立刻发送数据,否则,随机等待一定时间,等时间到期后,再次发送检测。
• CSMA/CA 使用于无线网络。
• 它采用了带确认的发送机制(ACK)。
• CSMA/CD与CSMA/CA主要区别:
(1)传输介质不同
(2)检测方式不同
(3)CSMA/CA本节点处有/无冲突,并不一定以为在接受节点处就有/无冲突
相关文章:
计算机网络——数据链路层-介质访问控制
一、介质访问控制方法 在局域网中, 介质访问控制(medium access control)简称MAC,也就是信道访问控制方法,可以 简单的把它理解为如何控制网络节点何时发送数据、如何传输数据以及怎样在介质上接收数据, 是解决当局域网中共用信道的使用产生竞…...
pytest日志显示
在 pytest 中,可以通过 钩子函数 和 配置文件 pytest.ini 配置日志的显示方式,实现对日志的灵活控制。以下是常用实现方式及配置说明。 方式一:使用 conftest.py 钩子函数自定义日志显示 通过 conftest.py 文件中的钩子函数,实现…...
【信息系统项目管理师】第15章:项目风险管理过程详解
更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 一、规划风险管理1、输入2、工具与技术3、输出二、识别风险1、输入2、工具与技术3、输出三、实施定性风险分析1、输入2、工具与技术3、输出四、实施定量风险分析1、输入2、工具与技术3、输出五、规划风险应对1、…...
Diffusers 使用 LoRA
使用diffusers 加载 LoRA,实现文生图功能。摘自 diffusers文档。 模型可以根据名称去modelscope找对应资源下载。使用的时候需要替换成具体路径。虽然modelscope和diffusers都使用了模型id,但是并不能通用。 不同的LoRA对应了不同的“trigger” words&am…...
云安全博客阅读(二)
2024-05-30 Cloudflare acquires BastionZero to extend Zero Trust access to IT infrastructure IT 基础设施的零信任 不同于应用安全,基础设置的安全的防护紧急程度更高,基础设施的安全防护没有统一的方案IT基础设施安全的场景多样,如se…...
SpringCloud系列教程:微服务的未来(六)docker教程快速入门、常用命令
对于开发人员和运维工程师而言,掌握 Docker 的基本概念和常用命令是必不可少的。本篇文章将带你快速入门 Docker,并介绍一些最常用的命令,帮助你更高效地进行开发、测试和部署。 目录 前言 快速入门 docker安装 配置镜像加速 部署Mysql …...
Vue 快速入门:开启前端新征程
在当今的 Web 开发领域,Vue.js 作为一款极具人气的 JavaScript 前端框架,正被广泛应用于各类项目之中。它以简洁的语法、高效的数据绑定机制以及强大的组件化开发模式,为开发者们带来了前所未有的开发体验。如果你渴望踏入前端开发的精彩世界…...
UVM:uvm_component methods configure
topic UVM component base class uvm_config_db 建议使用uvm_config_db代替uvm_resource_db uvm factory sv interface 建议:uvm_config_db 以下了解 建议打印error...
LLM 训练中存储哪些矩阵:权重矩阵,梯度矩阵,优化器状态
LLM 训练中存储哪些矩阵 目录 LLM 训练中存储哪些矩阵深度学习中梯度和优化器是什么在 LLM 训练中通常会存储以下矩阵: 权重矩阵:这是模型的核心组成部分。例如在基于 Transformer 架构的 LLM 中,每一层的多头注意力机制和前馈神经网络都会有相应的权重矩阵。以 BERT 模型为…...
大模型思维链推理的进展、前沿和未来分析
大模型思维链推理的综述:进展、前沿和未来 "Chain of Thought Reasoning: A State-of-the-Art Analysis, Exploring New Horizons and Predicting Future Directions." 思维链推理的综述:进展、前沿和未来 摘要:思维链推理&#…...
NLP 技术的突破与未来:从词嵌入到 Transformer
在过去的十年中,自然语言处理(NLP)经历了深刻的技术变革。从早期的统计方法到深度学习的应用,再到如今Transformer架构的普及,NLP 的发展不仅提高了模型的性能,还扩展了其在不同领域中的应用边界。 1. 词嵌…...
嵌入式中QT实现文本与线程控制方法
第一:利用QT进行文件读写实现 利用QT进行读写文本的时候进行读写,读取MP3歌词的文本,对这个文件进行读写操作。 实例代码,利用Qfile,对文件进行读写。 //读取对应文件文件,头文件的实现。 #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #incl…...
云备份项目--服务端编写
文章目录 7. 数据管理模块7.1 如何设计7.2 完整的类 8. 热点管理8.1 如何设计8.2 完整的类 9. 业务处理模块9.1 如何设计9.2 完整的类9.3 测试9.3.1 测试展示功能 完整的代码–gitee链接 7. 数据管理模块 TODO: 读写锁?普通锁? 7.1 如何设计 需要管理…...
Node.js——fs(文件系统)模块
个人简介 👀个人主页: 前端杂货铺 🙋♂️学习方向: 主攻前端方向,正逐渐往全干发展 📃个人状态: 研发工程师,现效力于中国工业软件事业 🚀人生格言: 积跬步…...
SAP BC 同服务器不同client之间的传输SCC1
源配置client不需要释放 登录目标client SCC1...
CentOS: RPM安装、YUM安装、编译安装(详细解释+实例分析!!!)
目录 1.什么是RPM 1.1 RPM软件包命名格式 1.2RPM功能 1.3查询已安装的软件:rpm -q 查询已安装软件的信息 1.4 挂载:使用硬件(光驱 硬盘 u盘等)的方法(重点!!!) 1…...
linux音视频采集技术: v4l2
简介 在 Linux 系统中,视频设备的支持和管理离不开 V4L2(Video for Linux 2)。作为 Linux 内核的一部分,V4L2 提供了一套统一的接口,允许开发者与视频设备(如摄像头、视频采集卡等)进行交互。无…...
MySQL使用navicat新增触发器
找到要新增触发器的表,然后点击设计,找到触发器标签。 根据实际需要,填写相关内容,操作完毕,点击保存按钮。 在右侧的预览界面,可以看到新生成的触发器脚本...
voice agent实现方案调研
前言 目前语音交互主要的实现大体有两种: 级联方案,指的是,大规模语言模型 (LLM)、文本转语音 (TTS) 和语音转文本 (STT),客户的话通过vad断句到STT的语音转文本,经过大模型进行生成文本,生成文本后通过TTS进行回复给用户。(主流方案)端到端的方案,开发者无需再…...
TCP通信原理学习
TCP三次握手和四次挥手以及为什么_哔哩哔哩_bilibili...
基于算法竞赛的c++编程(28)结构体的进阶应用
结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...
eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)
说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...
基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...
Module Federation 和 Native Federation 的比较
前言 Module Federation 是 Webpack 5 引入的微前端架构方案,允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...
从零实现STL哈希容器:unordered_map/unordered_set封装详解
本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说,直接开始吧! 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...
ios苹果系统,js 滑动屏幕、锚定无效
现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...
如何在最短时间内提升打ctf(web)的水平?
刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...
在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案
这个问题我看其他博主也写了,要么要会员、要么写的乱七八糟。这里我整理一下,把问题说清楚并且给出代码,拿去用就行,照着葫芦画瓢。 问题 在继承QWebEngineView后,重写mousePressEvent或event函数无法捕获鼠标按下事…...
代码规范和架构【立芯理论一】(2025.06.08)
1、代码规范的目标 代码简洁精炼、美观,可持续性好高效率高复用,可移植性好高内聚,低耦合没有冗余规范性,代码有规可循,可以看出自己当时的思考过程特殊排版,特殊语法,特殊指令,必须…...
