计网介质访问控制子层

该层是用来确定多路访问信道下一个使用者的协议属于数据链路层的一个子层,称为介质访问控制(Medium Access Control) 子层,也叫MAC 子层。注意这章的标题是“子层”,也就是说这一章的内容还是属于数据链路层,是它的一个子层,虽然出现的章节比第三章要晚,但实际上却是整个数据链路层的底层。

因为在同一介质中相同频率波段的传输信号会相互干扰,导致无法得到有效的信号,而采用频率,时间区别不同信号又无法最大限度地利用资源,这时候就希
望有种协议可以协商三个以上的机器如何可以在没有统一调度的前提下“遵守秩序”“不打断别人”地发言,让介质顺利被利用不产生冲突。数据链路层的两点之间可靠传输有个前提,首先要确定到底是哪个点可以获得信道开始传输。所以说这一章内容是数据链路层的底层。

上图为本章考试重点,非原书结构,仅供参考。

多路访问协议

ALOHA 系统

纯ALOHA

用户有数据就发送,不考虑信道是否空闲,只管发。用户如果发现有冲突,则随机等待一段时间后再发。它的意义在于提出了非协调用户竞争使用单个共享信道的系统的问题,现实中已不使用,详见P203。

分槽ALOHA

为了提高发送的容量,将时间分成了离散的间隔,称为时间槽,用户只能在槽边界发数据,减少了冲突期,将吞吐量提升了一倍。详见P204,P205

CSMA

载波检测多路访问(Carrier Sense Multiple Access)指每个站监听线路上是否有载波(传输),并据此采取相应的动作的方式。相比ALOHA的先发后听,这是先听后说,大大地提高了利用率。

1 坚持,0 坚持,p 坚持的CSMA

  • 1 坚持:当一个站有数据要发送时,它首先侦听信道,确定当时是否有其他站正在传输数据;如果信道空闲,就发送数据,如果信道忙,该站持续坚持监听信道,直到空闲,一旦监听到空闲,则站立即发送一帧。如果发生冲突,该站等待一段随机的时间,然后从头开始上述过程。这样的协议之所以称为1坚持,是因为当站发现信道空闲时,它传输数据的概率为1。
  • 非坚持:如1 坚持一样监听信道如果空闲则发,然而如果信道当前正在使用中,则该站并不持续对信道进行监听。相反,它会等待一段随机时间,然后重复上述算法。因此,该算法将会导致更好的信道利用率,但是比起1-坚持也带来了更大的延迟。
  • P 坚持:以概率P 发送数据,以概率q=1-P 将此次发送推迟到下一个时间槽发送。如果下一个时间槽也是空闲的,则它还是以概率P 发送数据,或以概率q 再次推迟发送。该过程一直重复,直到帧被发送出去,或者另一个站开始发送数据。属于两种方式的改良,直觉上保证了“有礼貌”地在信道上不打断其他站的传输且只在空闲的时候传输就可以解决多路访问的冲突问题。

但是这三个协议都没有解决在多个站同时监听到空闲后都发送时会导致的信号混杂从而冲突的情形,如果有协议保证站可以迅速监听到冲突后立即停止,则可以最大程度上节省了注定失败的传输所占用信道的时间和带宽,这种协议就是下面的带冲突检测的CSMA,也是现在以太网实际采用的协议。

CSMA/CD

带冲突检测的CSMA(CSMA with Collision Detection)P207,P208

不止在发前监听信道,在信号发送过程中发送方也要持续监听信道,如果发现线路上的信号与自己发送的信号不一致(即产生了冲突),则立刻停止传输信息,发送一段48bit的阻塞信号告诉与自己发生冲突的站不要漏检这次冲突,之后它等待一段时间再发送。

如何确保发送方意识到冲突是这个协议着重解决的问题,也就是发送时间需要足够长,保证即使是另一端的产生冲突的信号传过来自己也还在发,不至于发完了不再监听信道后不知道自己这次的传输已经失败了。也就是说需要至少发满信号跑一个

无线局域网协议

无线局域网与有线局域网的不同

  1. 两者的传输介质有着本质区别,也正是这种区别,导致WLAN 存在新的问题:隐藏终端问题和暴露终端问题。
  2. 两者传输范围有区别:WLAN 中,无线电传输范围有限,一个站不能给所有其他站发送帧,也无法接收来自所有其他站的帧;在有线局域网中一个站发出一帧,所有其他站都能接收到。
  3. 信道检测方式不同:WLAN 采用能量检测、载波检测和能量载波混合检测三种检测信道空闲的方式;以太网通过电缆中电压的变化来检测。
  4. 在WLAN 中,对某个节点来说,其刚刚发出的信号强度要远高于来自其他节点的信号强度,也就是说它自己的信号会把其他的信号给覆盖掉,但在本节点处有冲突并不意味着在接收节点处就有冲突。

详见p214

MACA 冲突避免多路访问

(Multiple Access with Collision Avoidance)

隐藏终端问题

A 给B 发,但C 的信号接收覆盖范围没法覆盖到A,导致不知道A 在给B 发,误以为B空闲,一旦发送,则信号会冲突干扰,导致失效。可以看到,问题的关键在于C 无法知道B的接收情况,因为之前的监听是在发送方C 自己这里进行的。这个问题是致命的。

暴露终端问题

B 给A 发,此时C 想要发送信号给D,但C 监听到介质上有信号传输,则会等待B 传输结束再进行给D 的传输,但实际上这种等待是不必要的因为C 即使发给D 也不会干扰A 的接收信号,因为干扰只在接收方端产生,所以这种问题带来了效率的降低,根源还是在于C不知道接收方A 的情况,只知道自己附近发送方B 的情况。但注意并不是致命的,因为还是没有破坏传输。

RTS(Request To Send)和CTS (Clear To Send)

为了解决上面两个问题,即之前的CSMA 只能监听到发送方附近而不是接收方附近介质情况根本问题,希望能通过协议让接收方也“发言”,即通过这次信号让接收方附近的站点也能感受到接收方的存在,从而避免后续的继续发送造成该接收方的冲突。
解决的方案就是发送方先发RTS,之后接收方回CTS 信号,并从这个信号中包含这次传输的持续时长信息保证让此时长内接收方附近站点主动静默,从而不会使其受到干扰。

即一个点如果只听到RTS,没有听到CTS,说明它在发送方的发送范围内,却不在接收方的发送范围内,则它只要不干扰发送方收CTS,即可随便发送。解决了暴露终端问题。
一个点如果只要听到CTS 说明它就在接收方发送范围内,此时它要保持静默到持续时长,直到此次传输结束它再进行发送,否则会干扰接收方接收。解决了隐藏终端问题。

CSMA/CA

带有冲突避免的CSMA(CSMA with Collision Avoidance)P234—P236。它是802.11 MAC 子层协议的核心协议,与之前的MACA 相比,它引入了短确认确保每
一帧的发送成功,即数据发送后站启动确认计时器,如果计时器时间到但没有收到接收方回复的收到的确认,则试图重新发送。但在RTS 和CTS 方面并没有考虑暴露终端问题。

  1. RTS 和CTS

    与MACA 类似,但是将规则改成了听到RTS 后也停止传输一切东西,直到此次数据传输结束后再进行传输。这样其实是无法解决暴露终端问题的,但由于考虑到暴露终端问题是效率问题而不是致命问题,且处理这个不经常发生的问题需要耗费操作时间,所以就进行了舍弃。

  2. NAV 网络分配向量(Network Allocation Vector)P236

    每个站保留的信道何时要用的逻辑记录,每个帧携带一个NAV 字段,说明这个帧所属的一系列数据将传输多长时间。所有听到数据帧的站将在发送确认期间推迟发送,不管能否真正听到确认的发送。

  3. 二进制指数后退的CSMA/CA P220,P234

    侦听很短的一段时间后发现没有信号,则随机选择0-15 个时间槽进行倒计时倒数,当听到有帧发送时暂停倒计时,空闲时计数,到0 时就发送,如果发送成功则目标站会发送一个短确认,如果没收到确认,则发送方加倍自己选择的时间槽数,重新试图发送。如此反复,直到成功发送帧或达到最大重传次数。

以太网

经典以太网

经典以太网MAC 子层的帧格式

具体字段内容解释见课本P218——P220,注意由于冲突检测要求有效数据必须大于64个字节,所以不算前导码的8 位,用户Data 段为0 时,此时帧的最短长度只有18 个字节,所以存在最长为46 字节的填充位(18+46 = 64).

交换式以太网

以交换机为核心设备而建立起来的一种高速网络。可在高速与低速网络间转换,实现不同网络的协同。交换机分割了连接的不同网络成为不同的冲突域,不同冲突域之间信号不会彼此干扰,所以不用考虑不同自治域间的冲突问题。

交换机(网桥)

工作原理

网桥工作在数据链路层,将多个LAN 连接起来,通过检查数据链路层地址来转发帧。

  • 当一帧到达时,网桥必须决定是将该帧转发还是丢弃
  • 如果决定转发,还必须要决定在哪个端口传输帧
  • 网桥通过在其内部配备一个大的(哈希)表来查询一帧的目的地址,该表中列出了每一个可能的目的地址以及它隶属的输出端口
  • 当网桥第一次被接入网络时,所有的哈希表都是空的,网桥使用洪泛算法完善哈希表。
  • 其具体转发过程为:
    1. 目的地址的端口与源端口相同,则丢弃该帧
    2. 目的地址的端口与源端口不同,则转发该帧到目的端口
    3. 目标地址端口未知,则使用洪泛算法,将帧发送到所有的端口,除了他入境的那个。

目的地-端口哈希表(转发表)的获得

泛洪算法:不需要知道网络的拓扑结构和相关的路由计算,仅要求接收到信息的节点以广播的形式转发数据包。

对于每个发向未知目的地址的入境帧,网桥将他输送到所有的端口,除了它到来的那个端口,慢慢的网桥学习到目标地址在哪里)和向后学习法(通过检查每个窗口上发送的所有帧的源地址,网桥就可获知通过那个窗口能访问到哪些机器。

中继器/集线器/网桥/交换机/路由器/网关的对比

中继器:物理层,模拟设备,用于连接两根电缆段,放大信号。

集线器:物理层,有许多输入线路,它将这些输入线路连接起来,在任何一条线路上到达的帧都被发送到其他线路上。

交换机:数据链路层,多端口的网桥。根据帧的目的地址转发,常被用来连接独立计算机。

路由器:网络层,当一个分组进入到一个路由器中的时候,帧头和帧尾被剥掉,位于帧的IP 分组被传递给路由软件,路由软件利用分组的头信息来选择一条输出线路。

网关:传输层,应用层。应用网关是将一个网络与另一个网络进行相互连通,提供特定应用的网际间设备,应用网关必须能实现相应的应用协议。应用网关可设在应用层或传输层。设在应用层的叫应用层网关,也称代理服务器。设在传输层的叫传输层网关。