【计算机网络笔记】多路访问控制(MAC)协议——随机访问MAC协议

news/2024/11/7 19:27:46/

系列文章目录

什么是计算机网络?
什么是网络协议?
计算机网络的结构
数据交换之电路交换
数据交换之报文交换和分组交换
分组交换 vs 电路交换
计算机网络性能(1)——速率、带宽、延迟
计算机网络性能(2)——时延带宽积、丢包率、吞吐量/率
计算机网络体系结构概念
OSI参考模型基本概念
OSI参考模型中非端-端层(物理层、数据链路层、网络层)功能介绍
OSI参考模型中端-端层(传输层、会话层、表示层、应用层)功能介绍
TCP/IP参考模型基本概念,包括五层参考模型
网络应用的体系结构
网络应用进程通信
网络应用对传输服务的需求
Web应用之HTTP协议(涉及HTTP连接类型和HTTP消息格式)
Cookie技术
Web缓存/代理服务器技术
传输层服务概述、传输层 vs. 网络层
传输层——多路复用和多路分用
传输层——UDP简介
传输层——可靠数据传输原理之Rdt协议
传输层——可靠数据传输之流水线机制与滑动窗口协议
传输层——TCP特点与段结构
传输层——TCP的可靠数据传输
TCP连接管理(图解三次握手和四次挥手)
传输层——拥塞控制原理与解决方法
TCP的拥塞控制机制
网络层服务与核心功能
网络层服务模型——虚电路网络
网络层服务模型——数据报网络
Internet网络的网络层——IP协议之IP数据报的结构
IP分片
IP编址与有类IP地址
IP子网划分与子网掩码
CIDR与路由聚合
DHCP协议
网络地址转换(NAT)
ICMP(互联网控制报文协议)
IPv6简介
路由算法之链路状态路由算法
路由算法之距离向量路由算法
路由算法之层次路由
数据链路层概述
数据链路层——差错编码


  • 系列文章目录
  • 多路访问控制
  • 多路访问控制(MAC)协议介绍
  • 随机访问MAC协议
    • 时隙ALOHA协议
    • ALOHA协议
    • CSMA协议
      • CSMA/CD协议


前面介绍了数据链路层提供的差错检测或者说差错纠正服务,它们依赖于差错编码。这里介绍链路层提供的另一种服务——多路访问控制。为此,需要带大家了解多路访问控制的概念和多路访问控制(MAC)协议。


多路访问控制

多路访问控制主要是解决一类链路的使用问题。作为网络中的链路,大致可以分为两类:

  • 点对点链路:链路只连接两个相邻的结点。比如以太网交换机与主机间的点对点链路

  • 广播链路 :特点是物理介质被共享。这种链路比较多见。比如现在广泛使用的802.11无线局域网,它的无线电频率就是被共享的

    在这里插入图片描述

当大家共享物理介质进行通信的时候,必须有一个机制来协调发送数据。为此就需要一类多路访问控制(MAC)协议。


多路访问控制(MAC)协议介绍

在单一共享广播信道这类链路中,如果有两个或者两个以上结点同时传输时,势必会相互干扰。也就是冲突(collision)。所以在广播链路中,冲突的发生就意味着传输的一次失败。因此需要多路访问控制(MAC)协议来协调共享链路的使用

作为多路访问控制(MAC)协议,一般有一些基本性的考虑和需求:

  • 期望设计出来的MAC协议采用分布式算法决定结点如何共享信道,即决策结点何时可以传输数据
  • 大家在协调的过程中,协议必须基于信道本身,通信信道共享协调信息

理想的MAC协议是什么样的?

假设给定速率为R bps的广播信道。MAC协议应该满足这些需求:

  • 当只有一个结点希望传输数据时,它可以以速率 R发送
  • 当有M个结点期望发送数据时,每个节点平均 发送数据的平均速率是R/M
  • 完全分散控制。无需特定结点协调、无需时钟、时隙同步
  • 简单不复杂

MAC协议主要分三大类:

  • 信道划分(channel partitioning)MAC协议

    • 使用多路复用技术,将信道资源划分一些资源片,然后再分配下去
    • 比如:TDMA、FDMA、CDMA、WDMA等
  • 随机访问(random access)MAC协议。在计算机局域网中非常多见

    • 信道不划分,允许冲突
    • 采用冲突 “恢复” 机制
  • 轮转(“taking turns”)MAC协议

    • 结点轮流使用信道

随机访问MAC协议

在随机访问MAC协议中,当结点要发送分组时,会利用信道全部数据速率R发送分组,动态性很强,没有事先的结点间协调。因此就可能出现冲突(两个或多个结点同时传输)。所以随机访问MAC协议需要定义:

  • 如何检测冲突
  • 如何从冲突中恢复 (e.g., 通过延迟重传)

典型的随机访问MAC协议:

  • 时隙(sloted)ALOHA
  • ALOHA
  • CSMA、CSMA/CD、CSMA/CA

时隙ALOHA协议

假定:

  • 所有帧大小相同
  • 时间被划分为等长的时隙 (每个时隙可以传输1个帧)
  • 结点只能在时隙开始时刻 发送帧
  • 结点间时钟同步
  • 如果2个或2个以上结点在 同一时隙发送帧,结点即 检测到冲突

运行过程:

  • 当结点有新的帧时,在下 一个时隙(slot)发送
    • 如果无冲突:该结点可以在下一个时隙继续发送新的帧
    • 如果冲突:该结点在下 一个时隙以概率p重传该帧,直至成功

下面看一下示意性的示例:

假设网络中有三个结点,共享一个广播链路。

在这里插入图片描述

  • C表示冲突,E表示空闲,S表示发送成功

  • 优点:

    • 单个结点活动时,可以 连续以信道全部速率传输数据,也就是占用信道的全部资源
    • 高度分散化:只需同步时隙
    • 整个协议非常简单
  • 缺点:

    • 很容易发生冲突,浪费时隙
    • 结点也许能以远小于分组传输时间检测到冲突
    • 必须要求所有结点时钟同步

效率(efficiency):长期运行时,成功发送帧的时隙所占 比例 (很多结点,有很多帧待发送)。

  • 假设: N个结点有很多帧 待传输,每个结点在每个 时隙均以概率p发送数据。
  • 对于给定的一个结点,在 一个时隙将帧发送成功的 概率= p(1-p)N-1;对于任意结点成功发送帧 的概率= Np(1-p)N-1
  • 最大效率: 求得使Np(1- p)N-1最大的p* ,对于很多结点,求 Np* (1-p*)N-1当N趋近无穷时的极限,可得 最大效率= 1/e = 0.37。
  • 也就是说,时隙ALOHA协议中,信道被成功利用的时间仅占37%!

显然时隙ALOHA协议的效率并不能让人满意。


ALOHA协议

  • 非时隙(纯)Aloha:更加简单,因为无需进行时钟同步

  • 每个结点当有新的帧生成时,就会立即发送

  • 因此冲突的可能性增大了

    • 在t0时刻发送帧,会与在[t0 -1, t0+1]期间其他结点发送的帧冲突

      在这里插入图片描述

在这里插入图片描述


CSMA协议

载波监听多路访问协议 CSMA (carrier sense multiple access)最大的改进地方在于:

  • 发送帧之前,监听信道 (载波)。如果信道空闲,就发送完整帧;如果信道忙则推迟发送。

但是冲突仍然可能发生。另外,信号传播延迟的存在也会导致冲突的发生。这时如果继续发送数据,就会浪费信道资源。

如果发送数据的同时就能判断有没有冲突就很好了,在发现冲突后就终止后面数据的传输,能够很好的提高信道的效率。这时,CSMA/CD协议就出现了。


CSMA/CD协议

CD(Collision Detection)强调在发送数据帧的同时可以检测冲突。换句话说,就是短时间内可以检测到冲突。在冲突后中止传输,就能减少信道浪费。

对于这个协议的冲突检测机制:

  • 有线局域网易于实现:通过测量信号强度,比较发射信号与接收信号
  • 无线局域网很难实现:信号衰减很快。接收信号强度淹没在本地发射信号强度下

把这样的特性概括为:“边发边听,不发不听

例题:

在这里插入图片描述

CSMA/CD协议的效率比ALOHA更高。


http://www.ppmy.cn/news/1241503.html

相关文章

万字解析设计模式之模板方法与解释器模式

一、模板方法模式 1.1概述 定义一个操作中算法的框架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 例如,去银行办理业务一般要经过以下4个流程:取号、排队、办理具体业…

“升级图片质量:批量提高或缩小像素,赋予图片全新生命力!“

如果你想让你的图片更加清晰、更加美观,或者符合特定的像素要求,那么现在有一个好消息要告诉你!我们推出了一款全新的图片处理工具,可以帮助你批量提高或缩小图片像素,让你的图片焕发出新的生机! 第一步&a…

HarmonyOS ArkTS 保存应用数据(十)

1 概述 在移动互联网蓬勃发展的今天,移动应用给我们生活带来了极大的便利,这些便利的本质在于数据的互联互通。因此在应用的开发中数据存储占据了非常重要的位置,HarmonyOS应用开发也不例外。 2 什么是首选项 首选项为应用提供Key-Value键…

Vue3的计算属性(computed)和监听器(watch)案例语法

一:前言 Vue3 是 Vue2 的一个升级版,随着 2023年12月31日起 Vue2 停止维护。这意味着 Vue3 将会为未来国内一段时间里,前端的开发主流。因此熟练的掌握好 Vue3 是前端开发程序员所不可避免的一门技术栈。而 Vue3 是 Vue2 的一个升级版&#x…

云原生系列Go语言篇-编写测试Part 2

基准测试 确定代码是快或慢非常复杂。我们不用自己计算,应使用Go测试框架内置的基准测试。下面来看​​第15章的GitHub代码库​​sample_code/bench目录下的函数: func FileLen(f string, bufsize int) (int, error) {file, err : os.Open(f)if err ! …

C语言——文件操作

C语言——文件操作 1.文件拷贝 #include<stdio.h>int main(int argc,char** argv) {FILE *srcNULL;FILE *newNULL;int n_read0;unsigned char buf[1024]{0};srcfopen("./file","r");if(srcNULL){printf("文件打开失败\n"); return -1;}n…

openssl+ ECC + linux 签名校验开发实例(C++)

文章目录 ECC签名过程&#xff08;ECDSA签名&#xff09;ECC验证过程&#xff08;ECDSA验证&#xff09;C示例代码 ECC&#xff08;Elliptic Curve Cryptography&#xff09;是一种基于椭圆曲线数学结构的密码学技术。在ECC中&#xff0c;签名和验证过程使用的是数字签名算法&a…

C#面试问题整理

sqlserver中视图和表的区别 在 SQL Server 中&#xff0c;视图&#xff08;View&#xff09;和表&#xff08;Table&#xff09;是不同的对象&#xff0c;它们有以下几点区别&#xff1a; 数据存储方式&#xff1a;表是一种实际存储数据的数据库对象&#xff0c;它包含列和行&…