计算机网络(三)

(十一)路由算法

A、路由算法分类

  • 动态路由和静态路由

静态路由:人工配制,路由信息更新慢,优先级高。这种在实际网络中要投入成本大,准确但是可行性弱。

动态路由:路由更新快,自动定期更新,能够快速及时反映网络拓扑结构和网络之间的费用变化。

  • 全局信息路由和分散信息路由

全局信息路由:网络中所有路由器都掌握整个网络信息,拓扑结构和链路费用信息。这种方式在大型网络中导致路由信息更新费用巨大,可行性不强。这种网络下一般使用链路状态路由算法

分散信息:每个路由器仅仅只掌握与其物理线路相连的路由器以及链路费用,路由之间的更新也仅在邻居路由器之间传递。这种网络使用的算法为距离向量路由算法

B、链路状态路由算法

  这种算法路由信息的更新一直在网络中传递,直到所有路由器都更新完毕。

Difkstra算法是该算法的一种具体实现,现在通过下面一张图演示该算法如何确定在一个网络中如何确定到其他路由器的最短线路。

如上图:u路由器是源路由器,D(v)等意为节点v到节点u的费用。P(v)意为v路由器的上一个路由器是谁,7,u就意为u到v费用为7。

第一步中列出所有其他路由器节点到u得费用,没有直接物理连接的路由器(如y,z)表示为正无穷。

第二步,对比第一步中离u费用最低的写入N‘,然后更新费用,可见更新后D(y)发生了变化,其到W的费用为11。

按上面步骤,最终得出了u到每个路由器的最短线路。故而得出U得最短路径数,从而确定了u的转发表:

  • 可能存在的问题:震荡(oscillations)的可能性

如上图,根据数据转发量确定费用,开始时C到B费用为e,C到D费用为0。其他信息看图可得,第一次同时发送数据到A时路径分别是:C-B-A    B-A  D-A,第二次从新判断,B会认为B-C-D-A这条路费用为0+0+1比B-A线路更优,所以三个路由器路径变化为图二。同理再下一次又变为逆时针,然后顺时针。

观察上面我们可以知道,存在一种可能性,数据在到达D时,路由更新,数据又回到B,当要发送到A时,恰巧又更新了,则又转回到D,该数据就有可能在TTL消耗完毕后丢失,无法到达目的地址

C、距离向量路由算法

该方法每个路由仅仅关注自己附近的路由及其邻居的路由信息即可。

Bellman-Ford方程是该算法的一个具体实现:

如上图:当u要到达Z,u有三个邻居路由节点X、V、W,它仅仅需要获取他们到达Z路由器的最短费用(他们的最短费用也都是通过他们的邻居一级一级获得的),可见三个路由器到Z得费用分别是3,5,3,加上u到邻居节点的费用则为4,7,8,所以对比可得最终费用为4,路线为u到x。

上面过程可以抽象出该算法的公式

向量就是路由器估计出的到其他路由器的最短路径(费用)。

  • 向量无穷计数问题:

如上图:X、Y、Z三个路由器Y和Z同时要向X发送信息,下面演示线路费用变化后所引起路由更新导致的无穷更新问题:

本来:y到x,4<50+1=51 ,为4,z到x,50>1+4=5,为5。突然更新为60,y这时获取的信息是z-x为5,z-y为1,y-x为60,所以更新y-x为6,6跟4发生变化,同步到z,z此时得知的信息为y-x为6,y-z为1,z-x为5,更新后z-x为7。然后就像下图一样,一直更新将近50次,才会停止

  • 如何避免该问题:

毒性逆转(poisoned reverse):如果一个节点到达某个目的的最小路径是通过某个邻居计算得到的,则通告给邻居节点到达改目的的距离为无穷大。如上例,z到x的最小费用是通过y提供的y-x和y-z的费用1+4计算得到的,那么z通知y的就是z-x为正无穷

这样就解决了无限计算的问题。

C、分层路由

由于真实网络是非常庞大的,不可能让所有路由器都遵循一个路由算法,所以上面两种算法都不可能统一在网络实现,同时为了保证网络自治性的要求,分层路由的思想真正被应用到internet网络中。一批批路由器构成不同的自制系统,自制系统之间通过某些路由器互相连接,自制系统内部可以使用自己的路由算法,当涉及到和其他自制系统某个路由器的通信时,就通过自己系统跟目标路由器所在自制系统有连接的路由器获取到达目标路由器的路径信息,从而实现多级路由。(先在在自制系统中路由寻找到连接目标自制系统的路由器,再通过该路由器送达目标路由器)

如上图,如果1b路由器想要发送信息到3c,那么1b首先根据1c更新到自己的信息获得1c连接的是3c所在的自制系统,所以1b先将信息发送给1c,1c根据信息内容发送到AS3自制系统,AS3系统收到信息后根据自制系统间协议得知信息来源与去向,将信息转发到3c。整个过程先用到自制系统内部协议,然后用到自制系统间协议,最后再用到自制系统间内部协议,所以可以看到一个分层的思想。

如果一个目标地址可以通过多个自制系统转发到达,应该如何选择,自制系统间协议遵循热土豆原理,谁最快交给谁。

D、Internet网络中的三种路由协议

  • RIP协议(自制系统内的距离向量路由算法)

该协议的RIP路由表通过一个应用层进行管理,名为route-d(daemon),RIP报文会周期性地封装到UDP数据报中进行发送。数据报形式如下:

其自带毒性逆转技术当自己路由表中路由信息发生变化时会及时通知相邻路由更新路由表,如果长时间没有收到某个路由的最新通告则判读该路由链路失效

  • OSPF(自制系统内部的链路状态路由算法)

其采用一种开放的公众可用的协议,采用链路状态路由算法,把一些路由器分成一个LS分组,组内路由和组之间路由进行扩散,利用Dijkstra算法计算最短路由路径,形成完整了网络拓扑结构图。

OSPF报文是直接装在IP数据报中的。

其优点如下:

  1. 安全,OSPF报文可以使用认证机制,防止恶意入侵。
  2. 允许同时使用多条相同费用的路径(RIP只能选择一条)
  3. 集成了多播协议可以进行单播路由和多播路由
  4. 其支持大规模的AS(自制系统)分层
  • BGP(边界网关协议,自制系统之间的协议标准)

该协议是将多个小的自制系统连接为一个大的整体的Internet互联网的关键。

该协议提供了一种手段,让自制系统的边界网络路由器能够互相通知自己所能到达的子网(eBGP),同时也允许自制系统的边界路由器向自制系统内部通知获取到的其他自制系统所能到达的子网信息(iBGP)以达到自制系统中主干路由器选择合适的边界路由器去发送消息到正确的子网。

两个BGP路由器之间传递消息需要建立一个BGP会话,该会话通过TCP协议来建立和保持连接,同时两个BGP路由器之间交换的是去往不同目的子网的前缀信息,是具体的路径

在相互通报能够到达的子网路径时,BGP路由器会尽可能将网络进行聚合,即网络前缀的使用

BGP报文有四种类型:

  1. OPEN,与另一个路由器建立连接,并验证发送方。
  2. UPDATE,通告新路径,当路径发生变化,更新彼此路径信息。
  3. KEEPLIVE:在没有更新的情况下,确保连接的正确和未断开,需要发送该类型报文,同时也用于对OPEN报文的确认。
  4. NOTIFICATION,当接收到报文有差错时,发送该类型报文到对方,同时也用于关闭连接

BGP报文中两个重要属性:

  1. AS-PATH(AS路径):包含前缀通告所有经过的AS序列。
  2. NEXT-HOP(下一跳):开始一个AS-PATH的路由接口,指向下一个AS,下一跳可以同时存在多个链路

BGP路由器的输入策略:

同一个边界路由器可能会获得来自其他路由器的多条路径到达同一个子网,这时会根据自己路由器的输入策略来决定选用那条路径来传递信息。

通常情况下,默认接收策略为选择最短的AS-PATH,和根据热土豆路由原则,先看到谁就直接抛给谁。当然也可以自定义策略,例如有些网络路径经过其他国家等敏感网络,则将该条路径pass。

运营商网络和用户(客户)网络:

E、AS间和AS内采用不同协议的好处(分层的好处)

不同的自制系统可以指定不同的路由策略,管理网络信息如何被路由,单一管理,无需策略决策。

层次化的路由使上层路由器仅仅需要关注自制系统的边缘路由器或者子网,大大缩小了路由表的大小,减少了路由更新的流量占用,同时也适应了大规模互联网的要求。

实现了性能优先和策略优先。

七、数据链路层

(一)数据校验和查错

经常见到的纠错和差错方法有:汉明码、奇偶校验码、校验和、CRC(循环冗余校验码)等等。

(二)多路访问协议

A、信道划分(channel partitioning)MAC协议

我们前面提到的多路复用技术就是这里信道划分协议的一部分,多路复用技术分为多种类型,包括TDMA(时分多路复用技术)FDMA(频分多路复用技术)、CDMA(码分多路复用技术)等等。

这种信道划分协议,将固定频率或者时隙分给不同的主机使用,在网络压力小的时候,有一部分主机没有信息的传递就会出现频率空闲,带宽利用率不足。

但是在网络压力大时,每个主机都会用自己的频段传递消息,这就让网络得到充分利用,效率比较高。

B、随机访问(random access)MAC协议

这种协议没有规定谁来使用,信道不划分,会有冲突产生,同时也必须有冲突处理机制,保证当冲突发生时,能够及时处理冲突(比如重新发送等等)。

典型的随机访问协议有:时隙(sloted)ALOHA、ALOHA、CSMA、CSMA/CD、CSMA/CA等

  • 时隙(sloted)ALOHA协议

如上图,这种协议分成多个时隙,每个节点都可一在任何一个时隙开始时发送信息,当某个节点发送消息与其他节点发送信息冲突时就会以概率P,等待在下一个时隙重新发送(因为是概率P,所以存在下一个时隙没有发送的可能性)。

优点:

  1. 单个节点活动时,可以没有多路复用技术那样空出多个时隙的情况,可以一个节点占用所有时隙发送数据和信息。
  2. 高度分散化,每个节点接入发送消息时,仅仅需要保证是在时隙开始时发送数据,在时隙结束前发送完毕数据即可。

缺点:

  1. 因为没有分配时隙,所以当有两个或以上节点占用同一个时隙发送数据时,就会产生冲突引起冲突恢复机制,浪费空间和时隙。
  2. 每个节点必须拥有相同的时钟,保证时隙转换的一致性。
  3. 节点也许能远小于分组传输时间检测到冲突。

考虑到冲突机制,这种协议经过计算,利用率最高能能够达到0.37

  • ALOHA协议

与上面协议不同该协议更加自由,因为没有时隙划分,所以任何节点都可以在任何时间开始发送数据,这样同样也就更容易产生冲突

没有时隙划分,在冲突处理上可能会浪费更多时间,所以该协议的最大利用率要小于上面协议,仅有0.18.

CSMA(载波监听多路访问协议)(carrier sense multiple access)

为了防止冲突发生造成的带宽性能浪费,所以该协议有检测冲突的机制,每个节点在发送消息之前都会首先监听信道,收到信道未被占用的返回包后才开始发送帧,根据监听方式不同又分为三种不同的CSMA协议:

  1. 1-坚持CSMA,发现被占用一直保持监听状态,知道没有占用后,发送帧。
  2. 非坚持CSMA,发现占用后,就解除监听状态。
  3. P-坚持CSMA,发现占用后,隔一段时间后再次检测占用情况。

当然,这样也无法保证冲突的发生,因为链路的长度原因,当两个节点同时检测到链路未被占用,就同时发送消息,这样就导致冲突的产生,所以该协议无法控制这种冲突的产生和解决。而且冲突发生后即意味着两方发送的数据帧都失效,继续传送会浪费带宽。

  • CSMA/CD

该协议增加了冲突检测机制,在发送数据帧的同时也发送冲突检测帧,当探测到有数据冲突后即刻终止数据发送,减少信道(带宽)浪费。

冲突检测原理,一般每个节点发送的数据帧都会有最大信号强度,当检测到这个信号强度远超最大值时,就可以判断是多个数据帧叠加产生冲突的情况,从而终止数据发送,节省信道资源。

正是这一原理,所以有线局域网络容易检测到冲突产生,无线局域网络因为信号会产生衰减,故难以通过上面方式监测出信号冲突问题。

要注意的问题:

存在上图情况,当节点A和节点B同时准备发送数据,都监测到自己链路中没有产生数据流,A的数据开始发送,就在快到达B时,被B监测到,那么A的冲突检测触发,为了保证A节点冲突恢复机制正常执行,数据帧的长度必须大于两个节点之间的最大传输时延,不然A节点在收到冲突信息时,已经开始发送下一条数据,中间的冲突检测也就没有用处了。

C、轮转访问MAC协议

这种协议的出现是为了取上面两类协议的长处,扬长避短,保证在网络压力大或者小的情况下,都能够有不错的表现。

  • 轮询:

在一个网络中,主节点依次询问从节点是否要发送数据帧,如果需要,就开始发送,没有被询问的从节点无法发送数据帧。

存在问题:轮询时的确认和询问数据帧会产生额外开销、存在等待延迟、单点故障(主机宕机)

  • 令牌传递

在一个环形网络中,仅有一个令牌(特殊的数据帧),只有拿到令牌的主机(节点)才能够进行数据帧的发送。

存在问题:

令牌传递产生的开销、单点故障(环路上某个节点拿到令牌后宕机,令牌无法传递),等待延迟,当令牌传递出后,若恰好有发送消息需求,则需要等待令牌轮转一周。

(三)MAC地址与ARP协议

A、MAC地址

IP地址是网络层用来唯一标识网络节点的地址,MAC是数据链路层唯一标识一个节点的地址,通常由48位bit标识,每个节点(网卡)都有一个唯一的MAC地址,数据链路层的数据帧寻址需要用到MAC地址。

MAC地址都处在一个平面,地址是唯一的,可携带,在任何一个地方都是唯一的。

IP地址具有层次性和地域性,同一个网卡,可能地点不同其对应的IP地址就不同,处于不同自制系统中IP地址一样有可能不同。

B、ARP协议

每个网络中的节点都需要共同维护一个ARP表,表中记录了IP地址和MAC地址的映射关系,节点之间通过ARP协议,来更新和维护ARP表。

表结构:ttl是过期时间,一般是20min,当时间到后该条对应关系就会失效。

  • 在同一自制系统中,MAC地址的获取。

设网络中有设备A、B、C、现在A要发送消息到C对应IP,但是A只知道C对应的IP地址,链路封装的数据帧需要MAC地址,这时候先检查A自身是否有对应关系,如果没有,就利用ARP协议向本自制系统中的节点发送广播消息,(广播地址为全1,FF-FF-FF-FF-FF-FF)C在收到后,发现IP是对应自己,就根据ARP协议向A发送自己IP对应的MAC地址,A获取后添加到ARP表中,就可以进行数据帧发送了。

  • 跨自制系统的MAC地址确定

如上图:当A要发送数据到B时,中间跨越自制系统,首先明确知道B的IP地址,A的IP地址和MAC地址。

首先A根据默认网关IP信息,通过ARP协议向路由器询问默认网关的MAC地址,获取MAC地址后,将数据帧封装发送到路由器左端(默认网关)。

默认网关收到后,链路层移交网络层,网络层根据目的B的IP地址确认输出端口MAC地址,同时广播该目的IP地址,B收到后根据ARP协议反馈自身MAC地址到路由器右端(输出端口),路由器链路层获取到B的MAC地址后封装数据帧,并发送。

数据到达B后,经过链路层解析,网络层获取的数据仍然是源主机的IP和自己的IP地址。(当然路由器会在局域网接入互联网时修改网络层数据报中源IP地址信息,这里没有考虑路由器修改IP的情况)。

(四)以太网结构和所用协议

A、以太网结构

上世纪90年代中期前流行总线结构,如下图(现多被淘汰):

因为多台机器共用一个总线(bus),所以当同时有两台设备发送数据时就存在冲突的可能性,像这样在同一个总线上,公用一个总线互相同时发送数据会产生冲突的区域我们称为冲突域

星型结构:

中间通过一台交换机(链路层设备)连接到一块,因为每台主机单独拥有一个冲突域,所以不存在常理上的冲突现象

B、以太网的特点

因为是链路层网络,所以其具有以下特点:

  1. 无连接,发送帧的网卡和接收帧的网卡间没有握手的过程。(传输层有做,这里没必要)
  2. 不可靠,接收网卡不会向发送网卡进行确认,当有帧发生错误就会直接被丢掉,丢失帧引起的错误由上层处理。(传输层协议有做,这里也没必要)

C、CSMA/CD(以太网采用协议)和二进制指数退避算法

描述协议过程,NIC是网卡的意思(可以理解为以太网节点之间的接口)

  1. NIC从网络层接收数据报,创建数据帧。
  2. NIC监听信道,直到信道空闲,停止监听,并发送数据帧同时开始监听
  3. 如果NIC发送完整个帧,并且没有检测到其他节点有数据发送(数据冲突产生),则NIC确认数据帧发送成功!
  4. 如果NIC检测到其他节点发送和传输数据,则终止发送,同时发送堵塞信号(加强冲突帧的信号强度,让其他节点尽早发现)
  5. 终止发送后,就根据二进制指数退避算法,等待一些时间,该算法跟冲突发生次数有关,冲突发生次数越多代表网络压力越大,等待时间越长。下面是算法大概过程:
  6. ​​​​​​​
  7. 连续冲突次数超过16次后,一般认为网络出现问题,报告上层处理

D、以太网数据帧结构

preamble,前导码,用来时钟同步,第七个字节是10101010,第八个字节是10101011。

dest address 目的MAC地址;source address 源MAC地址;

type,指明数据链路层封装的上层什么协议类型的数据,如IP协议等。 

data数据项,为了保证数据同步数据最小是(46字节),因为CSMA/CD协议的关系。

CRC(4B):循环冗余编码

(五)以太网交换机

A、什么是以太网交换机?有什么特点?

它是链路层设备,负责储存-转发以太网数据帧,其可以向一个或者多个MAC地址转发数据帧。

它对于主机节点是透明的,主机感受不到交换机的存在。所以交换机也是即插即用的设备。

因为对于计算机节点是透明的,所以它当中用来确定转发目的的转发表,是通过自学习的方式完成的。

每个主机独享一个链路直接连接交换机,交换机能够对数据帧进行缓存

交换机支持全双工通信,每个连接到交换机上的主机都是一个冲突域,交换机具有冲突隔离的作用。

B、交换机的自学习过程

上面的交换机是刚刚连接到链路中的,这时A主机要向A‘主机发送数据,交换机如何完成自学习过程?

首先,交换机收到A(MAC地址)发送过来的数据帧,自学习开始,因为之前没有收到过A的数据帧,所以交换机将A的MAC信息及对应端口记录到交换表中(还会设置一个过期时间)。

因为同样不知到A’对应地址的端口,所以交换机采用泛洪的方式,发送给所有连接到该交换机的所有设备,等到A‘收到消息,进行应答时,就可以被交换机学习到了,能够记录下A’对应端口。

C、交换机的帧过滤/转发

当交换机收到数据后,会首先记录MAC地址及其对应端口信息,然后利用目的主机MAC地址检索交换表,检查的结果会有三种情况:

情况一,目的主机和源主机的MAC地址相同,都接在交换机的同一端口,则该数据帧会被认为无需交换机参与即可实现传递,该数据帧会被直接丢弃

情况二,交换表中还没有数据帧要发送到的MAC地址对应端口,则采用泛洪方式发送到除源端口外其他所有端口。

情况三,如果找到目的MAC地址对应端口,则直接转发到对应端口即可。

D、层次化交换机结构

在真实的局域网环境中,往往通过多个交换机连接,组成一个较大的局域网,当然这个大的局域网中的交换机都是同样的自学习逻辑,与单个交换机并无二致

我们可以进一步将眼光放高,看一看我们所谓子网,其实就是一个交换机构成的网络(以太网、局域网),通过一台路由器连接到ISP(服务商网络),再接入互联网:

因为在这个由交换机构成的范围中,其中任何一台主机发送一条广播数据帧,都会被所有其他主机收到,所以我们可以称该子网为一个广播域

E、对比路由器和交换机

路由器是网络层设备,转发依据是网络层分组首部;交换机是链路层设备,检测的是数据帧首部。

二者都使用转发表,采用储存-转发模式对数据进行转发;

路由器利用路由算法,根据路由协议计算出路由表,依据IP地址进行转发。

交换机是自学习,对于主机是透明的,转发表是自己构建的,不需要主机主动参与。

下图是各种网络层设备的对比图:

直通传输就是指,不进行储存,数据到达后直接进行处理(丢弃或者转发),交换机和网桥通过一些设计是可以做到的。

F、VLAN(虚拟以太网)

有时候我们会遇到在同一个子网中,有不同部门的局域网,因为一个子网是一个广播域,当我们需要仅将数据帧在一个部门中转发时,就需要用到路由器或者VLAN技术,分别使用的是不同层的网络设备来实现,路由器不必多言,仅看VLAN

所谓VLAN就是利用一些上层软件,将交换机的不同端口设置为一个分组,当同一个分组中有一个端口要进行广播消息时,仅能够在该分组中转发数据。

因为是软件设计的方法,所以不同端口之间也可以自由加入VLAN或者切换VLAN,这样就实现了一个部门之间的广播消息转发。如下图,一个颜色是一个VLAN分组。

那么不同交换机的同一组VLAN的数据如何进行转发,每个交换机会留一个端口,专门用来连接交换机,这样就实现了不同交换机之间相同VlAN的互通。

G、802.1q协议

与802.1协议的数据帧结构不同,该协议增加了4个字节用来处理VlAN技术中数据帧在交换机中转发时数据端口的标识问题,增加的结构包含数据帧的VLAN ID信息,这样就避免了多个VLAN之间转发数据帧时的识别问题。具体结构如下图:

两个字节用来标识所用的协议、两个字节用来标识控制信息:12bit用来储存VLAN ID 信息、3bit用来记录该数据帧的优先级。

(六)PPP协议(Point-to-point protocol)

是一种点对点链路控制协议,因为是点对点,是一对一的,所以不需要MAC多路分用技术。

A、该协议实现功能

  1. 组帧:将网络层的数据报封装到数据链路层的数据帧中,可以同时承载网络层的协议分组,可以向上层实现分用(多路分解)
  2. 比特透明传输:数据域必须承载任何比特模式。
  3. 差错检测:无纠正,一把交给传输层和网络层来做,因为链路层都是一条线路先到先得。
  4. 连接活性检测:检测、并向网络层通知链路失效。
  5. 网络层地址协商:端节点可以学习和配置彼此网络地址,以适应网络环境寻址。

B、帧结构

首尾两个字节是用来确定帧开始和帧结束的标志字节

第二个和第三个字节暂时还未被采用,因为是点对点的所以第二个和第三个字节都没有被采用。一般都是全1。

protocol,指定上层网络层所使用的协议,不是固定的1字节或者2字节,字节数的确定需要通信双方共同协商决定

info,用来封装上层网络层数据报文,长度根据网络层数据大小来定。

check,CRC数据校验位,2字节或者4字节(双方协商决定)。

C、数据透明传输实现

如何判断标志位的数据不作为数据接收,如果有数据位跟标志位数据相同该如何正确识别数据位和标志位?

数据域中允许包含标志模式<01111110>,在数据的字节<01111101>和<01111110>前面添加额外字节<01111101>

规定出现下面情况,分别对应不同数据字节:

  1. 如果是单个<01111101>则表示一个填充字节。
  2. 连续两个字节<01111101>则第一个会被丢弃,第二个就作为数据接收。第二个是<01111110>也会作为数据接收。
  3. 单个字节<01111110>,则代表是帧开始或者结束的标志字节。

所谓填充字节就是数据在传输过程中,根据协议添加进网络层数据帧中的字节,如下图:

(七)无线局域网

现在经常使用的是IEEE 802.11标准下的无线局域网,802.11有很多版本,每个版本在是否频分多路复用方面有不同,具体见下表:

物理层中,802.11b使用的是直接序列扩频技术(DSSS),在这种标准网络下,所有主机使用相同的码片序列,因此,不能进行频分多路复用。

OFDM是正交频分多路复用技术,在这种网络中的主机使用相互正交的码片序列,因此具有信道分配的作用,支持多用户同时上网。

  • 无线局域网有两种类型:
  1. 不同无线主机通过基站连接到互联网(基础设施网络模式)
  2. 不同主机直接无线互联(自组网模式)

A、访问点(AP access point)、基本服务集(BSS basic service set)

访问点就是基础设施网络模式中的基站的代称。

因为有不同基站,每个基站对应很多个无线主机,这一个基站和这些无线主机就构成一个基本服务集

B、802.11AP关联:被动扫描与主动扫描

  • 被动扫描
  1. 各AP发送信标帧(基站定期向范围内发送的信息,包括自己的IP地址和物理地址,以及已经连接的无线主机信息)
  2. 主机收到后,向选择的AP发送关联请求帧。
  3. AP向主机(H1)发送关联响应帧,确认无线主机和自己的连接。
  • 主动扫描
  1. 主机(H1)主动广播请求帧/
  2. 收到主机发送的请求帧后,则会向AP发送探测响应帧,响应主机
  3. 主机再次向选择的AP发送关联请求帧。
  4. 收到后,AP在权限允许的情况下,发送关联响应帧。

C、CSMA/CA(802.11使用协议)

因为是CSMA协议,同样每个无线主机或者AP在发送数据之前都要对信道进行监听,如果有冲突就放弃发送,等待无冲突后发送,但是无法像CSMA/CA那样在发送数据的时候检测冲突的发生,因为无线信号在发送后就会产生衰减,无法从多个信号叠加产生大信号强度的特征中判断冲突产生。同样隐藏信号站也会引发冲突检测不到的情况,假设三台主机,A、B、C,A和B都能和C通畅通信,但是A和B之间就存在障碍物,A和B虽然物理距离近,但还是无法发送消息。

所以CSMA/CA协议采用应答方式判断数据帧是否发送成功,接收方在收到数据后必须在规定时间内给出应答信号,负责发送方就认为数据帧发送冲突导致接收失败

同样在帧听到信道没有数据发送后,发送方还要等待DIFS段时间,接收方在返回ACK帧时也应该等待一段时间,这些等待时间的长短代表着不同数据帧的优先级。

D、CA(如何避免冲突?)

发送方会先向接收方发送一段特殊的非常小的数据帧(RTS request to send),用来探测冲突

接收方在收到RTS后,会向所有节点广播CTS(clear to send)帧作为RTS的响应。向其其非发送端节点发送是为了,通知他们不要发送,已经有人要发送数据了。

这样就消除了隐藏站的影响,避免了数据冲突。

E、802.11网络中数据结构

这里为什么有三个地址,我们重点搞清楚这个问题。

其实很简单,因为发送方和接收方中间肯定要经过一个基站(AP),通过基站转发信息到另一个接收方,故三个地址分别是发送方地址(源地址),基站地址、接收方地址(目的地址)

不同端的帧的三个地址对应不同,见下图:

​​​​​​​

1代表是,0代表否。

八、物理层

(一)数据通信基础

A、通信过程图示

信源:将消息转化为信号的设备,例如计算机。

发送设备:将信源产生的信号进行适当变换的装置,变化后能够在合适的信道中传输,主要包括编码和调制的过程。

信道:信号传输通道,如物理介质。

噪声:指在数据(信号)传输过程中,自然界对其产生的干扰。

接收设备:完成发送设备反变换,从信道信号中还原出原始发送信号。

信宿:信号终点,将信号再次转换为人能够识别的消息。

B、数据通信术语

数据:传送消息的实体。

信号:数据的电气或者电磁表示。

“模拟的”:指参数值是连续的,更接近真实的信号。

“数字的”:对现实世界连续信号的采样取值,参数的取值是离散的

码元:信号基本单元(如波形等)。

频带:信号频率范围(最高频率-最低频率)。

带宽:常用信号频率范围(有效带宽,在实际应用中经常使用带宽,一些带宽可能存在,但信号过弱,采用较少。

数据通信方式:单工(单向传输线路)、半双工(轮流进行的双向传输)、全双工(同时进行的双向传输)

并行通信和串行通信:并行通信指信道中一次传递多个bit,串行通信指信道一个bit一个bit传输。

C、异步通信与同步通信

  • 异步通信:发收双方采用不同时钟,各自时钟会存在一定误差。

发送方和接收方为了防止误差过大,所以一般一个字符(7bit)或一个字节传输,来保证个字节传输完成后,有一段时间来修正时钟误差

在没有数据发送时,线路保持低电平,当有信息传输时,变为高电平,第一个时钟周期的高电平为起始,不计作数据,信号开始发送过程中,接收方按自己时钟接收数据,每次接收数据都会产生误差,如果一直接收的话,误差过大会导致接收方接收迟缓数据丢失等问题,所以每个连续时间发送数据不能持续时间过长。

同样当数据发送结束后变为低电平,等待下一次数据(字节)的发送。

异步通信的优缺点:简单,发收双方不用有复杂时钟同步步骤,但是每个字节都会有时间间隔,数据传输效率低,信道空闲时间大。

  • 同步通信:发收双方使用同一个时钟,时刻保持时钟同步

为了保持时钟同步常见做法是,每次发送数据时都带上时钟同步信息,接收方接收到后先同步时钟再进行消息接收。

优缺点:信道充分利用效率更高,接收方需要时间成本同步时钟。

D、模拟信号与数字信号

模拟信号是人或自然事物常表达的信号,多是连续的,如声音信号。

数字信号,是电脑为了处理自然信号,每隔一段时间采样转化为数字信号的离散的信号(数据)。

如下图,展示了两种信号的不同点:模拟信号通常在信源阶段,数字信号是发送设备转换后的信号。

  • PCM(一种典型的信源编码技术)

信源编码就是将模拟信号转换为数字信号的过程。

PCM分为三个步骤,如下图:

采样:就是得到原始信号在一系列时间点上的采样值,如上图的第二行。

量化:就是将采样数据,做近似处理使数据更规范和易处理(以损失精度为代价),例如将3.2等小数全部抽象为整数,方便处理。

编码:将量化后的数据进行一定的二进制数据对应,就像上图倒数第二行,每个量化后结果用三个bit表示3就是011,编完后转换成数字信号在信道发送。

接收方在接收到数字信号后,会进行还原,但是因为在发送方转化过程中不可避免存在误差,所以还原后的模拟信号,肯定和源信号有差异。就拿音乐来作比方,音质好的音乐,因为其转化过程中采样密度大,所以误差小,更接近真实声音。

(二)物理介质

分为导引型传播介质(以来具体物质条件传播),和非导引型传播介质(无线电等依赖介质较多,无法界定固定介质)

导引型传输介质

A、架空明线

就是直接将电线架设在空中,一般用于战时等条件简陋,情况紧急等情况下,因为空中架设的电缆,容易收到外界电磁场的干扰,人为破坏,以及噪声干扰等等,导致信号传输质量差,效率低。

B、双绞线

双绞线就是以两根电线为一对,相互缠绕在一块,多对再集合到一块的物理传输介质。 

双绞线有两种类型,如下图:

无屏蔽双绞线:在绝缘层和最外层之间没有屏蔽层,多被采用,因为屏蔽层是金属材质,制造成本和技术要求更高,同时维修成本也高。

屏蔽双绞线:隔绝性更好,更抗干扰,但是因为制造成本高,带来优化小,很少被采用。

C、同轴电缆

现今多用在电视网络的机顶盒上,同轴电缆又分为基带型和频带型,现在机顶盒多是频带型。

Internet网络中很少采用同轴电缆,同轴电缆结构如下:

D、光纤

多被网络传输采用,具有传播速度快,效率高等特点。

其传播原理就是利用光的反射。

分为两种类型:多模光纤和单模光纤两类,结构如下:

左边这类因为铅芯较粗,所以光从不同角度入射后,反射所经历的路程较长,中间因为光的折射所产生的损耗就越大,传播速度相对较慢,但是制造成本相对低。

右边采用更细的铅芯,外模也采用单一模,所以光在传播过程中是不断进行全反射,速度更快,损耗更小,传播更远,但因为铅芯较细,技术要求高,成本高。

非导引型传输介质

A、地波传播

频率较低(大约2MHz以下)的电磁波趋于延地球表面传播

有一定绕射能力(地球是圆的,绕射就是一直沿着地面走)

在低频段,地波传播距离可以超过数百米甚至数千公里

B、天波传播

因为电离层的发现,所谓电离层是说在距离地表60-400KM的高度(这里电离层的厚度和高度都会变化)存在,能够反射频率较高的电磁波(2-30MHz)。

电离层的密度和厚度随时间随机变化。

利用这一原理,电磁波可以被传递到10000KM以上。

电离层就像一面大镜子直接反射信号,只需一次。

C、视线传播

频率高于30MHz的电磁波将被穿透电离层,不会被反射回来。

沿地面绕射能力弱,空间上直接走直线。

通常是点对点无障碍的点对点直线传播。

也可以通过中继站,或者卫星等中继设备,通过多次直线传播实现远距离非直线传播。

D、常见非导引型波频用途范围表:

(三)信道和信道容量

A、信道

信道有广义与狭义之分,如下图:

上图是细化的数据通信过程。

狭义信道就是指传输介质

广义的信道,可以讲视角继续拉远,放在调制器上看,调制器和解调器就构成调制信道。同理将眼光放在译码器和编码器之间就是编码信道

  • 恒参信道

各种有线信道和部分无线信道(如微波视线传播链路、卫星链路等)。

理想的恒参信道是无失真传输信道。

对信号幅值产生固定的衰减,对信号输出产生固定时延

  • 随参信道传输特性

许多无线信道都是随参信道,如随着电离层不断改变而参数不断改变的天波信道。

信号衰减随时间随机变化。

存在多径传播现象。

信号传输时延随时间随机变化。

B、信道容量

信道容量就是指信道无差错传输信息的最大平均信息速率。

下面直接展示两种信道容量计算公式:

 (四)基带信号基础

A、相关概念

信源发出的原始电信号就是基带信号

模拟基带信号:模拟信源。数字基带信号:数字信源。

基带信号往往包含较多的低频成分,甚至有直流成分

直接在信道中传送基带信号称为基带传输

实现基带传输的系统称为基带传输系统

在信道中直接传输数字基带信号,称为数字基带传输系统,相应的系统称为数字基带传输系统

B、数字基带传输系统

基带信号比较适合在具有低通特性有线信道中传输,通常不适合在无线信道中直接传输。

信道的传输特性会引起波形失真,并会受噪声影响。

信道中的信号传输一定距离后,信号质量就会有所下降,甚至出现传输误码现象

C、几种信号码元

  • 单极不归零码

这种码型仅有1和0,不归零是指每个码周期,可以全部是高脉冲或者低脉冲。高脉冲和无脉冲,代表数据,极易产生,但是不适合长距离传输。

  • 双极不归零码

这种码型,有正脉冲,负脉冲,但是没有0。分别代表0或1。

  • 单极归零码

有正脉冲和0脉冲,分别代表0或者1。

码元不为零的时间占一个码元周期的百分比称为占空比。(虚线内是一个码元周期),在一个周期内,信号最后都必须归零

  • 双极归零码

有正脉冲和负脉冲,每次脉冲之后在一个周期内的最后一定也要归零。中间每次归零可以作为时钟同步信号

  • 差分码

差分码又称相对码

在两个周期变化时,如果发生电平跳变就表示1,没有就表示零(例子)

  • AMI码(信号交替反转码)

该码是为了满足实际信号传输用上面的基本码元对基带传输系统所带来的损害,例如单极不归零码有可能在很多个周期都是1,这样就容易造成高电平累积,破坏设备。

所以要使用该码元避免。

规定码中的0编码为AMI 传输码中的0(0电平)。信号码中的1交替编码为AMI的+1(正脉冲)和-1(负脉冲)。

代表1的+1和-1代表1,这样就能避免高电平堆积,还可以表示出多个1的数据传输情况。

  • 双相码(曼彻斯特码、差分曼彻斯特码)

曼彻斯特(Manchester)码

双向码只有正负两种电平,每个bit在传输的持续时间中间时刻要进行电平跳变。例如在一个bit传输周期内(两个虚线之间),在这个周期的中间时刻,信号从高电平到低电平这个bit就表示0。

因为双向码用了两个脉冲表示一个bit,所以传输效率较低,早期的10Mbps的以太网就是用的这个曼彻斯特码

差分曼彻斯特码

跟曼彻斯特码很像,差分双相码的每个比特周期的中间时刻也要进行电平跳变,但是这个跳变仅仅用于时钟同步

早期的令牌环网就采用的是此种码型。

利用每个bit周期的开始处是否存在跳变来表示编码信息:如开始处无跳变则表示0,有跳变则表示1。如下图:

  • ​​​​​​​nBmB

将n位二进制信息码作为一组,映射成m位的二进制新码组,其中m>n。

因为m>n,所以2^m个新码组中,只会用到2^n个,可以多出来(2^m-2^n)个码。

可以从2^m个码中优选出2^n个码作为有效码,其余码可以作为禁用码,可以用于检错

快速以太网,多采用这种编码(4B5B)

(五)频带信号基础

A、相关概念

基带信号具有低通特性,可以在具有低通信道中进行传输。

许多带通信道(如无线信道)不具有低通特性,因此不能在这些信道中直接传输基带信号。只能利用基带信号去调制对应的载波信号将基带信号所携带的信息传送出去。(说白了,就是无线方式是波的形式,数字电平信号无法传输,故要利用载波器,将基带信号转换为载波信号,这样信息就可以通过无线波的形式进行传递。)

利用模拟基带信号调制载波,称为模拟调制。利用数字基带信号调制载波,称为数字调制

数字调制就是利用数字基带信号控制(或影响)载波信号的某些特征参量。

下图展示了基带信号转换为载波信号在信道中传播的过程。

频带传输系统通常选用正弦波信号作为载波:

由a来控制波的形式,a可以为0或者1(数字信号的基本bit数据形式)

二进制数字调制分为三种方式:

  1. 二进制幅移键控(2ASK):通过数字信号,影响基本波频的幅度来承载不同信息。
  2. 二进制频移键控(2FSK):通过数字信号,影响基本波频的频率来承载不同信息。
  3. 二进制相移键控(2PSK):通过数字信号,影响基本波频的方向来承载不同信息。

B、二进制数字调试

  • 二进制幅移键控(2ASK)

利用二进制基带信号控制载波信号幅值变化:

s(t)代表基带信号,cos(2πft)代表原始载波信号。

下面一张图展示基带信号、载波信号、和幅值受影响变化后的再信道中传输的信号。

可见,原始载波信号在遇到基带信号中的0时,频带幅度就直接被压为0了。这样不同幅度就代表了不同的信号0或者1。

  • 二进制频移键控(2FSK)

利用二进制基带信号控制载波信号频率变化:

二进制基带信号为bn,载波信号还是cos(2πft),但是里面f(频率参数)会根据基带信号不同采用两种频率f1和f2。

下图展示,基带信号信息被载波信号携带的过程。

上图观察发现,当基带信号为1时,载波信号采用频率较的载波,当为0时载波信号采用频率的载波。通过不同频率来区分出了基带信号的二进制信息。

  • 二进制相移键控(2PSK)

利用二进制基带信号控制载波信号相位变化

这里增加了一个变量 ψ代表给原始波增加的幅度(控制波的升降转换,如果加上π,则方向会变),bn代表基带信号分为两种情况,当为0时无变化,为1时也无变化,一旦1到0(或者0到1)时,就会加上或者减去π,导致波本来的方向改变。这种就将通过波方向(频幅短暂变化)来改变相同波所承载的信息。下图展示相移键控载波信号承载信息的过程:

通过观察可以发现,基带信号在从0到1,或者从1到0的过程中都发生了方向变化,一旦发生方向变化,载波信号在解析过程中就可以改变其后相同波形所承载的信息(由0到1)。

  • 二进制差分相移键控(2DPSK)

与上面二进制相移键控不同的是,二进制差分相移键控,是根据每个基带周期bit的信息改变载波方向,如为1则改变方向,为0就不改变方向,不会因为1到0发生变化而改变方向。

下面展示载波信号承载基带信息的过程:

观察发现,当基带信号为1时,载波信号的方向就会发生改变,即使前两个基带周期中都为1,也同样使载波信号发生了方向改变,这样的逻辑就是,当方向改变那一刻才为1,与上面二进制相位键控不同。

C、总结二进制调制技术优劣

频带利用率来看:

        2ASK、2PSK、2DPSK,频带利用率相同。

        2FSK的频带利用率最低(当为0时,就不占用频带)

就误码率来看:

        在相同信噪比(信号和噪声强度之比)下,2PSK的误码率最低,而2ASK的误码率最高。因为外界噪声产生的干扰最容易改变载波的幅度,而很难改变载波方向。

        2PSK抗噪声性能优于2FSK,2FSK优于2ASK。

就对信道特性的敏感性(对信道性能改变的反应大小)来看:

        2ASK对信道特性变化比较敏感,性能最差。

        2FSK和2PSK对信道特性变化不敏感。

(六)多进制数字调制技术

为了提高效率,就有人考虑在确定带宽和频带利用率的情况下,提高数据传输速率的有效方法:

提高每个码元传输信息量,每个码元调制多个比特信息,所谓多进制数字调制技术

A、数据传输速率Rb与码元传输速率RB以及进制数M(通常为2)之间的关系

Rb = RB log2M。

Rb也称为比特率,单位为bps;码元传输速率RB为调制速率,或称为波特率单位为Baud。

多进制数字调制需要更大的信噪比,发送端需要更大的信号功率。

B、QAM(正交幅值调制)

有点数学知识不是太懂,简单笔记一下,待以后了解:

大概是这么一个公式:

因为一个码元表示很多数据,所以需要在一个平面进行映射:

想上面那样,空隙越大越不容易受到噪声干扰。

C、跳频技术

  • 发明者

不是科学家,而是美国好莱坞一位女演员海蒂-拉玛。

  • 原理

通过在不同载波之间来回跳,让相同的信息,表现为不定的载波形式,这样的发送方式只有合法方才能够识别,大大增强了无线信号的安全性。

同时该技术还为以后CDMA(码分多址技术)和wifi技术的出现奠定了基础,为此海蒂-拉玛也被称为wifi之母。

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

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

相关文章

【操作系统导论】内存篇——分页

引入 采用 「分段」 的方式&#xff0c;将空间切成 不同长度的分片&#xff0c;会出现 碎片化 问题&#xff0c;随着时间推移&#xff0c;分配内存会越来越困难。 因此&#xff0c;值得考虑「分页」的方法&#xff1a; 将空间分割成 固定长度的分片 &#xff1b; 将物理内存…

中医电子处方管理系统软件,中医配方模板一键生成软件操作教程

一、前言&#xff1a; 在中医开电子处方时&#xff0c;如果能够使用配方模板功能&#xff0c;则可以节省很多时间。使用配方模板一键导入&#xff0c;几秒即可完成开单。 下面就以佳易王电子处方管理系统软件V17.1版本为例说明&#xff0c;其他版本可以参考&#xff0c;软件下…

场景的组织及渲染(一)

在OSG 中存在两棵树&#xff0c;即场景树和渲染树。场景树是一棵由 Node组成的树,这些Node可能是矩阵变换、状态切换或真正的可绘制对象&#xff0c;它反映了场景的空间结构&#xff0c;也反映了对象的状态。本章重点介绍场景树&#xff0c;在第 5章将会对渲染树作详细的介绍。…

GoWin FPGA, GPIO--- startup2

一个Bank只能用一个电压&#xff0c;假如同一个Bank&#xff0c;在引脚里设置不同的电压&#xff0c;编译不过。 解释说明 2. 错误引脚限制 以上编译设置会导致编译错误。

Docker | 发布镜像到镜像仓库

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏:Docker系列 ✨特色专栏: MySQL学习 🥭本文内容:Docker | 发布镜像到镜像仓库 📚个人知识库: [Leo知识库]https://gaoziman.gitee.io/bl…

std::vector

这里主要介绍下reserce/resize、push_back/emplace_back、shrink_to_fit/clear等接口&#xff1b; 1. reserve and resize C的vector对象可以通过reserve方法来设置vector对象的容量&#xff0c;通过resize方法来改变vector对象的大小。reserve所设置的容量指的是vector容器中可…

0基础学习VR全景平台篇第127篇:什么是VR全景/720全景漫游?

“全景”作为一种表现宽阔视野的手法&#xff0c;在很久之前就得到了普遍的认同。北宋年间&#xff0c;由张择端绘制的《清明上河图》就是一幅著名的全景画。摄影术出现后&#xff0c;全景摄影也随之而生。 到今天&#xff0c;全景拍摄不再被专业摄影师所独享&#xff0c;广大…

云计算与AI融合:Amazon Connect开创客户服务智能时代

授权说明&#xff1a;本篇文章授权活动官方亚马逊云科技文章转发、改写权&#xff0c;包括不限于在 亚马逊云科技开发者社区, 知乎&#xff0c;自媒体平台&#xff0c;第三方开发者媒体等亚马逊云科技官方渠道 在亚马逊云科技 re:Invent 2023 大会上&#xff0c;Amazon Connect…

[AutoSar]状态管理(四)单核BswM(二)流程、配置、 代码

目录 关键词平台说明一、BswM的模式处理流程图二、stand state handling三、配置、代码、状态转移3.1 initial -> wakeup   3.2 WakeUp -> Run3.3 Run -> PostRun &#xff08;first step&#xff09;3.4 Run -> PostRun &#xff08;second step&#xff09;3.5…

Python安装报错: This environment is externally managed

error: externally-managed-environment This environment is externally managed ╰─> To install Python packages system-wide, try apt installpython3-xyz, where xyz is the package you are trying toinstall.这个错误信息表示当前Python环境是由系统外部管理的&…

基于Docker-Compose实现ELK+Kafka搭建分布式日志采集系统

ELKKafka搭建日志采集系统 ELK概述搭建与配置docker-compose.yml配置日志采集规则启动服务 模拟发送日志消息日志发送队列日志切面配置application.yaml发送日志消息 Kibana的使用创建索引模式Discovery搜索数据可视化数据 ELKRabbitMQ发送日志消息配置日志采集规则 ELK概述 E…

Java IO 流详解

Java IO 流详解 1 .Java IO概念 Java IO&#xff1a;即 Java 输入 / 输出系统。 Java 的 IO 模型设计非常优秀&#xff0c;它使用 Decorator (装饰者)模式&#xff0c;按功能划分 Stream &#xff0c;您可以动态装配 这些 Stream &#xff0c;以便获得您需要的功能。 Stream &…

20 Redis进阶 - 运维监控

1、理解Redis监控 Redis运维和监控的意义不言而喻&#xff0c;可以以下三个方面入手 1.首先是Redis自身提供了哪些状态信息&#xff0c;以及有哪些常见的命令可以获取Redis的监控信息; 2.一些常见的UI工具可以可视化的监控Redis; 3.理解Redis的监控体系;2、Redis自身状态及命…

【Java反射详解】

Java反射详解 &#x1f38a;专栏【Java】 &#x1f354;喜欢的诗句&#xff1a;关山难越&#xff0c;谁悲失路之人。 萍水相逢&#xff0c;尽是他乡之客。 &#x1f386;音乐分享【Counting Stars 】 欢迎并且感谢大家指出问题&#x1f970; 1.什么是反射 所谓的反射就是java…

365锦鲤助手 砍价小程序源码 流量主引流裂变

源码介绍 修改版365锦鲤 助手&#xff0c; 砍价小程序源码 流量主引流裂变 拼多多商品快速丰富产品内容满足广大用户需求&#xff1b;流量矩阵让流量都进你的圈子飞起来&#xff1b;长期盈利、项目稳定 1.后台安装微擎 2安装应用 后台打包上传

PPINN Parareal physics-informed neural network for time-dependent PDEs

论文阅读&#xff1a;PPINN Parareal physics-informed neural network for time-dependent PDEs PPINN Parareal physics-informed neural network for time-dependent PDEs简介方法PPINN加速分析 实验确定性常微分方程随机常微分方程Burgers 方程扩散反应方程 总结 PPINN Par…

Npm安装vue3报错(node:25436) MaxListenersExceededWarning:

运行命令安装vue3时 npm create vuelatest 报了错误(node:25436) MaxListenersExceededWarning: (忘记截报错的图了&#xff0c;后面还有一大串英文) 搞了很久发现是网络的原因&#xff0c;我没有修改镜像地址&#xff0c;导致访问很慢&#xff0c;于是去npmmirror 镜像站 …

字符雨canvas

整体思路&#xff1a; 确定好字符雨的具体字符是什么&#xff0c;需要多少行多少列这里是写死的其实也可以用循环加随机的方式生成不一样的字符雨&#xff0c;行列也可以读一下宽度然后做一下出发算一下也行首先得有一张画布搞起&#xff0c;然后循环列数去绘画字符定时器循环…

泰森多边形半平面求交 - 洛谷 - P3297 [SDOI2013] 逃考

欢迎关注更多精彩 关注我&#xff0c;学习常用算法与数据结构&#xff0c;一题多解&#xff0c;降维打击。 往期相关背景半平面求交 点击前往 voronoi 图求解点击前往 题目大意 题目链接 https://www.luogu.com.cn/problem/P3297 小杨家是一个矩阵&#xff0c;所有亲戚都在…

Monkey工具之fastbot-iOS实践

背景 目前移动端App上线后 crash 率比较高&#xff0c; 尤其在iOS端。我们需要一款Monkey工具测试App的稳定性&#xff0c;更早的发现crash问题并修复。 去年移动开发者大会上有参加 fastbot 的分享&#xff0c;所以很自然的就想到Fastbot工具。 Fastbot-iOS安装配置 准备工…