zoukankan      html  css  js  c++  java
  • 3.6 媒体接入控制的基本概念

    有一根同轴电缆,一堆主机连上面共享这根传输媒体。

    如果恰好有两个主机同时在发送数据,那么信号在信道上就会发生碰撞。两败俱伤。

    共享信道要解决的问题就是僧多粥少的问题。即媒体接入控制(Medium Access Control)

    MAC分两类:

    • 静态划分信道:预先固定分配,一般无线网的物理层使用,数据链路层用不上

      • 频分多址

      • 时分多址

      • 码分多址

    • 动态接入控制:

      • 受控接入(已淘汰

        • 集中控制:有一个班长转来转去问其它人看有有没有情书要发送,只有被问到的人才能发送。

        • 分散控制:邮票一个传一个,当我获得邮票之后,我就可以发情书了。我发完把邮票给旁边好兄弟,好兄弟获得邮票,那他就能发送情书了。

      • 随机接入:去争夺资源,谁抢到就是谁的,如果两个都抢到那就谁也别想快活了。(无线局域网使用)

         

    3.6.1 静态划分信道

     

    信道复用有四种:

     

    1)频分复用(FDM)

    2)时分复用(TDM)

    3)波分复用(WDM)

    波分复用其实就是光的频分复用

    4)码分复用

    练习题:

    把0变为-1,1变为+1,然后对应位置相乘相加看是否为0。

    用收到的和给出的相乘相加除以8 ,看是0还是1还是-1,1就是发送比特1,0就是没有发送,-1就是发送比特0。

    练习题:

    长的就拆分,然后还是用上面的“乘和除”方法、

     

     

    3.6.2 CSMA/CD协议

    解决碰撞是必须要解决的问题

    早期的共享式以太网采用载波监听多址接入/碰撞检测CSMA/CD协议

    • 多址接入:多个主机连在一根总线上,竞争使用总线

    • 载波监听:先听后说。发消息之前先检测一下,如果检测到总线空闲96比特时间,那就允许发送。如果总线忙的话,那我继续检测等到总线空闲96个比特时间。

    • 碰撞检测:每一个正在发送帧的站边发送变检测(边说边听),一旦有碰撞,特别有礼貌,先让别人发,等待时机再自己发。

    以太网还强化了碰撞,当有碰撞的时候,处理立即停止发送帧之外,还要继续发送32比特或48比特的人为干扰信号,以便有足够的碰撞信号使所有的站点都能检测出来

    争用期(碰撞窗口的概念)

    最小帧长的概念:

    最小帧长=往返时间x数据传输速率

    既然以太网规定了最小帧长,那是否还规定了最大帧长呢?

    接下来我们介绍退避时间的计算方法,

    接下来我们讨论一下CSMA/CD协议的共享式以太网的信道利用率

    距离应该不应太大,T0应该大一些,这意味着帧长应该尽量大一点。

    接下来我们看看CSMA/CD协议的帧发送流程图

    再来看看帧的接收流程图:

    帧长不能小于最短帧长,目的地址和接收方的地址得一致,没有误码。满足这三个条件才能正确接收。

    练习题:

    对于无线网络可以使用CSMA/CA协议。

    本题考查的是最小帧长的概念。找出最小帧长和距离之间的关系就能正确解题。

     

     

    3.6.3 CSMA/CA协议

    无线局域网使用的媒体接入控制协议。

    请大家思考一下:既然使用广播信道的有线局域网都能使用CSMA/CD协议,那我的使用广播信道的无线局域网能不能也使用CSMA/CD协议?

    而有线的就不存在这样的问题:

    总线上的信号,最多经过一个端到端的传播时延,就能被其它主机接收到。

    碰撞信号最多经过一个往返时延就能被收到。传出去最多一个时延,碰撞信号回来报信也要一个时延。所以是一个往返时延

    接下来我们介绍一下时间间隔,也就是两个帧之间隔多少时间不会发生碰撞。

    接下来我们看一下CSMA/CA的工作原理

    源站有数据要发送,当源站监测到信道空闲,则在等待帧间间隔DIFS128微秒之后进行发送。

    目的站如果正确收到该帧,则经过最短帧间间隔SIFS28微秒之后发送ACK

    需要注意的是,若源站在规定时间内没有收到确认,那重传计时器超时之后源站会重发数据,但是久了源站也会累,重发次数多了他也不重发了,放弃了。

    请大家思考一下:

    问题一:源站都检测到信道是空闲的了,干嘛还要等128微秒再发送数据,这不是多此一举吗?

    • 这就是考虑到其它站可能有高优先级的VIP帧要发送,所以它要等一等。

    问题二:目的站在收到消息了,那干嘛还要等28微秒才发送确认给发送方,拖拖拉拉的一点也不痛快?

    • 因为一个站点变身,也就是从发送方变为接收方需要的时间为28微秒。

     

    在源站和目的站的一次对话过程中,信道处于忙的状态。若无线信道忙的话,其它站点要发送数据,那就滚一边去。当信道从忙转变为空闲,再经过128微秒之后。那其他人再退避一段时间之后,就可以发送数据了。

    那么问题又来了:你信道都空闲了,还经过了128微秒,为啥我要发送数据我还得等半天?

    • 防止多个站点同时发送数据而产生碰撞。

    当站点检测到信道是空闲的,并且所发送的数据帧不是成功发送完上一个之后立即继续发送的数据帧,那就不使用退避算法再等一会。

    以下情况必须使用退避算法:

    • 发送数据之前检测到信道忙

    • 在每一次重传一个数据帧时

    • 发完一个数据帧之后要连续发送下一个数据帧的时候(这是为了避免一个站点长时间占用信道,其它站点会有意见)

    那么下面我们就来看一下退避算法究竟是何方神圣?

    • 倒计时,倒计时结束那就可以立即发送数据

    • 倒计时时间内信道又忙了,那我得暂停计时,重新等信道变空闲,再等128微秒后,继续启动倒计时。

    举例说明:

    A正在发送数据,BCD也想要发送数据。于是进行载波监听,发现信道忙,那就等待。并过一会就对信道检测一次。当检测到信道空闲的时候,并且空闲128微秒的时候,那就开始倒计时

    C的倒计时最短,C到点之后,C开始发送数据,此时信道由空闲变为忙状态,B和D的倒计时暂停。

    C发完了之后,信道空闲并且空闲时间超过128微秒之后,B和D的计时器开始计时,然后后面就重复以上步骤。

     

    接下来我们介绍CSMA/CA的信道预约和虚拟载波监听技术。

    虚拟载波监听:

     

    虽然C收不到A的预约信息,但是可以收到B发送的允许A发送的信息,里面包含A和B联系要占用的时间,这样就能避免碰撞了。

    练习题:

     

  • 相关阅读:
    PyMySQL TypeError: not enough arguments for format string
    使用python3抓取pinpoint应用信息入库
    JS 异步之 async await
    JS Null 空 判断
    Vue问题汇总
    pymysql DAO简单封装
    py可视化执行过程
    jenkins回滚之groovy动态获取版本号
    容器时间 容器乱码问题
    SQLErrorCodes loaded: [DB2, Derby, H2, HSQL, Informix, MS-SQL, MySQL, Oracle, PostgreSQL, Sybase, Hana]
  • 原文地址:https://www.cnblogs.com/YXBLOGXYY/p/15399794.html
Copyright © 2011-2022 走看看