🗒️计算机网络
00 分钟
2024-9-20
2024-11-24
type
status
date
slug
summary
tags
category
icon
password

一、材料

二、物理层

 
 
 
 

三、数据链路层

 
介质访问控制(MAC,Medium Access Control)中,动态分配信道和静态分配信道是两种不同的资源管理方式,用于多个节点共享通信信道时的冲突控制和资源分配。它们在如何分配信道、应对网络负载的变化等方面存在明显差异。

静态分配信道(Static Channel Allocation):

静态分配信道方法预先为每个节点分配一个固定的信道或者时隙,无论网络负载如何变化,这种分配都是固定的。

特点:

  1. 固定信道分配:每个节点或设备在系统启动时被分配一个固定的信道或时隙,该信道或时隙是该节点的专有资源。
  1. 不依赖网络负载:无论网络上的节点是否活跃,信道的分配是固定的,即使某些时段节点不发送数据,信道也无法被其他节点利用。
  1. 适用场景:适合于负载较为固定、节点数量已知且变化不大的场景,例如传统的电话系统(使用频分多址 FDMA 或时分多址 TDMA 技术)。
  1. 效率较低:如果某些节点的通信需求低或不活跃,信道资源会被浪费,利用率不高。

举例:

  • FDMA(频分多址):将可用的频谱划分为多个频段,每个节点或用户占用一个固定频段。
  • TDMA(时分多址):将时间划分为多个时隙,每个节点在其专有的时隙中发送数据。

动态分配信道(Dynamic Channel Allocation):

动态分配信道方法根据网络负载的变化和节点的需求,动态分配信道资源,允许节点在通信时根据需要竞争或请求信道资源。

特点:

  1. 按需分配信道:节点只在有数据发送时才申请信道,并根据当前网络的负载情况动态分配信道资源。
  1. 依赖网络负载:信道资源的分配与网络上节点的通信需求密切相关。如果有多个节点同时需要信道,系统通过一定的机制进行调度和竞争。
  1. 提高效率:动态分配信道能够根据实际通信需求更有效地利用信道资源,避免资源浪费,尤其在节点负载变化较大的情况下能显著提高信道利用率。
  1. 适用场景:适合负载动态变化、节点数量变化较大或通信需求不均衡的场景,如无线局域网(Wi-Fi)的 CSMA/CA 协议。

举例:

  • CSMA/CA(载波监听多路访问/冲突避免):节点先监听信道是否空闲,空闲时发送数据,冲突后通过随机退避机制减少重发冲突。
  • ALOHASlotted ALOHA:节点随机选择发送时刻,信道冲突后进行重发。

静态分配与动态分配的区别:

特性
静态分配信道
动态分配信道
资源分配方式
预先固定分配
按需动态分配
信道利用率
低,容易出现资源浪费
高,能够根据需求灵活分配
适应负载变化
不适应,负载变化时资源无法调整
高度适应,负载变化时可动态调整
复杂度
低,实现简单
高,需要复杂的调度和竞争机制
适用场景
负载较为固定,节点数较少
负载动态变化,节点数较多
典型技术
FDMA、TDMA
CSMA/CA、ALOHA、动态频谱分配

总结:

  • 静态分配信道适合通信需求较为固定、稳定的场景,资源分配简单,但可能导致资源浪费,无法适应网络负载的变化。
  • 动态分配信道更灵活,能够根据网络负载和节点需求动态分配信道资源,尤其适合通信需求动态变化的场景,但通常实现复杂度更高。
 
ALOHA 是一种早期的随机访问协议,用于多个用户共享通信信道时的介质访问控制。它通过允许节点在任何时候发送数据包来解决通信竞争问题,但同时引入了冲突和重发的概念。ALOHA 协议的两种主要变体是 纯ALOHA(Pure ALOHA)和 时隙ALOHA(Slotted ALOHA)。它们在信道的利用效率和冲突管理方面有所不同。

1. 纯ALOHA(Pure ALOHA)

工作原理
  • 节点在有数据时,随时可以发送数据,而不需要进行任何时隙的划分或信道监听。
  • 由于节点无法得知其他节点是否在发送数据,因此很容易发生冲突。
  • 发送的数据帧如果发生冲突,节点会等待一段随机时间,然后重发数据。
冲突处理
  • 冲突检测通过接收确认(ACK)来进行。如果数据成功发送,节点会收到确认。若在一定时间内未收到确认,节点就认为发生了冲突,然后随机等待一段时间后重发。
优点
  • 实现简单,节点可以随时发送,不需要时隙或同步。
缺点
  • 由于节点在任意时刻都可能发送数据,冲突概率较高,信道利用率较低。
最大信道利用率
  • 在理想条件下,纯ALOHA的最大信道利用率约为 18.4%,即 0.184。

2. 时隙ALOHA(Slotted ALOHA)

工作原理
  • 时隙ALOHA 引入了时间的时隙划分概念,节点只能在时隙的开始时发送数据。这意味着时间被划分为等长的时隙,节点的发送行为必须与这些时隙同步。
  • 节点在有数据时,不会立即发送,而是等待下一个时隙的开始再发送。
  • 因为数据只能在时隙开始时发送,因此冲突只能在时隙的边界发生,冲突的概率比纯ALOHA低。
冲突处理
  • 同样地,发送的数据如果没有收到确认,节点会随机等待一段时间后重发数据。
优点
  • 由于发送被限制在时隙的开始,冲突的时间窗口缩小,因此冲突概率降低,信道利用率比纯ALOHA高。
缺点
  • 需要节点对时隙进行同步,实现复杂度稍高。
  • 数据必须等待时隙的开始才能发送,可能引入一些延迟。
最大信道利用率
  • 在理想条件下,时隙ALOHA的最大信道利用率约为 36.8%,即 0.368。

纯ALOHA 与 时隙ALOHA 的比较:

特性
纯ALOHA(Pure ALOHA)
时隙ALOHA(Slotted ALOHA)
发送时机
任意时刻可以发送
只能在时隙的开始发送
实现难度
简单,无需同步
需要时隙同步
冲突概率
高,因为可以在任意时间发生冲突
低,因为冲突只能在时隙边界发生
信道利用率
约 18.4%
约 36.8%
冲突处理机制
随机退避后重发
随机退避后重发
适用场景
通信需求较低或对冲突容忍较高的场景
对资源利用率有更高要求的场景

总结:

  • 纯ALOHA 实现简单,但由于允许在任意时间发送数据,导致冲突较多,信道利用率较低。
  • 时隙ALOHA 引入了时隙的概念,减少了冲突的概率,因此信道利用率较高,但增加了同步时隙的复杂性。
总体来说,时隙ALOHA在大多数情况下性能优于纯ALOHA,特别是当网络中有大量节点竞争信道时,时隙ALOHA能更有效地利用资源。
 

1-坚持 CSMA 和非坚持 CSMA 的区别:

  1. 1-坚持 CSMA
      • 当节点发现信道空闲时,立即发送数据(坚持发送)。
      • 如果检测到信道忙,则节点持续监听,直到信道变为空闲,然后立即发送。
      • 如果发生冲突,节点会停止发送并随机退避一段时间,之后再重新开始监听信道,并在信道空闲时再次发送。
  1. 非坚持 CSMA
      • 当节点发现信道忙时,它不会持续监听,而是随机等待一段时间再重新监听信道。
      • 非坚持 CSMA 不会在信道忙时坚持等待,而是先进行退避再尝试发送,从而避免在信道忙时不断争抢。

核心区别:

  • 1-坚持 CSMA 是在信道空闲时立即发送,但冲突发生后会通过退避机制来减少重复冲突。它的特点是只要信道空闲,节点就立刻发送数据,不会等待。
  • 非坚持 CSMA 则是在信道忙时选择不持续监听,而是直接进行退避,避免过多的竞争。

退避机制为何不算非坚持:

1-坚持 CSMA 的退避机制只在冲突发生后启动,而非坚持 CSMA 则是在信道忙时即主动退避。这意味着 1-坚持 CSMA 在平常情况下是积极监听和发送的,只是在冲突时为了避免再次冲突而引入退避。而非坚持 CSMA 更加保守,在检测到信道忙时就主动退避,不坚持发送。
因此,虽然 1-坚持 CSMA 在冲突后会退避,但它的核心特性依然是“坚持”发送,而不是像非坚持 CSMA 那样主动退避信道竞争。
 
p-坚持 CSMA 中,CSMA 协议引入了一个概率机制来决定是否立即发送数据,从而在某些情况下既减少了冲突的可能性,又保留了 1-坚持的积极性。p-坚持 CSMA 是 1-坚持 CSMA 和非坚持 CSMA 之间的一种折中。

p-坚持 CSMA 工作原理:

  1. 监听信道:当节点检测到信道空闲时,它不会立即发送数据,而是以概率p决定是否发送。
      • 如果以概率p选择发送,节点立即发送数据。
      • 如果以概率p选择不发送,节点则推迟一个时隙,然后重新进行相同的概率判断,直到信道不再空闲或发送成功。
  1. 冲突检测:如果发生冲突,节点会停止发送并采用类似 1-坚持 CSMA 的退避机制(如指数退避)来随机等待一段时间,然后再重新尝试发送。

p-坚持与 1-坚持、非坚持的区别:

  • 1-坚持 CSMA:信道空闲时,立即发送,无延迟。发生冲突后,才进行随机退避。
  • 非坚持 CSMA:信道忙时不持续监听,而是随机等待后重新尝试。
  • p-坚持 CSMA:在信道空闲时,节点不会直接立即发送,而是通过一个概率p决定是否发送。通过引入这种概率机制,可以降低多个节点同时发送的可能性,从而减少冲突。

p-坚持 CSMA 的优点:

  • 降低冲突概率:通过以概率p发送数据,p-坚持 CSMA 能有效降低多个节点在信道空闲时同时发送而导致冲突的概率。尤其当网络负载较高时,p-坚持 CSMA 的性能比 1-坚持更好。
  • 提高效率:相比非坚持 CSMA,p-坚持 CSMA 保留了一定的积极性,不像非坚持那样在信道忙时直接等待很长时间。

应用场景:

  • p-坚持 CSMA 通常用于负载较高的网络中,因为通过调节p的大小,可以控制信道的竞争程度。一个常见的例子是无线局域网中采用的 CSMA/CA 协议,其中就引入了类似 p-坚持的机制来减少冲突。

总结:

p-坚持 CSMA 通过在信道空闲时加入发送概率p,相比 1-坚持 CSMA 减少了冲突的可能性,但仍比非坚持 CSMA 更为积极和高效。在信道竞争较激烈的场景下,p-坚持 CSMA 可以有效地平衡冲突与信道利用率之间的关系。
 
CSMA/CDCarrier Sense Multiple Access with Collision Detection,带碰撞检测的载波监听多路访问)
是一种网络协议,用于控制多个设备共享同一个通信信道时的数据传输。它是以太网早期广泛使用的介质访问控制(MAC)协议,确保网络中多个节点可以公平地访问共享的通信介质,并在发生冲突时进行处理。

CSMA/CD 的核心概念:

  1. Carrier Sense(载波监听)
      • 在发送数据之前,节点首先监听信道,检查是否有其他节点正在发送数据。
      • 如果信道空闲,节点可以立即发送数据。
      • 如果信道忙碌(有其他节点正在发送),节点将等待信道空闲时再发送。
  1. Multiple Access(多路访问)
      • 网络中的所有节点共享同一个通信信道。每个节点都可以随时尝试访问这个信道,前提是信道空闲。
  1. Collision Detection(碰撞检测)
      • 即使在监听到信道空闲并开始发送数据的情况下,仍然可能有其他节点同时开始发送数据,这就会导致碰撞(冲突),即信号相互干扰。
      • 在发送数据的过程中,每个节点会继续监听信道,以检测是否发生了冲突。如果检测到冲突,节点会立即停止发送,并采取后续措施(退避与重发)。

CSMA/CD 的工作流程:

  1. 载波监听:节点在发送数据之前,首先监听信道是否空闲。
      • 如果信道空闲,立即开始发送数据。
      • 如果信道忙碌,则等待信道空闲后再尝试发送。
  1. 数据传输:如果信道空闲,节点开始发送数据。
  1. 碰撞检测:在发送过程中,节点会继续监听信道,以检测是否发生了冲突。
      • 如果在发送过程中检测到冲突,节点会立即停止发送。
      • 如果未检测到冲突,数据传输正常完成。
  1. 退避与重发
      • 发生冲突后,节点不会立即重新发送数据。为了避免再次发生冲突,节点会等待一个随机的退避时间(通常采用指数退避算法,即随着冲突次数的增加,等待的时间间隔也会越来越长)。
      • 退避时间结束后,节点重新监听信道,并尝试再次发送数据。

CSMA/CD 的优点:

  1. 简单高效:CSMA/CD 是一种较为简单的协议,适用于负载不太高的网络环境。在信道空闲时,节点可以立即发送数据,减少了等待时间。
  1. 公平性:CSMA/CD 为所有节点提供公平的访问机会,任何节点都可以竞争信道,只要信道空闲即可发送数据。
  1. 有效处理冲突:即使发生冲突,CSMA/CD 也能通过碰撞检测和退避机制及时处理冲突,并确保后续重发数据的成功。

CSMA/CD 的缺点:

  1. 冲突问题:当网络负载较高时,节点可能会频繁发生冲突,导致网络效率下降,因为每次冲突都会导致发送节点必须停止传输并等待重发。
  1. 不适用于无线网络:在无线网络中,CSMA/CD 并不适用。因为无线网络中的节点无法在发送数据的同时接收信道上的信号,这使得节点无法有效检测到冲突。因此,CSMA/CA(带冲突避免的载波监听多路访问) 被用于无线网络(如 Wi-Fi)中。
  1. 受限于网络距离和带宽:CSMA/CD 的设计依赖于信号的传播时延,因此它只能在有限距离和有限带宽的网络中工作,超过一定的距离或带宽,冲突检测和处理将变得不够高效。

CSMA/CD 具体例子:

  • 经典以太网(10BASE-T):这是 CSMA/CD 的典型应用场景。在这种早期的以太网中,所有节点通过共享总线(例如同轴电缆)连接。每个节点在发送数据前都必须检查是否有其他节点正在发送数据,如果多个节点同时发送,就会发生冲突,然后节点们会根据退避机制重新尝试发送。

为什么现代网络很少使用 CSMA/CD?

随着网络技术的发展,全双工模式和交换机技术的出现,使得 CSMA/CD 在现代网络中逐渐被淘汰:
  • 全双工通信:在全双工模式下,网络中的每个节点可以同时发送和接收数据,不再需要共享信道,因此不会发生冲突。
  • 交换机的引入:现代网络中使用的交换机技术将每个设备连接到独立的信道,节点之间的通信不再需要竞争公共信道,也不会发生冲突。
因此,CSMA/CD 主要用于早期的以太网网络中,在现代以太网(如 100 Mbps 或更快的网络)和无线网络中,它已经被更加高效的技术取代。

总结:

CSMA/CD 是一种用于共享通信信道的简单而有效的协议,通过载波监听、多路访问和冲突检测机制,确保多个节点可以公平地访问同一个信道。虽然它在现代网络中已经逐渐淡出,但在以太网的早期发展中,CSMA/CD 发挥了重要作用,帮助解决了多节点通信中的冲突问题。
 
注意一些点:
CSMA/CD 中,节点 B 只会在节点 A 的信号还没到达时发送数据。如果节点 A 的信号已经到达节点 B,节点 B 会检测到信道已被占用,因此不会开始发送数据。这就是 CSMA/CD 中载波监听(Carrier Sense)的机制。

总结这个关键点:

  1. 载波监听:在 CSMA/CD 协议中,每个节点在发送数据之前都会监听信道,即检查信道是否空闲。如果信道空闲,它才会开始发送数据;如果信道忙碌,它将等待信道空闲时再发送。
  1. 冲突的发生
      • 冲突只会在两个节点几乎同时开始发送时发生,具体来说,是在节点 A 的信号尚未传播到节点 B 时,节点 B 认为信道空闲,因此也开始发送数据。
      • 一旦节点 A 的信号到达节点 B,B 就会知道信道已经被占用,从而不会再发送数据,因此不会引发冲突。
  1. 传播时延的关键作用
      • 传播时延 决定了节点 A 的信号到达节点 B 所需要的时间。如果节点 B 在 之前开始发送,那么会发生冲突;如果节点 B 等到 时间之后才发送,它将检测到信道已经被占用。
      • 因此,冲突检测的关键点是确保节点 A 在发送其数据时,能够在传播时延 之内检测到任何可能的冲突信号。
  1. 你提到的场景
      • 只需考虑节点 A 的信号尚未到达 B 的情况,这是冲突可能发生的唯一情况。一旦节点 A 的信号传播到达 B,B 就会检测到信道被占用,不会开始发送,因此不可能引发冲突。

总结:

  • 载波监听机制确保了节点不会在信道被占用时发送数据,因此冲突只会发生在信道的占用状态还没有被传播到其他节点之前。
  • 冲突检测机制确保发送节点在整个帧传输过程中都在监听信道,以检测是否有冲突信号返回。
  • 传播时延 是决定冲突发生与否的关键,只要在传播时延内没有检测到冲突信号,节点可以安全发送。
 

接下来解释帧的传输时延至少要两倍于信号在总线中的传播时延

上面的知识点确保了如果有碰撞检测信号的话,那么传输时间一定小于等于2t,因为碰撞检测信号也是信号,传输也要时间,而且最长的时间就是当第一个比特快到节点B时,节点B也发出了一个帧,刚好碰撞了,这个时候前面已经用了1t,碰撞检测信号回到节点A也要1t,所以就2t,其他的情况均小于2t。然后帧的传输时延可以看成是帧的大小,帧的大小一定要大于等于两倍于信号在总线中的传播时延才能确保节点A在监听过程中可以收到碰撞信号。
 

四、网络层

IP 地址的编址方式经历了三个历史阶段:分类、子网划分、无分类

1. 分类

由两部分组成,网络号和主机号,其中不同分类具有不同的网络号长度,并且是固定的。
IP 地址 ::= {< 网络号 >, < 主机号 >}
notion image

2. 子网划分

通过在主机号字段中拿一部分作为子网号,把两级 IP 地址划分为三级 IP 地址。
IP 地址 ::= {< 网络号 >, < 子网号 >, < 主机号 >}
要使用子网,必须配置子网掩码。一个 B 类地址的默认子网掩码为 255.255.0.0,如果 B 类地址的子网占两个比特,那么子网掩码为 11111111 11111111 11000000 00000000,也就是 255.255.192.0。
注意,外部网络看不到子网的存在。

3. 无分类

无分类编址 CIDR 消除了传统 A 类、B 类和 C 类地址以及划分子网的概念,使用网络前缀和主机号来对 IP 地址进行编码,网络前缀的长度可以根据需要变化。
IP 地址 ::= {< 网络前缀号 >, < 主机号 >}
CIDR 的记法上采用在 IP 地址后面加上网络前缀长度的方法,例如 128.14.35.7/20 表示前 20 位为网络前缀。
CIDR 的地址掩码可以继续称为子网掩码,子网掩码首 1 长度为网络前缀的长度。
一个 CIDR 地址块中有很多地址,一个 CIDR 表示的网络就可以表示原来的很多个网络,并且在路由表中只需要一个路由就可以代替原来的多个路由,减少了路由表项的数量。把这种通过使用网络前缀来减少路由表项的方式称为路由聚合,也称为 构成超网 。
在路由表中的项目由“网络前缀”和“下一跳地址”组成,在查找时可能会得到不止一个匹配结果,应当采用最长前缀匹配来确定应该匹配哪一个。
 

4.为什么在数据帧转发过程中源/目标IP地址不会变化,但是源/目标MAC地址会发生变化?

 

5.ARP协议

这个文章中提到了ARP工作过程
假设主机A和B在同一个网段,主机A要向主机B发送信息,具体的地址解析过程如下:
  1. 主机A首先查看自己的ARP缓存表,确定其中是否包含有主机B对应的ARP表项。如果找到了对应的MAC地址,则主机A直接利用ARP表中的MAC地址,对IP数据包进行帧封装,并将数据包发送给主机B。
  1. 如果主机A在ARP表中找不到对应的MAC地址,则将缓存该数据报文,然后以广播方式发送一个ARP请求报文。ARP请求报文中的发送端IP地址和发送端MAC地址为主机A的IP地址和MAC地址,目标IP地址和目标MAC地址为主机B的IP地址和全0的MAC地址。由于ARP请求报文以广播方式发送,该网段上的所有主机都可以接收到该请求,但只有被请求的主机(即主机B)会对该请求进行处理。
  1. 主机B比较自己的IP地址和ARP请求报文中的目标IP地址,当两者相同时进行如下处理:将ARP请求报文中的发送端(即主机A)的IP地址和MAC地址存入自己的ARP表中。之后以单播方式发送ARP响应报文给主机A,其中包含了自己的MAC地址。
  1. 主机A收到ARP响应报文后,将主机B的MAC地址加入到自己的ARP表中以用于后续报文的转发,同时将IP数据包进行封装后发送出去。
当主机A和主机B不在同一网段时,主机A就会先向网关发出ARP请求,ARP请求报文中的目标IP地址为网关的IP地址。当主机A从收到的响应报文中获得网关的MAC地址后,将报文封装并发给网关。如果网关没有主机B的ARP表项,网关会广播ARP请求,目标IP地址为主机B的IP地址,当网关从收到的响应报文中获得主机B的MAC地址后,就可以将报文发给主机B;如果网关已经有主机B的ARP表项,网关直接把报文发给主机B。
 
更具体的过程
1. 判断目标IP是否在同一网段:
主机A在发送数据之前,会先判断目标IP地址(主机B)是否与自己在同一个网段。判断方法是通过子网掩码IP地址的计算来确定。
  • 步骤:
      1. 主机A获取自身的IP地址和子网掩码。
      1. 将自身的IP地址与子网掩码进行按位与运算,得到自身的网络地址
      1. 同样,将目标IP地址(主机B的IP)与子网掩码进行按位与运算,得到目标的网络地址
      1. 比较两者的网络地址,如果相同,则主机A和主机B在同一个网段;如果不同,则表示主机A和主机B不在同一个网段。
2. 同一网段内:直接发送ARP请求
如果主机A判断主机B与自己在同一网段内,则:
  • 主机A会向目标IP(主机B)发出ARP请求,询问目标IP对应的MAC地址。这个ARP请求是一个广播包,发送到整个局域网内的所有设备。
  • 主机B收到ARP请求后,回复主机A自己的MAC地址。
  • 主机A收到ARP回复后,将目标IP和目标MAC地址的映射关系加入ARP缓存中,并将数据包直接发送给主机B。
  • 需要注意的是,这个过程中,网关并不会响应,因为目标IP不是它。
3. 不同网段内:ARP请求网关的MAC地址
如果主机A判断主机B与自己不在同一个网段内,则:
  • 主机A会查找本地的路由表,找出指向目标IP(主机B)网段的下一跳网关(路由器)的IP地址
  • 主机A接着发出ARP请求,询问网关IP地址对应的MAC地址。
  • 网关收到ARP请求后,回复主机A自己的MAC地址。
  • 主机A将数据包发送到网关,目标MAC地址是网关的MAC地址,而目标IP地址保持为主机B的IP地址。
  • 网关收到数据包后,根据其路由表决定如何将数据包转发到目标主机B。
4. 没有匹配的路由:丢弃数据包
如果主机A判断主机B不在同一个网段内,并且主机A也没有找到适合的网关来转发数据包(比如没有配置默认网关或者路由表中没有匹配的项),那么主机A将无法传输数据包,通常会丢弃数据包并返回错误。
5. ARP协议的具体作用:
ARP协议仅用于解析同一网段内的IP地址到MAC地址的映射。通过判断目标IP是否在同一网段,主机A决定是否需要使用ARP直接寻找目标主机的MAC地址,还是通过ARP来解析网关的MAC地址。

示例:

假设主机A的IP地址为192.168.1.10,子网掩码为255.255.255.0,主机B的IP地址为192.168.2.20
  1. 主机A首先会将自己的IP地址192.168.1.10与子网掩码255.255.255.0按位与运算,得到网络地址192.168.1.0
  1. 主机A再将主机B的IP地址192.168.2.20与同样的子网掩码按位与运算,得到网络地址192.168.2.0
  1. 主机A比较192.168.1.0192.168.2.0,发现不同,得出主机B与自己不在同一个网段。
  1. 主机A会查找其路由表,找出下一跳的网关,比如192.168.1.1,然后发出ARP请求获取192.168.1.1的MAC地址。
  1. 网关192.168.1.1将数据包转发给主机B所在的网段。
综上所述,主机A在数据传输前会通过判断目标IP与自身IP是否在同一个网段来决定如何使用ARP协议,从而完成数据包的传输。
上一篇
V2Board搭建教程
下一篇
前端3件套学习

评论
Loading...