计算机网络学习笔记-3.2介质访问控制

文章目录

    • 介质访问控制
      • 静态划分信道
    • 动态分配信道
    • 轮询访问介质访问控制
    • 随机访问介质访问控制
      • ALOHA协议简介
      • ALOHA协议的工作原理

介质访问控制

介质访问控制(MAC,Medium Access Control),质访问控制的目的是确保多个设备能够高效、可靠地访问和使用共享通信介质,从而避免或减少冲突。主要分为静态划分信道动态分配信道两种方式。

静态划分信道

静态划分信道方式主要通过对信道进行预先的固定分割来实现介质的共享,适用于稳定的传输环境。在这种方式下,信道被分成若干不重叠的部分,每个部分分配给一个用户使用。主要有以下几种方法:

  • 频分多路复用(FDM,Frequency Division Multiplexing):将整个信道的频谱划分为若干个频带,每个用户占用一个特定频带,可以同时传输数据。FDM的典型应用是传统的广播和电视信号。
    在这里插入图片描述

  • 时分多路复用(TDM,Time Division Multiplexing):将时间划分为不同时隙,每个用户占用一个时隙,轮流发送数据。TDM常见于数字电话通信系统。

在这里插入图片描述

  • 统计时分多路复用STDM:而是根据用户的实际数据传输需求动态分配时隙资源,从而提高了信道的利用率。

  • 波分多路复用(WDM,Wavelength Division Multiplexing):将光纤信道划分为不同的波长,每个波长用于一个独立的信号传输,是光纤通信中广泛应用的技术。

  • 码分多路复用(CDM,Code Division Multiplexing):不同用户使用不同的编码进行通信,通过特定的编码来区分和恢复每个用户的数据流。CDM广泛应用于移动通信(如CDMA系统)。

动态分配信道

动态分配信道是在信道访问竞争的情况下分配资源,适用于传输需求不确定的情况。根据具体的访问方式,动态分配信道又分为轮询访问随机访问两类。

轮询访问介质访问控制

在轮询访问中,系统会按照预定顺序或使用令牌传递的方式,依次将传输机会分配给每个设备。

  • 令牌传递协议:通过一个“令牌”(Token)在网络中的节点之间轮流传递,持有令牌的节点可以访问信道,完成通信任务后将令牌传递给下一个节点。这种方式避免了竞争冲突,但适用于节点数量少且网络拓扑结构固定的场景,如令牌环网络。每个节点令牌时间有限制。

随机访问介质访问控制

随机访问方式是指设备可以在任何时候尝试访问信道,若发生冲突则重传。

ALOHA协议简介

ALOHA(Additive Links On-line Hawaii Area)是一种用于无线通信中的随机接入协议。ALOHA协议的核心思想是允许多个设备共享同一无线信道,而不需要严格的时隙分配。设备在有数据发送需求时,可以随时尝试发送数据,若发生冲突,设备会等待一段时间后重新尝试发送。

ALOHA协议的工作原理

ALOHA协议的工作过程可以分为以下几个步骤:

  1. 数据发送:设备在任意时刻如果有数据需要发送,便开始发送数据。
  2. 碰撞检测:如果两个设备同时发送数据,它们的信号会发生碰撞,导致数据丢失。
  3. 冲突后重发:发送者在检测到冲突后,会等待一个随机时间段再重新发送数据,以降低下一次碰撞的概率。
  • CSMA协议(Carrier Sense Multiple Access,多点接入载波侦听):在传输前侦听信道是否空闲。CSMA协议包含多种变体:

    • CSMA/CD(Collision Detection,碰撞检测)协议:设备在发送数据前侦听信道,若检测到信道空闲则发送数据,若发生碰撞则停止发送并重新传输。CSMA/CD用于以太网的介质访问控制。一旦设备检测到碰撞,它不会立刻再次发送数据。设备会在一个随机的时间段后再尝试重新发送数据,这个过程称为退避(Backoff)。随机等待时间是为了减少下一次发送时发生碰撞的概率。退避时间通常是根据某种退避算法来计算的。例如,指数退避(Exponential Backoff)算法会在每次碰撞后使等待时间呈指数增长。

    • CSMA/CA(Collision Avoidance,碰撞避免)协议:在发送数据前侦听信道,如果信道空闲则发送,若发现信道忙则推迟发送以避免碰撞。CSMA/CA常用于无线局域网(如Wi-Fi)的介质访问控制。CSMA/CA协议的目标是避免碰撞,而不是在碰撞发生后进行检测和处理。

      1. 载波监听(Carrier Sense)
        在发送数据之前,设备会监听信道是否空闲。
        如果信道空闲,设备可以开始发送数据。如果信道正在使用,设备会等待信道空闲。

      2. 随机退避(Backoff)
        如果信道忙碌,设备会等待一个随机的时间间隔再尝试发送。这个随机退避时间通常是通过选择一个数字(比如在某个区间内随机选择)来决定的。
        等待时间的单位通常是时间槽(Time Slot),这是一种同步机制,确保设备在同一时刻尝试发送数据的概率尽量低。

      3. 请求发送(Request to Send, RTS)/清除发送(Clear to Send, CTS)
        为了避免多个设备同时发送数据而发生碰撞,CSMA/CA协议引入了RTS/CTS机制:
        RTS:当设备准备发送数据时,它首先发送一个请求发送(RTS)信号给接收端,询问是否可以发送数据。
        CTS:如果接收端空闲,它会返回一个清除发送(CTS)信号,允许发送方开始数据传输。
        这种机制的作用是通过在信道上先发送RTS/CTS信号来确保没有其他设备发送数据,从而减少碰撞的机会。

      4. 数据发送(Data Transmission)
        一旦接收到CTS信号,设备开始发送数据。
        在数据发送过程中,设备不会检查是否发生了碰撞,因为无线信号中碰撞检测比较困难。相反,它会假定通过RTS/CTS机制避免了冲突。

      5. 确认应答(Acknowledgment, ACK)
        发送方在数据发送完毕后会等待接收方的确认应答(ACK)信号。
        如果发送方没有收到ACK,表示数据丢失,设备会重新发送数据。重传的时间也通常是随机选择的,以避免多次重传导致更多冲突。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/60518.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GitCode光引计划有奖征文大赛

一、活动介绍 GitCode平台汇聚了众多杰出的G-Star项目,它们犹如璀璨星辰,用各自的故事和成就,为后来者照亮前行的道路。我们诚邀广大开发者、项目维护者及爱好者,共同撰写并分享项目在GitCode平台上托管的体验,挖掘平…

深入理解接口测试:实用指南与最佳实践5.0(三)

✨博客主页: https://blog.csdn.net/m0_63815035?typeblog 💗《博客内容》:.NET、Java.测试开发、Python、Android、Go、Node、Android前端小程序等相关领域知识 📢博客专栏: https://blog.csdn.net/m0_63815035/cat…

Python实现云原生应用的后端开发

目录 1. 云原生后端开发基础2. 云原生架构与核心概念3. Python实现云原生后端应用1. 基本的微服务实现2. 容器化应用:Docker化微服务3. 使用Kubernetes进行部署 4. 云原生后端开发案例与代码实现案例 1:用户认证服务(使用策略模式&#xff09…

使用electron-egg把vue项目在linux Ubuntu环境下打包并安装运行

electron-egg一个入门简单、跨平台、企业级桌面软件开发框架https://www.kaka996.com/electron-egg 跳转地址 1,使用 git下载代码到本地,如果没有git需要进行安装 # gitee git clone https://gitee.com/dromara/electron-egg.git # github git clone https://github.com/dro…

linux中报文从网卡到用户态recv的架子

分享一篇后台服务器性能优化之网络性能优化,希望大家对Linux网络有更深的理解。 曾几何时,一切都是那么简单。网卡很慢,只有一个队列。当数据包到达时,网卡通过DMA复制数据包并发送中断,Linux内核收集这些数据包并完成…

2019年下半年试题二:论软件系统架构评估及其应用

论文库链接:系统架构设计师论文 论文题目 对于软件系统,尤其是大规模复杂软件系统而言,软件系统架构对于确保最终系统的质量具有十分重要的意义。在系统架构设计结束后,为保证架构设计的合理性、完整性和针对性,保证系…

网络安全-蓝队基础

声明 学习视频来自 B 站UP主泷羽sec,如涉及侵权马上删除文章。 笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负。 ✍🏻作者简介:致…

集群策略选择vs生产需求点(负载/可用性、灾备/安全性)

• 集群策略分类 负载均衡靠: -主从。读写分离。 灾备靠: -同步( 主备,一定带同步功能。主从,一定带同步功能。主主,一定带同步功能。由于主备、主主不常用,同步基本等价于主从。)…

AI开发-三方库-PyTorch-NumPy

1 需求 官网:https://numpy.org/ 2 接口 3 示例 4 参考资料

DAY112代码审计PHP开发框架POP链利用Yii反序列化POP利用链

一、pop1链的跟踪 1、路由关系 2、漏洞触发口unserialize(base64_decode($data)); 2、__destruct(),魔术法方法调用close函数方法 3、未找到利用链,尝试__call魔术方法 4、逆推找call_user_func 函数 第一部分 namespace yii\db; class BatchQueryResu…

Maven 构建项目

Maven 是一个项目管理和构建工具,主要用于 Java 项目。它简化了项目的构建、依赖管理、报告生成、发布等一系列工作。 构建自动化:Maven 提供了一套标准化的构建生命周期,包括编译、测试、打包、部署等步骤,通过简单的命令就可以执…

任务调度中心-XXL-JOB使用详解

目录 详解 调度中心 执行器 原理 快速入门 源码仓库地址 1.初始化数据库 2.配置调度中心 1.解压源码 2.需改配置文件 3.启动调度中心 3.配置执行器 1.引入pom依赖 2.修改配置文件 3.执行器组件配置 4.部署执行器项目 4.开发第一个任务 BEAN模式(类…

PostgreSQL 无法为连接创建新的进程

PostgreSQL could not fork new process for connection 前几天在使用 PostgreSQL 数据库的过程中遇到这样一个错误。 could not fork new process for connection: Resource temporarily unavailable 看字面意思是无法克隆一个新的进程供连接使用,资源暂时不可用。…

HBase 安装与基本操作指南

以下是关于 Apache HBase 安装、配置以及简单操作的详细指南: HBase 简介 Apache HBase 是一个基于 Hadoop 的分布式数据库,擅长处理大规模、结构化的海量数据。它采用行列式存储方式,与 Hadoop 和 HDFS 紧密结合,是支持大数据实…

ES6基础

一、变量声明 1.let 语法:let 变量名 值; 特点:存在块级作用域;不存在变量提升(考虑暂时性死区),即变量一定要在声明后使用,否则报错;不允许重复声明(包括普通变量和函…

ROM修改进阶教程------安卓14 安卓15去除app签名验证的几种操作步骤 详细图文解析

在安卓14 安卓15的固件中。如果修改了系统级别的app。那么就会触发安卓14 15的应用签名验证。要么会导致修改的固件会进不去系统,或者进入系统有bug。博文将从几方面来解析去除安卓14 15应用签名验证的几种方法。 💝💝💝通过博文了解: 1💝💝💝-----安卓14去除…

基于STM32设计的大棚育苗管理系统(4G+华为云IOT)_265

文章目录 一、前言1.1 项目介绍【1】项目开发背景【2】设计实现的功能【3】项目硬件模块组成【4】设计意义【5】国内外研究现状【6】摘要1.2 设计思路1.3 系统功能总结1.4 开发工具的选择【1】设备端开发【2】上位机开发1.5 参考文献1.6 系统框架图1.7 系统原理图1.8 实物图1.9…

spring boot项目打成war包部署

1.修改pom.xml 在 pom.xml 里设置 <packaging>war</packaging>2.移除嵌入式tomcat插件 在 pom.xml 里找到spring-boot-starter-web依赖&#xff0c;在其中添加如下代码&#xff0c; <dependency><groupId>org.springframework.boot</groupId>&l…

植物明星大乱斗1

能帮到你的话&#xff0c;就给个赞吧 &#x1f618; 文章目录 scene.hmenuScene.hgameScene.hmainscene.cppmenuScene.cppgameScene.cpp scene.h #pragma once #include <graphics.h>/* 场景菜单角色选择游戏 */ class Scene { public:virtual ~Scene() 0; public:virt…

校园二手交易网站毕业设计基于SpringBootSSM框架

目录 一、引言 二、需求分析 2.1用户需求分析 2.1.1学生用户 2.1.2管理员 2.2系统功能需求 2.3系统非功能需求 ‌2.4技术需求 ‌2.4.1 技术选择 ‌2.4.2系统架构‌ 三、详细设计 3.1系统架构设计‌ ‌3.2前端设计‌ ‌3.3后端设计‌ ‌3.4数据库设计‌ 本文介绍…