无线网络CSMA/CA原理分析以及相关技术的介绍和分析

我已加入CSDN合伙人计划

亲爱的各位粉丝:可以添加我的CSDN官方企业微信群,和我近距离互动聊天,为您答疑解惑,还可以结识很多大牛,一起进步

直接使用微信扫码即可,不用下载企业微信

在这里插入图片描述

一、CSMA/CA

(一)CSMA、CSMA/CD、CSMA/CA的含义

载波监听多址接入/碰撞避免 CSMA/CA(Carrier Sense Multiple Access/Collision Avoidance)

CSMA:载波监听多址接入

CSMA/CD:总线局域网使用的协议

CSMA/CA:无线局域网使用的协议

CD:碰撞检测

CSMA/CA与CSMA/CD的主要差别(来自MBA智库):

CSMA/CD: 带有冲突检测的载波监听多路访问,可以检测冲突,但无法“避免”

CSMA/CA: 带有冲突避免的载波监听多路访问,发送包的同时不能检测到信道上有无冲突,只能尽量“避免”;

1.两者的传输介质不同,CSMA/CD用于总线式以太网,而CSMA/CA则用于无线局域网802.11a/b/g/n等等;

2.检测方式不同,CSMA/CD通过电缆中电压的变化来检测,当数据发生碰撞时,电缆中的电压就会随着发生变化;而CSMA/CA采用能量检测(ED)、载波检测(CS)和能量载波混合检测三种检测信道空闲的方式;

3.WLAN中,对某个节点来说,其刚刚发出的信号强度要远高于来自其他节点的信号强度,也就是说它自己的信号会把其他的信号给覆盖掉;

4.本节点处有冲突并不意味着在接收节点处就有冲突。

综上,在WLAN中实现CSMA/CD是比较困难的。

(二)思考:既然CSMA/CD 协议已经成功地应用于使用广播信道的有线局域网,那么同样使用广播信道的无线局域网能不能也使用CSMA/CD协议呢?

答案: 不能

解析:

  • 在无线局域网中,仍然可以使用使用载波监听多址接入CSMA;在发送帧之前对传输媒体进行载波监听。若发现其他站在发送帧就推迟发送以免发生碰撞。
  • 在无线局域网中,不能使用碰撞检测CD,原因如下:
    • 由于无线信道的传输条件特殊,其信号强度的动态范围非常大,无线网卡上接收到的信号强度往往会远远小于发送信号的强度(可能相差百万倍)。如果要在无线网卡上实现碰撞检测CD,对硬件的要求非常高
    • 即使能够在硬件上实现无线局域网的碰撞检测功能,但由于无线电波传播的特殊性(存在隐蔽站为题),进行碰撞检测的意义也不大

如下图:

A的信号范围能覆盖到B,但是覆盖不到C;

C的信号范围能覆盖到B,但是覆盖不到A。

在这里插入图片描述

描述:

1、A和C都检测不到对方的无线信号;

2、A和C都给B发送帧时,就会产生碰撞;

3、A和C无法检测碰撞;

这种不能检测出信道上其它站点信号的问题叫:隐蔽站问题

我们再来看一下总线型局域网:

在这里插入图片描述
总线型局域网就不存在这样的问题,例如:

总线上某个主机发送的信号,最多经过一个总线端到端的传播时延,就会被总线上的各主机接收到。

在这里插入图片描述

总线上产生的碰撞信号。最多经过一个总线端到端往返传播时延,也会传遍总线。

在这里插入图片描述

(三)载波监听多址接入/碰撞避免CSMA/CA

  • 因此802.11无线局域网使用CSMA/CA协议,在CSMA的基础上增加了一个碰撞避免CA功能,而实现CD碰撞检测功能
  • 由于不可避免所有的碰撞,并且无线信道误码率较高,802.11标准还使用了数据链路层确认机制(停止--等待协议)来保证数据被正确接收。
  • 802.11的MAC层标准定义了两种不同的媒体接入控制方式:
    • 1、分布式协调功能DCF(Distributed Coordination Function)。在DCF方式下,没有中心控制站点,每个站点使用CSMA/CA协议通过争用信道来获取发送权,这是802.11定义的默认的方式。
    • 2、点协调功能PCF(Point Coordination Function)。PCF方式使用集中控制的接入算法(一般在接入点AP实现集中控制),是802.11定义的可选方式,在实际中较少使用。

(四)帧间间隔IFS

帧间间隔IFS(InterFrame Space):

  • 802.11标准规定,所有的站点必须在持续检测到信道空闲一段指定时间后才能发送帧,这段时间称为帧间间隔IFS
  • 帧间间隔的长短取决于该站点要发送的帧的类型:
    • 高优先级帧需要等待的时间较短,所以可优先获得发送权;
    • 低优先级帧需要等待的时间较长。若某个站的低优先级帧还没来得及发送,而其他站的高优先级帧已发送到信道上,则信道变为忙状态,因而低优先级帧就只能再推迟发送了。这样就减少了发生碰撞的机会。
  • 常用的两种帧间间隔如下:
    • 短帧间间隔SIFS(28微秒),是最短的帧间间隔,用来分隔开属于一次对话的各帧。一个站点应当能够在这段时间内从发送方式切换到接收方式。使用SIFS的帧类型ACK帧CTS帧、由过长的MAC帧分片后的数据帧、以及所有回答AP探询和在PCF方式中接入点AP发送出的任何帧。
    • DCF帧间间隔DIFS(128微秒),它比短帧间间隔SIFS要长得多,在DCF方式中用来发送数据帧管理帧

(五)CSMA/CA协议的工作原理

CSMA/CA的工作原理总结:

1、首先检测信道是否在空闲状态,如果检测出信道在空闲状态,则等待一段随机时间后,才发送数据。

2、接收端如果正确收到此帧,则经过一段时间间隔后,向发送端发送确认帧ACK。

3、发送端收到ACK帧,确定数据正确传输,在经历一段时间间隔后,会出现一段空闲时间。

如下图无线站点所示:

横坐标是时间;

假设无线信道是空闲的,源站有数据帧要发送;

在这里插入图片描述

当源站检测到信道空闲,会等到一个DIFS后发送该数据帧:

在这里插入图片描述

目的站如果正确收到了数据帧,则要等待帧间间隔SIFS后,向源站发送确认帧ACK:

在这里插入图片描述

这里需要注意的是(如果源站在规定时间内,没有收到确认帧ACK):

由重传计时器控制这段时间,然后需要重传该数据帧,直到收到确认帧为止;

或者经过若干次的重传失败后放弃发送。

这里可以思考一下:

1、源站为什么在检测到信道空闲后还要再等待一段时间DIFS后,才发送数据帧?

因为考虑到其他的站点有高优先级的帧要发送。

若有,就让高优先级帧先发送。

2、目的站为什么正确接收数据帧后还要等待一段时间SIFS才能发送ACK帧呢?

SIFS是最短的帧间间隔,是用来分隔开属于一次对话的各种。

在这段时间内(等待的SIFS),一个站点应该能够从发送方式切换到接收方式。

如下图,当信道处于忙状态时,其他站点要发送数据:

在这里插入图片描述

则必须退避:

在这里插入图片描述

当忙状态,转换为空闲状态,并经过帧间间隔DIFS后,其他站点需要退避一段随机时间后才能发送

在这里插入图片描述

思考:

信道由忙转换为空闲且经过DIFS时间后,还要退避一段随机时间才能使用信道?

是为了防止多个站点同时发送数据而产生碰撞。

  • 当站点检测到信道是空闲的,并且所发送的数据帧不是成功发送完上一个数据帧之后立即连续发送的数据帧,则不使用退避算法。
  • 以下情况必须使用退避算法:
    • 在发送数据帧之前检测到信道处于忙状态时;
    • 在每一次重传一个数据帧时;
    • 在每一次成功发送后要连续发送下一个帧时(这是为了避免一个站点长时间占用信道)。

(六)CSMA/CA协议的退避算法

在执行退避算法时,站点为退避计时器设置一个随机的退避时间:

  • 当退避计时器的时间减小到零时,就开始发送数据;
  • 当退避计时器的时间还未减小到零时,而信道又转变为忙状态,这时就冻结退避计时器的数值,重新等待信道变为空闲,再经过DIFS后,继续启动退避计时器。

在进行第i次退避时,退避时间在时隙编号{0,2,…,2^(2+1)-1}中随机选择一个,然后乘以基本退避时间(一个是时隙的长度)就可以得到随机的退避时间。这样做就是为了使不同站点选择相同退避时间的概率减少。当时隙编号达到255时(对应于第6次退避)就不再增加了。

(七)举例说明CSMA/CA的退避算法

如下图所示:

ABCDE是五个无线站点;

横坐标为时间。

在这里插入图片描述

假设在空闲的状态时,A要发送帧,B、C、D也要发送帧:

在这里插入图片描述

于是进行载波监听,发现信道忙,需要退避。

根据退避算法,随机选择一个退避时间,并在每个时隙对信道进行一次检测,当检测到信道从忙状态转换为空闲状态,且经过帧间间隔DIFS后,退避计时器开始倒计时。

在这里插入图片描述

如上图所示,假设C站点随机获得的退避时间最短,当C的退避计时器到时后。

C立即开始发送帧。

在这里插入图片描述

此时,在C退避时间结束后的位置,信道状态就要从空闲状态转换为忙状态:

在这里插入图片描述

当B和D检测到信道忙后,就冻结各自剩余的退避时间:

在这里插入图片描述

假设在C发送帧的同时,E也要发送帧。

则进行载波监听,发现信道忙,则需要退避,根据退避算法选择一个随机的退避时间,并在每个时隙对信道进行一次检测,当检测到从忙状态转换为空闲状态时,且经过帧间间隔DIFS后,退避计时器开始倒计时,

在这里插入图片描述

当B和D检测到信道由忙状态转换为空闲状态,且经过DIFS帧间间隔后,退避计时器重新从上次冻结的退避剩余时间开始倒计时

在这里插入图片描述

可以看出D的退避时间最短,所以D的退避时间到达后,会立即开始发送帧,此时信道的状态由空闲状态转换为忙状态

在这里插入图片描述

当B和E检测到信道忙时,会立马冻结剩余的退避时间。

在这里插入图片描述

当D发送完后,信道转换为空闲状态。

当B和E检测到信道从忙转换到空闲状态时,经过DIFS帧间间隔后,退避计时器从剩余冻结的退避时间重新开始倒计时。

在这里插入图片描述

现在E的退避计时器会先到时,所以E会立马发送帧。

现在信道转换为忙状态。

B检测到信道忙之后,就会冻结自己的剩余退避时间

在这里插入图片描述

当E发送完后,信道转换为空闲状态,当B检测到信道为空闲状态时,等待DIFS后,退避计时器重新从剩余的退避计时器开始倒计时。

B到时后,立马开始发送帧。

在这里插入图片描述

如果在B发送完帧之后,还有帧要发送,则必须要等待一个DIFS帧间间隔后,还必须再退避一段随机时间后才能发送。

在这里插入图片描述

(八)CSMA/CA协议的信道预约和虚拟载波监听

为了尽可能减少碰撞的概率和降低碰撞的影响,802.11标准允许要发送数据的站点对信道进行预约

1、源站在发送数据帧之前先发送一个短的控制帧,称为请求发送RTS(Request To Send),它包括源地址目的地址这次通信(包括相应的确认帧)所需的持续时间。

如下图所示,源站检测到信道为空闲状态,经过一个帧间间隔DIFS后,发送RTS帧

在这里插入图片描述

2、若目的站正确收到源站发来的RTS帧,且媒体空闲,就发送一个相应控制帧,称为允许发送CTS(Clear Ti Send),它也包括这次通信所需的持续时间(从RTS帧中将此持续时间复制到CTS帧中)。

在这里插入图片描述

3、源站收到CTS帧后,再等待一段时间SIFS后,就可发送数据帧。

在这里插入图片描述

4、若目的站正确收到了源站发来的数据帧,在等待时间SIFS后,就向源站发送确认帧ACK。

在这里插入图片描述

  • **除源站和目的站以外的其他各站,在收到CTS帧(或数据帧)后就推迟接入到无线局域网中。**这样就保证了源站和目的站之间的通信不会受到其它站的干扰。
  • 如果RTS帧发送碰撞,源站就收不到CTS帧,需要执行退避算法重传RTS帧。
  • 由于RTS帧和CTS帧很短,发送碰撞的概率、碰撞产生的开销及本身的开销都很小。而对于一般的数据帧,其发送时延往往大于传播时延(因为是局域网),碰撞的概率很大,且一旦发生碰撞而导致数据帧重发,则浪费的时间就很多,因此用很小的代价对信道预约往往是值得的。802.11标准规定了3种情况供用户选择:
    • 1、使用RTS帧和CTS帧
    • 2、不使用RTS帧和CTS帧
    • 3、只有当数据帧的长度超过某一数值时才使用RTS帧和CTS帧

在这里插入图片描述

  • 除了RTS帧和CTS帧会携带通信需要持续的时间,数据帧也能携带通信需要持续的时间,这称为802.11的虚拟载波监听机制。
  • 由于利用虚拟载波监听机制,站点只要监听到RTS帧、CTS帧或数据帧中的任何一个,就能知道信道被占用的持续时间,而不需要真正监听到信道上的信号,因此虚拟载波监听机制能减少隐蔽站带来的碰撞问题

例如下面这四个无线站点:

在这里插入图片描述
A的信号能覆盖到B,但不能覆盖到C;

C的信号能覆盖到B,但不能覆盖到A;

A和C互为隐蔽站。

在这里插入图片描述

假设A给B要发送数据了,A可以使用RTS帧先向B预约信道:

在这里插入图片描述

在A向B发送RTS预约信号时,C是收不到的,但是B给A发送的CTS帧,C是可以收到的:

在这里插入图片描述

这样C就知道了,信道将被占用多长时间,在这段时间内C不会争用信道。这样就可以解决A给B发送数据时,C不会干扰。

在这里插入图片描述

(九)总结

在这里插入图片描述
以上内容是B站:湖科大教书匠老师的课程,讲的很不错,在这里做一下笔记,方便以后看。

https://www.bilibili.com/video/BV11E411y7gV?t=151

二、CSMA/CA相关题目总结

(一)结合下面两幅图,阐述CSMA/CA原理;结合第二幅图阐述两帧交换技术。

在这里插入图片描述

在这里插入图片描述

1、阐述CSMA/CA原理

(1)发送端首先检测信道是否在空闲状态,如果信道在空闲状态,则等待一段随机时间(DIFS)后,才发送数据。

(2)接收端如果正确收到此帧,则经过一段时间间隔后(SIFS),向发送端发送确认帧ACK。

(3)发送端收到ACK帧,确定数据正确传输。再经历一段时间间隔后,其他站点才能发送数据。

非官方回答(自述):

(1)站点准备发送数据之前需要先监听媒介;

(2)如果媒介在一个帧内部间隔(IFS)的周期为空闲的状态了,说明站点可以开始发送数据了,那么就从空闲的这个时刻开始发送数据。紧接着媒介就处于忙状态了。

(3)如果媒介忙的话,站点就需要等待一个空闲的IFS,然后站点还需要附加等待一个随机后退时间(冲突避免,多个时槽),每个人都是不一样的,因为是随机的,则可以避免的冲突。

(4)随机的时间有长有短,时间短的先发送数据。如果另一个站点在该站点的后退时间内占据媒介,为了公平则停止后退时间计数。

2、阐述两帧交换技术

发射器发送数据前帧听,等待一个空闲的时间,而且空闲时间等够DIFS。然后到DIFS时间后,发射器开始发送数据。发送数据的时候会给其他站点发送一个信号,其他站点都做一个CCA的评估,从而其他站点都进不来,进入等待的时间。

(二)综合下图阐述CSMA/CA中用于冲突避免的后退算法

在这里插入图片描述

答:

在无线网络中如果冲突了,是无法进行检测到的。那么就采取了,如果收不到ACK就认定为发生了冲突。如果发现了冲突就检测到冲突的节点,该节点将冲突窗口(CW)的大小翻倍(指数式的增长),然后从增加了的冲突窗口中选择一个后退时间。

后退时间=随机数 * 时间槽的时间

每次变化都是翻倍的,而变化的范围就是CWMIN至CWMAX 之间。

(三)综合下图阐述隐藏节点的定义和解决方案

在这里插入图片描述

在这里插入图片描述

答:

1、隐藏节点的定义

如图1所示:

1节点的无线信号可以覆盖到2号,但是覆盖不到3;

3节点的无线信号可以覆盖到2号,但是覆盖不到1;

1和3就是互为隐藏节点。

2、解决方案

通过RTS/CTS的四针交换可以解决,如图2所示。

  • 假设1号节点给2号节点发送数据,1号需要先发送一个RTS给2号,进行预约;这个RTS只能被2号节点收到,3号节点是收不到的,但是2号节点发CTS的时候,1号和3号节点都是可以收到的,3号节点收到之后,就知道了有人在用着,而且使用的时间也知道了,就等待这个时间。
  • 随后2号发给1号CTS,然后1号发给2号Frame,2号发给1号ACK。这样的话,另一个节点就无法发送数据了,从而就避免了这种问题。

(四)综合下图阐述四帧交换技术和阐述NAV思想与方法

在这里插入图片描述

1、四帧交换技术

在解释这个的时候需要知道帧间间隔每个IFS的含义。可以到一、CSMA/CA中的(四)帧间间隔IFS这个段落去查看这个知识点。

DIFS作用管理帧、发送数据帧

SIFS作用用来分隔开属于一次对话的各帧

答:

四帧分别为:RTS、CTS、数据、ACK

如果发射器需要发送数据时,需要先等待一个DIFS;

然后发射器发送RTS进行预约信道;

随后接收器等待一个SIFS短帧间间隔,然后发送CTS;告诉发射器你可以发送数据了。

然后发射器发送数据帧;

接收器等待一个SIFS后,如果正确的收到了数据帧,则向接收器发送ACK确认帧。

2、NAV思想与方法

答:

发射器在发送给接收器数据的时候,还要把占用的时间RTS和CTS所占用媒介的时间长度告诉其他站点

如图所示,发射器在发送RTS时,计算机出要经过三个SIFS、一个CTS、一个数据帧、一个ACK帧并计算出来时间发送给其他站点告诉其他站点未来要占用的时间。在这个时刻,其他站点收到了这个NAV时间,其他站点就不用在这个时间内帧听媒介。

接收器也会携带一个NAV,过程和发射器相似,后来占用的时间也会越来越短。

(五)综合下面任一幅图,阐述分段传输的过程,以及过程中NAV的应用方式。

在这里插入图片描述

在这里插入图片描述

答:

1、分段传输的过程

发射器在发送数据之前先按照CSMA/CA的协议,先要等待空闲的时候,然后等待一个DIFS时间。

然后发送一个RTS(握手阶段,告知其他站点不要进行发送了,我已经在发送了),接收器返回一个CTS。中间需要等待一个SIFS时间间隔,保证是原子操作,此过程是其他站点无法打断的。

返回CTS之后,又经过一个SIFS,然后传输数据。由于数据太大,被分解成了若干个段进行发送数据。如第一个图所示,被分解成了段1和段2

先发送第一个段(段1),发送完段1之后,在一个SIFS之后返回一个ACK(ACK1),然后又一个SIFS之后发送分段2,然后等待一个SIFS然后返回ACK2。

2、过程中NAV的应用

NAV的作用:告知其他站点,我需要执行的时间是多少

如图1所示,在此图中,运用的NAV技术,RTS、CTS、分段1和分段1返回的ACK,一共发送了四次NAV。

RTS的NAV 只是预测了紧挨着的一个数据发送的时间(分段1的)。

CTS的NAV 也是只预测了分段1的发送时间,这个NAV保证了分段1肯定能被发送出来的时间。

当分段1发出去之后,再去预测紧挨着分段1的段(分段2)的需要发送占用的时间。

一个接着一个保证了预测的占用的时间的准确性,又保障了占用介质的时间。

(六)解读下图中的8个NAV(支持由谁发出,值为多少)。

说明:两个图一共8个。

在这里插入图片描述

在这里插入图片描述

答:第一幅图

在这里插入图片描述

分别由谁发送的:

NAV(RTS)在发射器发送一个RTS后。

NAV(CTS)在接收器发送CTS后。

可以很清晰计算出:

NAV(RTS)=SIFS+CTS+SIFS+Data+SIFS+ACK

​ =3*SIFS+CTS+Data+ACK

NAV(CTS)=SIFS+Data+SIFS+ACK

​ =2*SIFS+CTS+Data+ACK

进一步化简:

NAV(CTS)=NAV(RTS)-(SIFS+CTS)

答:第二幅图

为了好理解,花了一个图:

在这里插入图片描述

可以很清楚的从上图看出,一共有6个NAV。

1、分别由谁发送的:

NAV(RTS)在发射器发送一个RTS后。

NAV(CTS)在接收器发送CTS后。

NAV(Data1)和NAV(ACK1)在发送Data1时发送。

NAV(Data2)和NAV(ACK2)在发送Data2时发送。

2、6个NAV的值分别为:

NAV(RTS)=3*SIFS+CTS+Data+ACK

NAV(CTS)=NAV(RTS)-(SIFS+CTS)

NAV(Data1)=3*SIFS+ACK1+ACK2+Data2

NAV(ACK1)=NAV(Data1)-(SIFS+ACK1)

NAV(Data2)=3*SIFS+ACK2+ACK3+Data3

NAV(ACK2)=NAV(Data2)-(SIFS+ACK2)

(七)解读下面所示多站点应用CSMA/CA原理进行无线传输的过程

在这里插入图片描述

答:

为了方便看图,我给假设上图是从t0时刻到t7时刻5个站点要发送的数据。

在这里插入图片描述

可以看到t0时刻只有站点3有数据要发送(黄色箭头标识着),站点3监听信道是不是空闲着。如果空闲着就需要等待一个DIFS时刻。

在这里插入图片描述

等够了一个DIFS时刻,信道由空闲状态转换为忙状态(占用了这个媒介,其他站点即使有数据,也不能发送了)。

补充在上面这个过程中其他站点的状态:站点3在t2时刻发送完了数据,那么t2时刻之前其他站点的状态如下:

站点3在等待一个DIFS时候,站点1也有数据要发送了。

在这里插入图片描述
站点1在t0到t1的这时刻发现信道是空闲的,就开始计数。

在这里插入图片描述
计数到了t1时刻,发现信道已经不空闲了(站点3已经计数完毕了,开始发送数据了,占用了媒介)。

站点2和站点5同时在站点3发送数据的时候,也需要发送数据了,但是现在还发送不了数据,只有等待站点3发送数据之后,再等待一个DIFS时间之后才可以发送数据。

现在站点1、站点2、站点5在t2时刻之前都需要发送数据,但是信道被占用了。此时,需要产生一个随机等待的时间。原则上这三个站点产生的等待时间是不一样的。

等待站点3发送完数据之后,需要等待一个DIFS。

等够一个DIFS之后,各自需要等待之前产生的随机等待时间。

在这里插入图片描述

可以看到站点2的等待时间最短,则站点2开始占用信道,发送数据。

过程说明:

站点1、站点2、站点5在同时等待的时间内。

站点2等够了,就占用了信道,此时站点1和站点5就监听到了信道忙。则临时终止等待。

剩下的等待时间还是有效的,需要留着以后用。

在这里插入图片描述

站点1和站点5发现站点2忙完了,此时需要等待一个DIFS时间,等待之后,进入一个等待时间。

此时站点4需要发送数据了,但是帧听到信道还是在忙着,就随机产生一个等待的时间。然后还是需要跟站点1、站点5一起等待一个DIFS时间。

站点1剩余的等待时间:

在这里插入图片描述

站点4的产生的随机等待时间恰好和站点5剩余的等待时间一样:

在这里插入图片描述
现在站点4和站点5同时进入了发送数据的状态。

由于站点4和站点5发生了冲突,现在扩大产生的随机等待时间的区间的大小,翻倍扩大。

然后同时等待一个DIFS时间。

站点1根据之前剩余的时间继续等,站点4和站点5又随机抽取了一个随机等待的时间。

现在站点1的时间比较短,所以先发送。

以此类推,直到结束。

三、有秘密告诉你

如果对你有帮助,可以分享给你身边的朋友。或者给俺点个大大的赞和大大的评论,点赞和评论就是给我最大的支持,感谢。
水平有限,难免会有疏漏或者书写不合理的地方,欢迎交流讨论。
作者:TrueDei
作者唯一博客CSDN:https://truedei.blog.csdn.net/
转载说明:如需转载请注明原地址和作者名。

如果喜欢我的文章,还没看够可以关注我,我会用心写好每一篇文章。

我已加入CSDN合伙人计划

亲爱的各位粉丝:可以添加我的CSDN官方企业微信号,和我近距离互动聊天,为您答疑解惑

直接使用微信扫码即可,不用下载企业微信

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_17623363/article/details/106868921
今日推荐