计算机网络9——无线网络和移动网络1 无线局域网 WLAN2

文章目录

  • 一、802.11局域网的 MAC 层协议
    • 1、CSMA/CA协议
    • 2、时间间隔 DIFS 的重要性
    • 3、争用信道的过程
    • 4、对信道进行预约
  • 二、802.11局域网的 MAC 帧
      • 1)关于 802.11 数据帧的地址
      • 2)序号控制字段、持续期字段和帧控制字段

一、802.11局域网的 MAC 层协议

1、CSMA/CA协议

虽然CSMA/CD协议已成功地应用于使用有线连接的局域网,但无线局域网能不能也使用CSMA/CD协议呢?下面我们从无线信道本身的特点出发来详细讨论这个问题。

“碰撞检测”要求一个站点在发送本站数据的同时,还必须不间断地检测信道。一旦检测到碰撞,就立即停止发送。但由于无线信道的传输条件特殊,其信号强度的动态范围非常大,因此在802.11适配器上接收到的信号强度往往会远远小于发送信号的强度(信号强度可能相差百万倍)。因此无线局域网的适配器无法实现碰撞检测。

我们知道,无线电波能够向所有的方向传播,且其传播距离有限。当电磁波在传播过程中遇到障碍物时,其传播距离就会受到限制。如下图所示的例子就是无线局域网的隐蔽站问题。我们假定每个移动站的无线电信号传播范围都是以发送站为圆心的一个圆形面积。
在这里插入图片描述
图 (a)表示站点A和℃都想和B通信(这里仅仅是讲解隐蔽站问题的原理,在通信的过程中省略了接入点AP。可以把B看成是接入点AP)。但A和C相距较远,彼此都检测不到对方发送的信号。当A和C检测到信道空闲时,就都向B发送数据,结果发生了碰撞,并且无法检测出这种碰撞。这就是隐蔽站问题(hidden station problem)。所谓隐蔽站,就是它发送的信号检测不到,但却能产生碰撞。这里C是A的隐蔽站,A也是C的隐蔽站。

当移动站之间有障碍物时也有可能出现上述问题。例如,图(b)的三个站点 A,B 和C彼此距离都差不多。从距离上看,彼此都应当能够检测到对方发送的信号。但A和C之间有高楼或高山,因此A和C都互相成为对方的隐蔽站。若A和C同时向B发送数据就会发生碰撞,使B无法正常接收。此时也无法检测出碰撞。

综上所述,在制定无线局域网的协议时,必须考虑以下特点:

  • 无线局域网的适配器无法实现碰撞检测;
  • 检测到信道空闲,其实信道可能并不空闲;
  • 即使我们能够在硬件上实现无线局域网的碰撞检测功能,也无法检测出隐蔽站问题带来的碰撞。

我们知道,CSMA/CD有两个要点。一是发送前先检测信道,信道忙就不发送。二是边发送边检测信道,一发现碰撞就立即停止发送,并执行退避算法进行重传。因此偶尔发生的碰撞并不会使局域网的运行效率降低很多。无线局域网显然可以使用CSMA,但无法使用碰撞检测(由上述无线局域网特点决定的,一旦开始发送数据,就一定把整个帧发送完毕;一旦发生碰撞,整个信道资源的浪费就比较严重。

为此,802.11局域网使用CSMA/CA协议。CA表示 Collision Avoidance,是碰撞避免的意思,或者说,协议的设计是要尽量减少碰撞发生的概率。这点和使用有线连接的以太网有很大的区别。以太网当然不希望发生碰撞,但并不怕发生碰撞,因为碰撞的影响并不大。

802.11局域网在使用CSMA/CA的同时,还使用停止等待协议。这是因为无线信道的通信质量远不如有线信道的,因此无线站点每通过无线局域网发送完一帧后,要等到收到对方的确认帧后才能继续发送下一帧。这就是链路层确认。链路层确认也是解决碰撞后重传的手段

我们在进一步讨论CSMA/CA协议之前,先要介绍802.11的MAC层。

802.11标准设计了独特的 MAC层(如下图所示)。它通过协调功能(Coordination Fumnction)来确定在基本服务集BSS中的移动站,在什么时间能发送数据或接收数据。802.11的MAC层在物理层的上面,它包括两个子层。
在这里插入图片描述

  • 分布协调功能 DCF (Distributed Coordination Function)。DCF 不采用任何中心控制,而是在每一个节点使用CSMA 机制的分布式接入算法,让各个站通过争用信道来获取发送权。因此 DCF向上提供争用服务。802.11标准规定,所有的实现都必须有DCF功能。为此定义了两个非常重要的时间间隔,即短帧间间隔 SIFS(Short Inter-Frame Spacing)和分布协调功能帧间间隔 DIFS(DCFJES)。关于这两个时间间隔后面还要讲到。802.11 标准还定义了其他几种时间间隔,这里从略。
  • 点协调功能 PCF(Point Coordination Function)。PCF 是选项,是用接入点 AP 集中控制整个 BSS内的活动,因此自组网络就没有PCF子层。PCF使用集中控制的接入算法,用类似于探询的方法把发送数据权轮流交给各个站,从而避免了碰撞的产生。对于时间敏感的业务,如分组话音,就应使用提供无争用服务的点协调功能PCF。

我们目前大量使用的无线局域网都是使用上述的分布协调功能DCF。

CSMA/CA协议比较复杂。IEEE的802.11-2007标准文档共有1232页之多。这里介绍CSMA/CA协议的要点如下:

  1. 站点若想发送数据必须先监听信道。若信道在时间间隔DIFS内均为空闲,则发送整个数据帧。否则,进行(2)。
  2. 站点选择一随机数,设置退避计时器。计时器的运行规则是:若信道忙,则冻结退避计时器,继续等待,直至信道变为空闲(这叫作推迟接入);若信道空闲,并在时间间隔DIFS 内均为空闲,则开始争用信道,进行倒计时。当退避计时器的时间减到零时(显然这只能发生在信道空闲时),站点就发送数据帧,把一整帧发完。
  3. 站点若收到接收方发来的确认帧,且还有后续帧要发送,就转到(2)。若在设定时间内未收到确认,则准备重传,并转到(2),但会在更大的范围内选择一随机数。

下面详细解释上述协议中的内容。

2、时间间隔 DIFS 的重要性

在图 9-7中,站点A要向站点B发送数据。A监听信道。若信道在时间间隔DIFS内一直都是空闲的(理由下面就要讲到),A就可以在时间发送数据DATA。B收到后立即发回确认 ACK。B开始发送确认的时刻,实际上必然略滞后于B收完DATA 的时间,滞后的时间是 SIFS。这是因为B收到数据帧后,必须进行CRC检验。若检验无差错,再从接收状态转为发送状态,这些动作不可能在瞬间完成。SIFS值在802.11标准中均有规定。因此从 A发送数据帧 DATA 开始,到收到确认 ACK为止的这段时间(DATA+SIFS+ACK),必须不允许任何其他站发送数据,这样才不会发生碰撞。为此,802.11标准规定了每个站必须同时使用以下的两个方法。
在这里插入图片描述
第一个方法是用软件实现的虚拟载波监听(VirtualCarrier Sense)的机制。这就是让源站A把要占用信道的时间(即 DATA+SIFS+ACK),以微秒为单位,写入其数据帧 DATA的首部(在后面的9.1.4节还要介绍首部的各字段)。所有处在站点A的广播范围内的各站都能够收到这一信息,并创建自己的网络分配向量NAV(NetworkAllocation Vector)。NAV指出了信道忙的持续时间,意思是:“A和B以外的站点都不能在这段时间发送数据”。

第二个方法是在物理层用硬件实现载波监听。每个站检查收到的信号强度是否超过一定的门限数值,用此判断是否有其他移动站在信道上发送数据。任何站要发送数据之前,必须监听信道。只要监听到信道忙,就不能发送数据。

从上图可以看出,至这段时间 SIFS,信道是空闲的。为了保证在这小段空闲时间不让其他站点发送数据,802.11标准定义了比 SIFS 更长的时间间隔DIFS(DCFIFS),并且规定,凡在空闲时间想发送数据的站点,必须等待时间DIFS后才能发送。这就保证了确认帧 ACK得以优先发送。这个重要措施使得在这段时间(DATA+SIFS+ACK),整个信道好像是A和B专用的,因为其他站点暂时都不能发送数据。

3、争用信道的过程

现假定在站点A和B通信的过程中,站点C和D也要发送数据(如下图所示)。但C和D检测到信道忙,因此必须推迟接入(deferaccess),以免发生碰撞。很明显,如果有两个或更多的站,在等待信道进入空闲状态后,大家都经过规定的时间间隔DIFS再同时发送数据,那么必然产生碰撞。因此,协议CSMAICA规定,所有推迟接入的站,都必须在争用期执行统一的退避算法开始公平地争用信道。
在这里插入图片描述
上图中的争用期也叫作争用窗口CW(Contention Window)。争用窗口由许多时隙(timeslot)组成。例如,争用窗口 CW = 15 表示窗口大小是 15 个时隙。时隙长度是这样确定的:在下一个时隙开始时,每个站点都能检测出在前一个时隙开始时信道是否忙(这样就可采取适当对策)。时隙的长短在不同 802.11 标准中可以有不同数值。例如,802.11g 规定一个时隙时间为9μS,SIFS=10 μS,而 DIFS 应比 SIFS 的长度多两个时隙,因此 DIFS=28 μS。

退避算法规定,站点在进入争用期时,应在0~CW个时隙中随机生成一个退避时隙数,并设置退避计时器(backofftimer)。当几个站同时争用信道时,计时器最先降为零的站,就首先接入媒体,发送数据帧。这时信道转为忙,而其他正在退避的站则冻结其计时器,保留计时器的数值不变,推迟到在下次争用信道时接着倒计时。这样的规定对所有的站是公平的。

例如,上图中的站点℃的退避时隙数为3,而站点D的退避时隙数为9。当经过3个退避时隙后,站点C获得了发送权,立即发送数据帧,信道转为忙状态。站点D随即冻结其剩余的6个时隙,推迟到下一个争用信道时间的到来。如果此后没有其他站要发送数据,那么经过剩余的6个退避时隙,站点D就可以发送数据了。

请注意“推迟接入”和“退避(backof)”的区别。推迟接入发生在信道处于忙的状态为的是等待争用期的到来,以便执行退避算法来争用信道。这时退避计时器处于冻结状态。而退避是争用期各站点执行的算法,退避计时器进行倒计时。这时信道是空闲的,并且总是出现在时间间隔 DIFS的后面(如上图所示)。

802.11标准并未规定争用窗口CW的初始值,但建议W最小值可取为15,最大值为1023 。

为了减少碰撞的机会,协议CSMACA规定,如果未收到确认(可能是发生碰撞或数据帧传输出差错),则必须重传。但每重传一次,争用窗口的数值就近似加倍增大。

例如,假定选择初始争用窗口CW= 2 4 2^4 24-1=15,那么首次争用信道时,随机退避时隙数应在0~15之间生成。在进行重传时,第i次重传的争用窗口CW= 2 4 + i − 1 2^{4+i}-1 24+i1

  • 第1次重传时,随机退避的时隙数应在0~31之间生成。
  • 第2次重传时,随机退避的时隙数应在0~63之间生成。
  • 第3次重传时,随机退避的时隙数应在0~127之间生成
  • 第4次重传时,随机退避的时隙数应在0~511之间生成
  • 第5次以及5次以上重传时,随机退避的时隙数应在0~1023之间生成,争用窗口CW不再增大了。

采用上面这些措施,发生几个站同时发送数据的概率可以大大减小。

归纳以上的讨论可以得出如下结论:当站点想发送数据,并检测信道连续空闲时间超过 DIFS 时,即可立即发送数据,而不必经过争用期。

在以下几种情况下,发送数据必须经过争用期的公平竞争:

  • 要发送数据时检测到信道忙。
  • 已发出的数据帧未收到确认,重传数据帧。
  • 接着发送后续的数据帧。

上述的(3)是为了防止一个站长期垄断发送权。若一站点要连续发送若干数据帧,则不管有无其他站争用信道,都必须进入争用期(如下图所示)。
在这里插入图片描述
即使有了上述措施,碰撞仍有可能发生。例如,B站正好在上图中A占用信道时要发送数据。B 检测到信道忙,于是推迟到争用信道时与A一起争用信道。但正巧A和B又生成了同样大小的随机退避时隙数。结果就发生了碰撞,A和B都必须再重传。这就浪费了宝贵的信道资源。因此,要进一步减少碰撞的机会,还需要再采用一些措施。这就是下面要介绍的信道预约。

4、对信道进行预约

为了更好地解决隐蔽站带来的碰撞问题,802.11允许要发送数据的站对信道进行预约。我们假定在下图中的A站要和 B站通信。显然,A 站与 B站的通信都必须通过接入点AP 的转发。在前面讲解原理时,我们都把接入点 AP 省略了。下面我们要画出 A站和 AP 之间交换的信息,但为简单起见,图中省略了 AP 和B站之间交换的信息。
在这里插入图片描述
我们再假定,A站或B站向接入点AP发送数据时,远处的C站接收不到这些信号,而C站向AP发送的信号也传播不到远处的A站或B站。

在 A站向 AP 发送数据帧 DATA 之前,先发送一个很短的控制帧,叫作请求发送 RTS(Request To Send),目的是告诉所有能够收到 RTS 帧的站:“我将要占用信道一段时间:[SIFS+ CTS + SIFS+ DATA + SIFS+ ACK]”。这段时间写在控制帧 RTS 的首部中。A 站发
送的RTS帧,B站能够收到,但远处的℃站收不到。

接入点 AP 若正确收到 RTS 帧,经过最短的时间间隔 SIFS 后,就向 A站发送一个叫作允许发送 CTS(Clear To Send)的控制帧,目的不仅是告诉 A 站:“你可以发送数据了”,而且也是告诉所有能够收到CTS 帧的站:“A 站和我通信,要占用信道一段时间:[SIFS+DATA + SIFS+ACK]”。这段时间是写在控制帧 CTS 的首部中。AP 发送的 CTS 帧,A 站和B站以及C站都能够收到。

在随后 A 站发送的 DATA 帧的首部中,也写入了时间[DATA+SIFS+ACK]。如果有的站没有收到 RTS 和 CTS 帧,那么收到 DATA 帧后,也能设置其 NAV。

以上措施就使得A站和接入点AP(以及A站和B站)的通信过程中,发生碰撞的概率大大降低,特别是减少了隐蔽站的干扰问题。

显然,增加使用RTS帧和CTS帧会使整个网络的通信效率有所下降,要多浪费信道的时间[RTS+ SIFS + CTS+ SIFS]。但由于这两种控制帧都很短,其长度分别为 20字节和14字节,与数据帧(最长可达 2346字节)相比开销不算大。相反,若不使用这种控制帧,则一旦发生碰撞而导致数据帧重发,浪费的时间就更多了。

从上图可以看出,即使我们使用RTS和CTS对信道进行了预约,但碰撞也有可能发生。例如,有的站可能在时间t1或t2就发送了数据(这些站可能是没有收到 RTS 帧或CTS帧或 NAV),结果必定与 RTS 帧或 CTS 帧发生碰撞。A 站若收不到 CTS 帧,就不能发送数据帧,而必须重传 RTS 帧。A站只有正确收到CTS帧后才能发送数据帧。但我们可以看出在使用信道预约的情况下,即使发生了碰撞,信道资源的浪费是很小的。

信道预约不是强制性规定。各站可以自己决定使用或不使用信道预约。看来,只有当数据帧的长度超过某一数值时,使用RTS帧和CTS帧才比较有利。

因为无线信道的误码率比有线信道的高得多,所以,无线局域网的MAC帧长一般应当短些,以便在出错重传时减小开销。这样,有时就必须将太长的帧进行分片。

最后,我们要提一下关于无线局域网的数据发送速率问题。在第2章的2.3.2节中,已经指出无线信道中的误码率与信噪比(信道状况)以及所选择的调制技术(包括数据率)有关。802.11标准并没有对无线局域网数据率的自适应算法有具体的标准或规定。但生产无线局域网适配器的厂商,一般都使自己的产品能够自适应地改变数据率,以便更好地适应信道特性的变化。例如,可以采用这样的算法:如果一连发送两个数据但都没有收到确认,就认为信道的质量较差,这时就把数据率调慢一挡。反之,如果此后又能够连续收到10个数据帧的确认,那么就可以认为信道质量改善了,因而可以把数据率调快一挡。这与协议TCP中的拥塞控制的处理思路是相似的。

二、802.11局域网的 MAC 帧

为了更好地了解 802.11 局域网的工作原理,我们应当进一步了解 802.11 局域网的 MAC帧的结构。802.11 帧共有三种类型,即控制帧、数据帧和管理帧。通过下图所示的802.11 局域网的数据帧和三种控制帧的主要字段,可以进一步了解 802.11 局域网的 MAC 帧的特点。

从下图(a)可以看出,802.11数据帧由以下三大部分组成:
在这里插入图片描述

  • MAC首部,共30字节。帧的复杂性都在帧的MAC首部。
  • 帧主体,也就是帧的数据部分,不超过2312字节。这个数值比以太网的最大长度长很多。不过 802.11帧的长度通常都小于 1500 字节。
  • 帧检验序列FCS是MAC尾部,共4字节。

1)关于 802.11 数据帧的地址

802.11数据帧最特殊的地方就是有四个地址字段。这几个地址与帧控制字段中的“去往AP”(移动站发送到接入点)和“来自AP”(从接入点发往移动站)这两个子字段的数值有关。

  • 地址1永远是接收地址(即直接接收数据帧的节点地址)。
  • 地址2永远是发送地址(即实际发送数据帧的节点地址)。
  • 地址3和地址4取决于数据帧中的“来自AP”和“去往 AP”这两个字段的数值。

这里要再强调一下,上述地址都是MAC地址,即硬件地址(在数据链路层不可能使用IP地址),而AP的MAC地址就是在9.1.1节介绍的 BSSID。下表给出了802.11帧的地址字段最常用的两种情况(在有基础设施的网络中一般只使用前三种地址,很少使用仅在自组移动网络中使用的地址 4)。
在这里插入图片描述
现假定在一个基本服务集中的站点A向站点B发送数据帧。在站点A发往接入点AP的数据帧的帧控制字段中,“去往 AP=1”而“来自 AP=0”。

在这里插入图片描述
在这里插入图片描述

当接入点 AP,收到 802.11 数据帧后,就转换成802.3 帧(8023 帧只有两个地址),其目的地址是 M A C R − 1 MAC_{R-1} MACR1,而源地址是 MAC(而不是接入点 AP;的地址 BSSID,)。

路由器R收到802.3 后,剥去首部和尾部,上交给网络层。网络层根据IP数据报首部中的目的地址IPB查找转发表,知道应从接口2转发给地址为IPB的设备。再使用协议ARP,获得此设备的硬件地址是MACB,这个地址就是802.3帧的目的地址,路由器R接口2的地址 M A C R − 2 MAC_{R-2} MACR2是这个802.3 的源地址。
接入点 AP,收到 802.3 帧,将其转换为 802.11帧,其帧控制字段中,“去往 AP=0”而“来自 AP=1”。

在这里插入图片描述

2)序号控制字段、持续期字段和帧控制字段

  1. 序号控制字段占16位,其中序号子字段占12位(从0开始,每发送一个新帧就加1,到 4095后再回到0),分片子字段占4位(不分片则保持为0。如分片,则的序号子字段保持不变,而分片子字段从0开始,每个分片加1,最多到15)。重传的的序号和分片子字段的值都不变。序号控制的作用是使接收方能够区分开是新传送的帧还是因出现差错而重传的帧。这和运输层讨论的序号的概念是相似的。
  2. 持续期字段占16位。在9.1.3小节第4部分“对信道进行预约”中已经讲过CSMA/CA 协议允许发送数据的站点预约信道一段时间(见前面的图9-10的例子),并把这个时间写入到持续期字段中。这个字段有多种用途(这里不对这些用途进行详细的说明),只有最高位为0时才表示持续期。这样,持续期不能超过 2 15 2^{15} 215-1-1=32767,单位是微秒。
  3. 帧控制字段共分为11个子字段。下面介绍其中较为重要的几个。
    • 协议版本字段现在是0。
    • 类型字段和子类型字段用来区分帧的功能。上面已经讲过,802.11共有三种类型:控制帧、数据帧和管理帧,而每一种帧又分为若干种子类型。例如,控制帧有 RTS,CTS 和ACK 等几种不同的子类型。控制帧的几种常用的格式如图(b)和©所示。
    • 更多分片字段置为1时表明这个帧属于一个帧的多个分片之一。我们知道,无线信道的通信质量是较差的。因此无线局域网的数据帧不宜太长。当帧长为"而误比特率p= 1 0 − 4 10^{-4} 104时,正确收到这个帧的概率P= ( 1 − p ) n (1-p)^{n} (1p)n。若n=12144 bit(相当于 1518 字节长的以太网帧),则算出这时 P=0.2969,即正确收到这样的帧的概率还不到30%。因此,为了提高传输效率,在信道质量较差时,需要把一个较长的帧划分为许多较短的分片。这时可以在一次使用RTS 和CTS帧预约信道后连续发送这些分片。当然这仍然要使用停止等待协议,即发送一个分片,等收到确认后再发送下一个分片,不过后面的分片都不需要用RTS和CTS帧重新预约信道(如下图所示)。
      在这里插入图片描述

功率管理字段只有1位,用来指示移动站的功率管理模式。我们知道,移动站的功率是其非常宝贵的资源。移动站在活跃状态时(即发送或接收信息)需要消耗功率,而在关机状态虽然不消耗功率,但却可能漏掉重要信息的接收。因此我们需要有第三种状态,这就是待机状态,或省电状态。这时移动站不进行任何实质性操作,屏幕也处于断电状态,但并未断开与 AP的关联,因此这种状态非常省电。若一个移动站在发送给接入点AP的MAC帧中的功率管理字段置为0,就表示这个移动站是处于活跃状态。但若把功率管理字段置为1则表示在成功发送完这一帧后,即进入待机状态。由于接入点AP总是处在活跃状态,因此AP发送的MAC帧的功率管理字段总是置为0。

接入点AP保存有处在待机状态的移动站的名单。所有要发送给待机状态的移动站的帧AP都暂时不发送,而是保存在自己的缓存中。由于AP要周期性地向周围的移动站发送信标帧(通常是每隔100ms发送一次),因此每个要转为待机状态的移动站都必须设置一个计时器,为的是在 AP即将发送信标帧时,把处在待机状态的移动站唤醒,以便接收AP发来的信标帧。唤醒时间很短,仅0.25ms。AP 发送的信标帧中有帧被缓存在 AP 中的节点列表若移动站从收到的信标帧中发现有发给自己的帧,就向AP发送请求把缓存的帧发过来。反之,若发现没有发给自己的帧,就再返回到待机状态。这样,若移动站既不发送也不接收数据帧,就可以有99%的时间处在待机状态,因而大大地减少了电池功率的消耗。

WEP字段占1位。若WEP=1,就表明对MAC帧的帧主体字段采用了加密算法。我们已经在 9.1.1节指出,WEP加密算法有安全漏洞。因此,IEEE 802.1li 就努力解决无线局域网的安全问题。2002年Wi-Fi联盟制定了符合802.1li功能的加密方式WPA。2004年制定的 WPA2增加了支持 AES 加密算法,并完全符合IEEE 802.11i-2004的安全功能。现在的 Wi-Fi产品几乎都支持 WPA2。但在MAC帧首部的帧控制字段中,WEP 字段的名称仍继续使用(已发现有的文献把 WEP 字段改为被保护帧(Protected Frame)字段,但字段的作用不变)。WPA2的加密算法相当复杂IKURO171,限于篇幅,这里从略。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/683053.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Spring boot+vue前后端分离

目录 1、前端vue的搭建 2、后端项目的构建 pom文件中引入的jar包 yml文件用来配置连接数据库和端口的设置 application.property进行一些整合 service层 imp层 mapper 实体类 额外写一个类、解决跨域问题 3、测试 1、前端vue的搭建 建立项目的过程略 开启一个建立好…

探索营销系统业务架构的设计与应用

随着市场竞争的日益激烈和消费者需求的不断变化,营销系统作为企业营销管理的重要组成部分,扮演着至关重要的角色。本文将深入探讨营销系统业务架构的设计与应用,从客户关系管理、营销活动管理、数据分析和智能化服务等方面进行全面解析&#…

Leetcode3168. 候诊室中的最少椅子数

Every day a Leetcode 题目来源:3168. 候诊室中的最少椅子数 解法1:模拟 代码: /** lc appleetcode.cn id3168 langcpp** [3168] 候诊室中的最少椅子数*/// lc codestart class Solution { public:int minimumChairs(string s){int chair…

学习笔记——路由网络基础——浮动静态路由(路由备份和冗余)

2、浮动静态路由(路由备份和冗余) (1)基本概念 浮动静态路由是两条或多条链路组成浮动路由。当到达某一网络有多条路径,通过为静态路由设置不同的优先级,你可以指定主用路径和备用路径。当主用路径不可用时,走备用路径的静态路由进入路由表…

LeakSearch:针对网络公开凭证的安全扫描与检测工具

关于LeakSearch 在红队演戏过程中,往往需要获取到针对目标域的访问权限。在这个过程中,很多红队人员会选择使用暴露在互联网上的代理服务器来实现目标域的访问,那么此时就需要在互联网上收集公开暴露的凭证信息。 对于蓝队来说,…

使用HTML、CSS和Javascript编写一个注册界面(二)

倘若代码中有任何问题或疑惑,欢迎提出交流哦~ 在上一篇文章我们实现了页面的建设,接下来我们实现JavaScript交互逻辑。 交互功能: 密码显示当用户输入的内容不符合规范时报错在提交注册界面是若有报错则提交失败 密码显示 要实现密码显示的…

【kubernetes】k8s集群中的ingress(对外服务)规则详解

目录 一、Ingress 简介 1.1service的作用 1.2外部访问方案 (四种)🌹🌹🌹 部署externalIPs 1.3Ingress 是什么 二、Ingress 组成🌹🌹🌹 三、Ingress 工作原理🐱&#x1f…

TSR,FSR,DLSS超级分辨率的原理分析

先了解一些时域抗锯齿的方法: TAA: 抖动 TAA 的主要原理是跨帧计算多个子像素样本,然后将它们组合成一个最终像素。最简单的方案是在像素内生成随机样本,但有更好的方法来生成固定序列的样本。选择一个好的序列以避免聚集非常重…

LeetCode-数学基础开篇

概念 1.实数 2.指数函数 f(x) (a>0且a≠1)【a: 底数(常量),x: 指数(变量)】 特征:指数函数在x轴没有交点,是光滑的曲线 3.幂函数 f(x) 【x&#xff…

Nginx的https功能

一.HTTPS功能简介 Web网站的登录页面都是使用https加密传输的,加密数据以保障数据的安全,HTTPS能够加密信息,以免敏感信息被第三方获取,所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用HTTPS协议,HTTPS其实…

Python——range() 函数用法详解

Python——range() 用法详解 range() 是一个用于生成整数序列的内置函数,在Python中常用于循环迭代等场景。 它可以接受一个或多个参数,生成一个按指定规则的整数序列。 1.range() 函数的语法 range(stop) range(start, stop,[step])start&#xff1…

1. lvs负载均衡

lvs负载均衡 一、集群技术概述1、集群技术类型2、负载均衡技术3、高可用技术 二、负载均衡 LVS1、LVS介绍2、负载均衡策略/算法3、LVS设计模式3.1 NAT模式的注意事项3.2 DR 直接路由模式的注意事项 三、LVS nat模式的实现1、确认后端服务器网关正确2、安装ipvsadm软件3、开启路…

Java 实验8 集合类

(一)实验目的 1、掌握JAVA集合类中的Collection的特点及其应用情形; 3、掌握Collection、熟悉集合的特点及应用。 (二)实验内容和步骤 1、仿照课堂练习的MyStack示例,使用LinkedList集合类实现一个先进…

Java项目:100 springboot共享汽车管理系统

作者主页:舒克日记 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 本共享汽车管理系统有管理员和用户。 管理员功能有个人中心,用户管理,投放地区管理,汽车信息管理,汽车…

xrun简单的仿真环境

xrun xceliun makefile文本 all: clean comp ela sim comp:xrun -64bit -compile test.v accessrwc ela:xrun -64bit -elaborate test.v accessrwc sim:xrun -64bit -R -gui clean:xrun -clean 仿真代码 timescale 1ns/1ns module test (); reg clk; initial beginclk 1b…

xtsk—选择自由

最近和一些自由职业者交流时深刻感受到,系统思考不是为了创造更多的工作,而是为了创造更多的自由。我们工作的最终目的,实际上是为了达到不需要为了生存而工作的自由状态,赚钱只是手段,其本质是为了赢得更多的选择权。…

【机器学习300问】108、什么是多项式回归模型?

一、多项式回归是什么 (1)举例说明 假设你经营着一家农场,想要根据土地面积来预测作物的产量。如果你只用线性模型(即),你可能会发现它并不足以描述实际的产量情况,因为实际产量可能会随着土地…

Huawei 大型 WLAN 组网 AC 间漫游

AC1配置命令 <AC6005>display current-configuration # vlan batch 100 # interface Vlanif100description to_S3_CAPWAPip address 10.0.100.254 255.255.255.0 # interface GigabitEthernet0/0/1port link-type trunkport trunk allow-pass vlan 100# ip route-stati…

【2024】Kafka Streams纤细介绍与具体使用(1)

目录 介绍关键特性应用场景核心概念部署方式kafka streams的处理模式 具体使用1、准备工作2、添加依赖3、代码实现3、测试 介绍 Kafka Streams是构建在Apache Kafka之上的客户端库&#xff0c;用于构建高效、实时的流处理应用。它允许你以高吞吐量和低延迟的方式处理记录流&am…

uniapp小程序多线程 Worker 实战【2024】

需求 最近遇到个小程序异步解码的需求&#xff0c;采用了WebAssembly&#xff0c;涉及大量的计算。由于小程序的双线程模型只有一个线程处理数据&#xff0c;因此智能寻求其它的解决方案。查看小程序的文档&#xff0c;发现小程序还提供一个异步线程的Worker方案&#xff0c;可…