• 计算机网络——数据链路层(介质访问控制)


    我们今天来继续介绍计算机网络数据链路层的知识。

    介质访问控制

    介质访问控制(Medium Access Control, MAC)是计算机网络中数据链路层的一个子层,负责管理和协调多个网络设备(如计算机、路由器、交换机、无线终端等)对共享传输介质(如以太网电缆、无线频谱等)的访问,以确保数据的有效、高效、公平传输。MAC 层的主要任务包括以下几个方面:

    1. 信道访问控制
    • 决定网络设备何时以及如何获得访问介质的权利,以发送数据帧。这通常涉及到冲突检测、避免和管理机制,如载波监听多路访问/冲突检测(Carrier Sense Multiple Access with Collision Detection, CSMA/CD)在以太网中的应用,或载波监听多路访问/碰撞避免(Carrier Sense Multiple Access with Collision Avoidance, CSMA/CA)在无线网络中的应用。
    • 实施各种介质访问控制协议,如轮询(Polling)、令牌传递(Token Passing)、预约(Reservation)等,以协调设备间的通信。
    1. 帧传输与接收
    • 封装上层数据(如网络层的IP数据包)为适合在物理层传输的数据帧,添加必要的帧头(如源和目标MAC地址、类型/长度字段、校验和等)和尾部(如帧校验序列,FCS)。
    • 对接收到的数据帧进行解析,验证其完整性(如通过校验和检查),提取出有效载荷(上层数据)并递交给上层协议处理。

    总的来说,介质访问控制是网络通信中的关键环节,它确保了多个设备能够有效地共享同一传输介质,避免或解决数据传输冲突,保证数据的正确传输,并可能提供错误检测、流量控制、拥塞控制和安全性等功能,为上层协议提供可靠的传输服务。

    介质访问控制,分为以下的几类:
    在这里插入图片描述

    静态划分信道

    静态划分信道的方法,在之前的物理层有较为详细的解释了,如果有不清楚的可以点击这里:

    https://blog.csdn.net/qq_67693066/article/details/136801008

    动态划分信道

    ALOHA协议

    ALOHA协议是一种早期的无线网络通信协议,主要用于解决多个设备在同一共享信道上进行数据传输时可能出现的冲突问题。它由美国夏威夷大学的Norman Abramson教授及其团队在20世纪60年代开发,最初应用于名为“ALOHA”的无线分组网络项目,这是世界上最早的无线电计算机通信网络之一。ALOHA协议对后续的随机接入协议(如CSMA/CD、CSMA/CA等)产生了重要影响,并在多种无线通信系统中得到应用,特别是在早期的卫星通信和无线数据网络中。

    ALOHA协议有两个主要版本:

    纯ALOHA(Pure ALOHA)

    原理

    纯ALOHA协议是最基础的形式,其工作原理非常简单:

    1. 随机发送:每个网络节点在有数据需要发送时,无需任何协调或预约,可以直接尝试发送数据包到共享信道上。
    2. 冲突检测:如果两个或更多的节点同时发送数据包,它们将在信道上产生冲突,导致数据包损坏或无法被正确接收。这种冲突通过接收端反馈的错误检测(如CRC校验失败)或超时重传机制来发现。
    3. 重传策略:当发送节点检测到冲突(通过接收端的否定确认(NACK)或自身设定的超时阈值),它会等待一段随机时间后重新尝试发送数据包。这个随机时间是为了减少再次冲突的概率,因为不同节点的重传时间点分散开,降低了在同一时刻重复发送相同数据包的可能性。

    在这里插入图片描述

    特点
    • 简单易实现:纯ALOHA不需要复杂的信道协调机制,节点操作简单,硬件实现成本较低。
    • 冲突概率较高:由于节点发送完全随机且无冲突检测机制,信道利用率相对较低,尤其是在高负载条件下,冲突概率显著增加,导致网络效率下降。

    分槽ALOHA(Slotted ALOHA)

    原理

    分槽ALOHA是对纯ALOHA的改进版,引入了时间同步和时间划分的概念:

    1. 时间同步:所有节点都按照预定义的时间间隔(称为时隙)进行同步,每个时隙足够传输一个完整的数据包。
    2. 定时发送:节点只能在时隙的起始时刻发送数据包,不能在时隙中间插入数据。这意味着所有节点的发送操作都限制在时隙边界,减少了冲突的可能性。
    3. 冲突检测与重传:如同纯ALOHA,如果两个或更多节点在同一个时隙发送数据,会产生冲突。冲突的检测与处理方式与纯ALOHA相同,即通过接收端的错误反馈或超时重传来识别冲突,并在随机延迟后重新尝试发送。

    在这里插入图片描述

    特点
    • 降低冲突:由于发送操作限于时隙起始,分槽ALOHA相比纯ALOHA显著减少了冲突发生的概率,提高了信道利用率。
    • 需要时间同步:分槽ALOHA增加了对节点时间同步的要求,增加了系统复杂性,但换取了更高的网络效率。

    总的来说,ALOHA协议以其简单的设计和易于实现的特点,为无线网络通信奠定了基础。尽管其信道利用率在高负载条件下受到限制,但通过后续的发展和改进(如CSMA/CA等),ALOHA的基本思想和原理依然在现代无线网络中发挥着重要作用,特别是在那些对成本敏感、对复杂性要求较低的场合。
    z

    CSMA协议

    CSMA(Carrier Sense Multiple Access,载波侦听多路访问)是一种介质访问控制(Medium Access Control, MAC)协议,用于协调多个网络设备(如计算机、路由器、交换机、无线终端等)在共享通信介质(如以太网电缆、无线频谱等)上发送数据,以避免数据传输冲突。CSMA协议的基本原理是“先听后说”,即在发送数据前先检测信道是否空闲,如果信道空闲则发送数据,否则等待一段时间后再次尝试。

    以下是CSMA协议的主要工作流程和特点:

    工作流程
    1. 载波侦听:设备在准备发送数据前,首先监听(侦听)信道状态,判断信道是否处于空闲状态。空闲状态意味着当前没有其他设备正在发送数据。

    2. 发送决策

      • 非坚持CSMA(Nonpersistent CSMA):如果信道空闲,设备立即发送数据;如果信道忙,设备放弃发送,等待一个随机的时间间隔后再重新开始载波侦听。
      • 1-坚持CSMA(1-Persistent CSMA):如果信道空闲,设备立即发送数据;如果信道忙,设备持续监听信道,直到信道变为空闲后立即发送数据。
      • p-坚持CSMA(p-Persistent CSMA):如果信道空闲,设备以概率p立即发送数据,以概率(1-p)延迟一个随机时间后再次侦听;如果信道忙,设备持续监听,直到信道变为空闲后执行上述决策过程。
    特点
    • 简单易实现:CSMA协议的逻辑相对简单,不需要复杂的中央调度或令牌传递机制,便于硬件实现和网络部署。
    • 自适应性:CSMA协议能够根据网络负载动态调整发送行为,如通过随机退避算法降低冲突概率,提高信道利用率。
    • 适用于轻到中度负载网络:在低到中等网络负载下,CSMA协议能够有效避免冲突,提供较好的网络性能。然而,随着网络负载增加,冲突概率增大,信道利用率可能会显著下降。

    在这里插入图片描述

    CSMA-CD 协议

    CSMA-CD(Carrier Sense Multiple Access with Collision Detection,载波侦听多路访问/冲突检测)是一种应用于有线局域网(如以太网)的介质访问控制(Medium Access Control, MAC)协议,主要用于解决多个设备共享同一物理传输介质(如同轴电缆、双绞线)时的数据传输冲突问题。CSMA-CD协议的工作原理和主要特征如下:

    工作原理
    1. 载波侦听:在发送数据前,节点先监听(侦听)信道是否空闲。如果信道处于空闲状态(没有其他节点正在发送数据),节点才开始发送数据。
    2. 发送数据:一旦节点确定信道空闲,便开始发送数据帧。在发送过程中,节点继续监听信道,以便及时发现可能发生的冲突。
    3. 冲突检测:如果在数据发送过程中,节点检测到信道上有其他节点同时发送数据(表现为信号强度突然升高),则认为发生了冲突。冲突检测通常通过比较接收到的信号与发送信号的幅度差来实现。
    4. 冲突处理
    • 停止发送:一旦检测到冲突,节点立即停止发送当前数据帧,以减少无效的信号冲突。
    • 发送阻塞信号:为了使其他冲突节点也能迅速检测到冲突并停止发送,节点发送一个短暂的阻塞信号(jamming signal),该信号的能量足以使所有冲突节点都能检测到冲突。
    • 退避算法:所有参与冲突的节点按照一定规则(如二进制指数退避算法)等待一个随机时间后,重新尝试发送数据。退避时间的设定有助于避免冲突节点在同一时刻再次尝试发送,从而降低二次冲突的概率。
    1. 重传与超时:节点在等待随机退避时间后,重新开始载波侦听,如果信道空闲则再次发送数据。对于每个数据帧,节点设置一个最大重传次数(如16次)。若经过最大重传次数仍未成功发送,节点丢弃该帧,并向上层协议报告传输失败。此外,节点还设置一个超时计时器,防止因信道故障等原因导致数据帧无限期等待。
    主要特征
    • 自适应性:CSMA-CD协议允许节点根据信道的实际使用情况动态调整其发送行为,通过载波侦听、冲突检测和退避机制,减少了冲突的发生,提高了信道利用率。
    • 适用于轻到中度负载网络:在低到中等网络负载下,CSMA-CD协议能有效避免冲突,提供良好的网络性能。随着网络负载增加,冲突概率增大,信道利用率可能下降,但通过退避算法可以一定程度上缓解这个问题。
    • 有线环境适用:CSMA-CD协议特别适用于有线网络,尤其是以太网。在有线环境下,由于电磁波传播速度极快(接近光速),冲突几乎瞬间就能被所有冲突节点检测到,使得冲突检测和管理更为有效。
    • 面向广播型网络:CSMA-CD协议适用于总线型或树形结构的广播网络,所有节点共享同一物理介质,数据帧可以被网络中的所有节点接收。

    总结而言,CSMA-CD协议通过载波侦听、冲突检测、冲突处理(包括停止发送、发送阻塞信号、退避算法)等机制,为有线局域网中的多个节点提供了一种有效的共享信道、避免和管理冲突的方法。该协议在以太网等有线网络中广泛应用,对现代局域网技术的发展起到了关键作用。

    CSMA-CA

    CSMA-CA(Carrier Sense Multiple Access with Collision Avoidance,载波侦听多路访问/冲突避免)是一种应用于无线局域网(如Wi-Fi,遵循IEEE 802.11标准)的介质访问控制(Medium Access Control, MAC)协议,用于解决多个设备共享同一无线信道时的数据传输冲突问题。由于无线环境的特性(如信号衰减、多径效应、隐藏终端等问题),直接检测冲突(如CSMA-CD中的冲突检测)既困难又代价高昂。因此,CSMA-CA侧重于通过多种手段预测并避免冲突的发生,而不是检测和处理冲突。其工作原理和主要特征如下:

    工作原理
    1. 载波侦听:在发送数据前,节点先监听(侦听)信道是否空闲。如果信道处于空闲状态(没有其他节点正在发送数据),节点才开始发送数据。
    2. 能量检测:除了传统的载波侦听外,节点还通过检测信道上的总能量水平来判断是否存在潜在的冲突。即使无法检测到清晰的信号,高能量水平也可能表明有其他节点正在进行传输。
    3. 发送前的交互:为减少冲突,CSMA-CA引入了额外的控制帧来协调发送。例如,使用RTS(Request To Send)/CTS(Clear To Send)握手机制:
    • 发送节点在发送数据帧前,先发送一个RTS帧,请求信道使用权。
    • 接收节点收到RTS帧后,如果信道空闲且愿意接收数据,回复一个CTS帧,授予发送节点信道使用权。
    • 其他监听到RTS或CTS的节点在此期间会暂时停止发送,避免与数据传输冲突。
    1. 帧间间隔:为防止连续帧之间发生冲突,CSMA-CA规定了帧间间隔(Interframe Space, IFS)。IFS包括短帧间间隔(Short Interframe Space, SIFS)、分布式协调功能间隔(Distributed Coordination Function Interframe Space, DIFS)和扩展帧间间隔(Extended Interframe Space, EIFS)。不同的IFS用于不同类型的帧之间,确保节点有足够的时间接收和处理控制帧,以及避免不必要的冲突。
    2. 退避算法:如果节点在发送数据前检测到信道忙或发生冲突,将按照退避算法等待一个随机时间后再次尝试发送。常用的退避算法包括二进制指数退避算法,随着重试次数增加,等待时间呈指数增长,以降低连续冲突的概率。
    主要特征
    • 冲突避免为主:CSMA-CA侧重于通过预测和避免冲突,而不是检测和处理冲突。通过能量检测、RTS/CTS握手、IFS等机制,尽量减少冲突的发生。
    • 适应无线环境特性:考虑到无线环境的特殊性(如信号衰减、多径效应、隐藏终端等),CSMA-CA采用了更为复杂和灵活的冲突避免策略,以应对无线网络特有的挑战。
    • 较高的开销:相较于CSMA-CD,CSMA-CA引入了额外的控制帧(如RTS、CTS)和等待时间(如IFS),增加了网络的开销。但在高密度、高干扰的无线环境中,这些开销有助于提高网络的稳定性和吞吐量。
    • 面向点对点和广播通信:CSMA-CA不仅支持单播(点对点)通信,也支持广播和多播通信。在广播和多播场景中,通常不使用RTS/CTS握手,而是采用其他机制(如帧间间隔、帧聚合等)来减少冲突。

    总结来说,CSMA-CA协议通过载波侦听、能量检测、发送前的交互(如RTS/CTS握手)、帧间间隔和退避算法等机制,为无线局域网中的多个节点提供了一种有效的共享无线信道、预测并避免冲突的方法。该协议在Wi-Fi等无线网络中广泛应用,对于保障无线网络的稳定性和效率至关重要。

    CSMA-CD和CSMA-CA之间的区别

    CSMA-CD(载波侦听多路访问/冲突检测)与CSMA-CA(载波侦听多路访问/冲突避免)是两种应用于不同网络环境的介质访问控制(MAC)协议,虽然它们都基于载波侦听的基本原则,但因应有线和无线网络特性的差异,在具体实现和工作方式上存在显著区别。以下是CSMA-CD与CSMA-CA之间的主要区别:

    应用环境
    • CSMA-CD:专为有线局域网设计,如以太网(Ethernet),适用于总线型或环形拓扑结构,其中所有节点通过同一条共享物理介质(如双绞线、同轴电缆)进行通信。
    • CSMA-CA:专为无线局域网设计,如Wi-Fi(遵循IEEE 802.11标准),适用于星型、adhoc或mesh拓扑结构,其中节点通过无线电信号在共享的无线信道上进行通信。
    冲突检测与处理
    • CSMA-CD:在发送数据的同时持续监听信道,当检测到冲突(即信号强度突然升高)时,立即停止发送,并发送一个短小的阻塞信号(jamming signal)通知其他冲突节点。随后,冲突节点按照退避算法等待随机时间后重新尝试发送。
    • CSMA-CA:由于无线环境中直接检测冲突难度较大且成本高,CSMA-CA侧重于通过预测和避免冲突。它采用能量检测、RTS/CTS握手机制、帧间间隔等手段预测冲突,并在发送前等待信道空闲。如果发生冲突,节点通过退避算法等待随机时间后重新尝试发送,但不发送阻塞信号。
    控制帧与握手
    • CSMA-CD:不使用专门的控制帧或握手过程来协调发送。节点仅依据载波侦听结果决定是否发送数据。
    • CSMA-CA:使用RTS(Request To Send)和CTS(Clear To Send)等控制帧进行发送前的握手。发送节点发送RTS请求信道使用权,接收节点回应CTS确认信道可用。其他节点监听到RTS或CTS时会暂时停止发送,以避免与数据传输冲突。
    开销与效率
    • CSMA-CD:由于不涉及额外的控制帧和握手过程,CSMA-CD的开销相对较小。在低到中等网络负载下,CSMA-CD能提供较高的信道利用率和传输效率。
    • CSMA-CA:由于引入了RTS/CTS握手、能量检测等机制,CSMA-CA的开销相对较大。但在高密度、高干扰的无线环境中,这些开销有助于降低冲突率,提高网络的稳定性和整体吞吐量。
    适用场景
    • CSMA-CD:适用于有线局域网,尤其是对成本敏感、对延迟要求不高的场景,如办公室、家庭、学校等环境的有线网络连接。
    • CSMA-CA:适用于无线局域网,特别是在移动性强、节点分布不固定、环境干扰复杂的场景,如公共场所的Wi-Fi覆盖、智能家居、移动设备之间的无线通信等。

    总结来说,CSMA-CD和CSMA-CA虽然都基于载波侦听原理,但分别针对有线和无线网络的特性进行了优化。CSMA-CD依赖直接的冲突检测和快速恢复,适用于结构相对简单的有线网络;而CSMA-CA侧重于冲突预测与避免,通过额外的控制机制适应无线环境的复杂性和不确定性。两者在开销、效率、适用场景等方面各有优势,分别在各自的网络环境中发挥着重要作用。

    轮询访问

    轮询访问(Polling)是一种网络通信中的介质访问控制(Medium Access Control, MAC)机制,通过中央控制器(如主站、基站、交换机等)按照预设顺序或规则逐一询问网络中的各个节点(如从站、终端设备、工作站等),询问其是否有数据需要发送。若有数据待发送,中央控制器给予发送权限,节点在获得权限后发送数据;若无数据待发送,则跳过该节点,继续询问下一个节点。轮询访问主要用于主从式网络结构或集中式控制的网络环境中,如令牌环网、点对点通信、远程监控系统等。其工作原理和特点如下:

    工作原理

    1. 中央控制器主导:轮询访问中,网络通信由中央控制器全权掌控。中央控制器按照预定顺序或规则依次询问每个节点,节点只有在被询问时才有机会发送数据。
    2. 节点被动响应:网络中的节点在未被询问时处于等待状态,无法主动发起数据传输。当被中央控制器询问时,节点响应是否有数据待发送,如有则在获得发送权限后发送数据。
    3. 通信顺序与规则
    • 固定轮询:中央控制器按照预设的固定顺序询问节点,如按照节点编号从小到大或从大到小。
    • 优先级轮询:根据节点的优先级(如紧急程度、服务质量要求等)动态调整轮询顺序,优先询问高优先级节点。
    • 需求驱动轮询:中央控制器仅询问已声明有数据待发送的节点,减少无数据节点的询问次数。
    1. 数据传输过程:节点在获得发送权限后,按照规定格式发送数据至中央控制器。中央控制器接收数据,进行处理(如错误检测、协议解析等),然后可能向节点发送确认消息或响应数据。
    2. 轮询周期:一轮完整的轮询过程称为一个轮询周期。轮询周期的长短直接影响网络的响应时间和吞吐量。较短的轮询周期可以提高响应速度,但可能增加中央控制器的负担和网络开销;较长的轮询周期则可能导致响应延迟,但可能降低开销并允许节点有更长的时间准备数据。

    特点

    • 集中控制:轮询访问的控制权高度集中在中央控制器,易于实现网络管理与监控,有利于保证数据传输的有序性和可靠性。
    • 低冲突:由于节点只有在被询问时才能发送数据,且一次只有一个节点发送,大大降低了数据传输冲突的概率。
    • 响应时间可预测:轮询访问的响应时间与轮询周期和节点在轮询列表中的位置有关,对于实时性要求较高的应用,可以通过合理设置轮询周期和顺序来保证响应时间。
    • 效率受网络规模影响:随着网络规模增大,轮询周期可能显著延长,导致响应时间增加、吞吐量下降。对于大规模网络,轮询访问的效率可能不如其他分布式访问控制机制(如CSMA、TDMA等)。
    • 适用于低数据流量、低延迟要求的场景:轮询访问适用于数据流量较小、实时性要求较高、节点间通信不频繁的网络环境,如工业控制系统、远程监控系统、点对点通信等。

    轮询访问是一种由中央控制器主导、节点被动响应的介质访问控制机制,适用于需要集中控制、低冲突、响应时间可预测的网络环境。其优点在于易于管理、低冲突、响应时间可预测,但随着网络规模增大,效率可能会下降,更适合应用于数据流量较小、实时性要求较高的场景。

    令牌传递协议

    令牌传递协议(Token Passing Protocol)是一种网络通信中的介质访问控制(Medium Access Control, MAC)机制,主要用于解决多节点共享同一通信信道时如何公平、有序地进行数据传输的问题。在令牌传递网络中,一个特殊的控制标志,即“令牌”(Token),在节点间按照预定义的顺序循环传递。只有持有令牌的节点才被授权发送数据,当数据发送完成后,节点将令牌传递给下一个节点,允许其发送数据。令牌传递协议的工作原理和特点如下:

    工作原理

    1. 令牌初始化与传递:网络启动时,令牌被初始化并赋予第一个节点。节点在持有令牌期间,可以发送数据。数据发送完毕后,节点将令牌传递给下一个节点。令牌在节点间按照预定义的顺序(如逻辑环、树状结构等)循环传递。
    2. 数据传输:当节点接收到令牌时,检查自身是否有数据需要发送。如果有数据,节点在持有令牌期间发送数据;如果没有数据或数据发送完毕,节点立即将令牌传递给下一个节点。在令牌传递过程中,其他节点均处于等待状态,不允许发送数据。
    3. 令牌丢失与恢复:若在令牌传递过程中发生令牌丢失(如节点故障、网络中断等),网络需要有一种机制(如超时机制、令牌请求帧等)来检测并恢复令牌传递。恢复过程可能包括重新初始化令牌、重新选举令牌持有者等。
    4. 令牌类型
    • 固定令牌传递:令牌在网络中按照固定顺序循环传递,每个节点在固定的时间间隔内有机会获得令牌。
    • 优先级令牌传递:令牌在网络中按照节点的优先级顺序传递,高优先级节点可以更快地获得令牌。在某些实现中,高优先级节点甚至可以打断当前令牌持有者的传输,立即获取令牌。
    1. 令牌环网络:令牌传递协议常用于令牌环网络(Token Ring Network),这是一种采用物理环形拓扑的局域网。在这种网络中,令牌沿着物理环路从一个节点传递到下一个节点,只有持有令牌的节点才能发送数据。

    特点

    • 有序访问:令牌传递协议确保了节点访问信道的有序性,每个节点只有在持有令牌时才能发送数据,避免了数据传输冲突。
    • 公平性:所有节点都有平等的机会获得令牌并发送数据,网络资源(信道使用权)在节点间均匀分配,实现了公平性。
    • 响应时间可预测:由于节点发送数据的时机取决于令牌到达的时间,响应时间相对可预测,适用于对实时性要求较高的应用。
    • 网络效率:在轻负载情况下,令牌传递协议的效率较高,因为没有冲突检测和退避机制的开销。但在重负载或大量节点等待发送数据的情况下,令牌传递的等待时间可能较长,降低网络效率。
    • 网络恢复能力:令牌传递协议通常包含令牌丢失检测与恢复机制,能够在网络异常时恢复令牌传递,保证网络的连贯性和稳定性。

    在这里插入图片描述

    总结来说,令牌传递协议是一种基于令牌在节点间有序传递来控制信道访问的介质访问控制机制,具有有序、公平、响应时间可预测等优点,适用于对实时性要求较高、节点间通信有序且冲突较少的网络环境,如工业控制网络、令牌环网络等。然而,其网络效率在重负载或大量节点等待发送数据的情况下可能下降,且需要额外的机制来处理令牌丢失问题。

  • 相关阅读:
    域名扫描工具subDomainBrute源码分析
    JavaWeb中的VUE快速入门
    Visual Studio清单作用
    spring接口多实现类,该依赖注入哪一个?
    Cpp浅析系列-STL之deque
    使用github托管博客后添加clouldflare,用CDN加速时配置DNS遇到的问题
    C++的explicit是什么?
    kuangbin专题六 最小生成树(2022.9.3)
    最佳实践-SQL语法校验
    vue3全局自定义指令实现按钮权限控制
  • 原文地址:https://blog.csdn.net/qq_67693066/article/details/138026692