计算机网络—数据链路层

 

 

数据链路层服务

该层中的帧数据结构:
在这里插入图片描述
帧头部会因为不同的局域网协议而不同,因此会在另一篇博文中继续介绍不同的帧数据报,不在本博文介绍。(不过除了PPP协议外一般都是<目标MAC,源MAC,类型>,占8字节,每个MAC占6字节,类型占2字节)帧尾一般是用于校验的数据。

  • 在数据链路层传输的数据称为:帧(frame)
  • 数据层会负责检错纠错数据
  • 连接两个节点的链路通道
    • 无线连路
    • 有线链路
    • 局域网(特殊链路)

数据链路层:负责将两个节点的数据进行传输

  • 封装帧操作
  • 流量控制

差错编码

  • 汉明距离
    给出两个或者一组(编码集)相同长的二进制数,然后比较每一个位置是否相同,不同汉明距离+1

  • 奇偶校验码
    ❀点击学习奇偶校验码
    这边给出以为博主写的博文,实在是写的太好了,这不是偷懒,确实是写的很好。

  • CheckSum校验和
    ❀点击学习校验和
    因为我之前在传输层UDP中写过一次校验和如何计算,所以这边可以直接跳到传输层UDP。

  • CRC循环冗余校验码
    ❀点击学习CRC循环冗余校验码
    这边给出以为博主写的博文,实在是写的太好了,这不是偷懒,确实是写的很好。

多路访问协议

  • MAC地址(物理地址)
    这个可以理解为链路层的地址,网卡的号码。每个网卡地址都不一样。
    因此我们在拿到IP地址后,其实还不能真正的找到主机的接口将数据传进去,因此还需要在链路层中加一个MAC地址,就是网地址,然后这个地址就是我们要送到的那个接口的地址。

在本博文不解释MAC地址,知道这个知识点先,在局域网技术博文详细介绍

  • MAC协议分类
    • 信道划分MAC协议
    • 随机访问MAC协议
    • 轮转MAC协议

信道划分

  • 首先说明一下:在越来越底层的时候,我们的数据其实所到底都是0、1,然后用电压电流的高低压来传输,用频率来传输等等。
    • TDMA(时分多路复用)
      将时间分成多份,然后每份时间内对应一个传输数据的专用时间,也就是说我在传输数据的时候我这条链路应该给谁用,这TDMA就是将时间分开,然后每一个时间点给不同的数据进行发送。(俗话说,只要你时间够快,别人就看不出你是在串行操作,快到让人感觉你是在并发操作这个数据。)
      在这里插入图片描述

    • FDMA(频分多路复用)
      将频带划分成多份。注意:频带指的是Hz频率,也就是说这个划分能够完成每一条路独立传输数据。
      首先当有有一个频带空闲的时候,我们只需将要传输的数据的频率调到该频带上即可。
      在这里插入图片描述

信道划分首要好处就是不会发生冲突,每个都是独立传输的数据,但是我们分的越多,带宽就越低,所以依旧是不能局限于仅仅使用信道划分。


随机访问MAC协议

  • 变发送数据,边检测冲突
  • 时隙ALOHA协议
    这个时隙的意思就是将这个随机传输数据随机到了时间上面,将时间划成等长的时间,然后再随机的时间内发送数据
    • 只能在每段时间的开始才能发送数据,中间不可,因为要保证在这个时间内是没有人能够恶意的来碰瓷发生冲突
    • 如果没有发生冲突,就一直以这个划分好的每一个时间的开始发送数据
    • 如果发生了冲突后,我就要延迟了,延迟到什么时候呢,就是每个时间开始的时候,我都会以p的概率进行发送,也就是说我可能不发。发的概率是p,不发的概率是1-p。
      在这里插入图片描述
  • 可以看到图中,我们只能在一个时隙内发生冲突(因为规定了在时隙开始才能发送)
  • 浪费的时隙比较多
  • 优点:
    • 高度分散化
    • 实现起来简单
  • ALOHA(纯)
    这个非时隙的ALOHA协议就是有新的数据帧就立马发出去
    (我心想这也要起名字?!)
    在这里插入图片描述
  • CSMA(载波监听多路访问)
    人话:监听信道是否空闲,有空闲就发送
    • 1坚持CSMA
    • 0坚持CSMA
    • p坚持CSMA
      1坚持即一直监听信道
      0坚持即信道忙的时候我不监听信道,等一段时间后我再监听
      p坚持即以概率p执行1坚持,以概率1-p执行0坚持
      注意:在CSMA中是监听信道是否空闲,而不是监听是否冲突

但是即使是这样我们的链路传输发生延迟的时候还是会发生冲突,因此我们不能立马监听到某地发送数据了,因此我们还需优化。

  • CSMA/CD
    人话:发送的时候 同时 监听是否冲突
    注意:这个是基于CSMA然后执行他自己添加的功能:边发边听是否冲突
    • 由于还是有延迟问题,所以我们必须要解决这个问题,那就是我们在设计链路的时候为了防止延迟冲突,就需要设计出在某个子网内的一个合理的最远链路距离。
      在这里插入图片描述

为什么要L/R>=RTT?因为是用最小的那个数据帧长度衡量,即Lmin是最小的,也就是说传输最快的,但是我们通告冲突的最极端的情况就是在快要送达目的的时候出现冲突,这时候就要开始通告我们冲突信息了,所以说我们通告的时间是希望RTT通告信号的时间尽可能快过网络带宽传输速度

  • 轮询(意指轮流询问)
    轮流询问,那询问必然需要一台管理主机。

    • 我们要一个master机器,他就是负责去邀请我们链路上的主机结点,过来问声:节点兄弟,你要不要发数据呀?发的话我可以帮你开路哦~,如果他不发就问下一个。
    • 缺点
      缺点也很明显,单点失效,就是万一他的这个master有一天down机,那我链路上的结点也就传不了数据了。
      而且要一个个问你很烦的呀,节点多的时候很久都可能轮不到你发。
  • 令牌传递
    在链路中发一个令牌,然后我们主机之间形成一个传递令牌的链路,就类似于现在炸弹游戏,一个个的轮流拿着令牌,在这个网络协议中只有拿令牌那一方可以发送数据。

    • 这个令牌是一个特殊帧,由一个主节点发放
    • 假如令牌在一定时间内还没轮传递,就会默认该令牌丢失了,主节点就会重新传一个特殊帧继续让主机们轮流传递令牌
    • 缺点:依旧是延迟,依旧单点故障,还有就是开销问题(令牌也要占据链路带宽)。
posted @ 2023-06-27 18:32  竹等寒  阅读(12)  评论(0编辑  收藏  举报  来源