计算机网络 第四章 网络层

      最后更新:2022-01-20 13:02:26 手机定位技术交流文章

      目录

      一、网络层概述

      二、网络层提供的两种服务对比

      三、IPv4

      3.1、IPv4概述

      3.2、分类编制的IPv4地址

      3.2.1、A类地址

      3.2.2、B类地址

      3.2.3、C类地址

      3.2.4、总结

      3.2.4、练习(趁热打铁)

      3.3、划分子网的IPv4地址

      3.3.1、划分子网方法

      3.3.2、举三个例子

      3.3.3、默认的子网掩码

      3.4、无分类编址的IPv4地址

      3.4.1、CIDR地址块

      3.4.2、举三个例子

      3.4.3、路由聚合(构造超网)

      ​3.5、IPv4地址的应用规划

      ​3.5.1、定长子网掩码划分

      3.5.2、变长子网掩码划分

      四、IP数据报的发送和转发流程

      五、静态路由器配置及其可能产生的路由环路问题

      六、路由协议

      1、路由选择协议概述

      2、路由信息协议RIP的基本工作原理

      2.1、RIP的基本原理

      2.2、RIP的基本工作过程

      2.3、RIP的路由表条目的更新规则

      ​​2.3、坏消息传得慢

      3、开放最短路径优先OSPF的基本工作原理

      3.1、OSPF的基本原理

      3.2、链路状态通告LSA及链路状态数据库LSDB

      3.3、OSPF五种分组类型

      3.4、路由器DR与备用的指定路由器BDR

      4、边界网关协议BGP的基本工作原理

      七、IPv4数据报的首部格式

      八、网际控制报文协议ICMP

      8.1、CMP差错报告报文

      8.2、常用的ICMP询问报文

      8.3、ICMP两种应用 - PING命令与tracert命令

      九、虚拟专用网VPN和网络地址转NAT

      1、虚拟专用网VPN

      2、网络地址转NAT

      一、网络层概述

      网络层的主要任务是实现网络互连,进而实现数据包在各网络之间的传输。要实现网络层任务,需要解决以下主要问题:

      a、网络层向运输层提供怎样的服务(“可靠传输”还是“不可靠传输”)

      b、网络层寻址问题

      c、路由选择问题

      因特网(Internet) 是目前全世界用户数量最多的互联网,它使用TCP/IP协议栈。由于TCP/IP协议栈的网络层使用网际协议IP,它是整个协议栈的核心协议,因此在TCP/IP协议栈中网络层常称为网际层。综上所述,我们通过学习TCP/IP协议栈的网际层来学习网络层的理论知识和实践技术。

      二、网络层提供的两种服务对比

      由于TCP/IP体系结构的因特网的网际层提供的是简单灵活。无连接的,尽最大努力交付的数据报服务,因此本章主要围绕网际层如何传送IP数据报这个主题进行讨论。

      三、IPv4

      3.1、IPv4概述

      IPv4地址就是给因特网(Internet)上的每一台主机(或路由器)的每一个接口分配一个在全世界范围内是唯一的32比特的标识符。IP地址由因特网名字和数字分配机构ICANN进行分配。我国用户可向亚太网络信息中心APNIC申请IP地址,需要缴费。2011年2月3日,互联网号码分配管理局IANA(由ICANN行使职能)宣布,IPv4地址已经分配完毕。我国在2014至2015年也逐步停止了向新用户和应用分配IPv4地址。同时全面开展商用部署IPv6。

      IPv4地址的编制方法经历了如下三个历史阶段:分类编制(1981)-->划分子网(1985) -->无分类编制(1993)。

      32比特的IPv4地址不方便阅读、记录以及输入等,因此IPv4地址采用点分十进制表示方法以方便用户使用。如下例子:

      3.2、分类编制的IPv4地址

      请注意以下三点:

      a、只有A类,B类和C类地址可分配给网络中的主机或路由器的各接口。

      b、主机号为“全0”的地址是网络地址,不能分配给主机或路由器的各接口。

      c、主机号为“全1"的地址是广播地址,不能分配给主机或路由器的各接口。

      3.2.1、A类地址

      可指派的网络数量为bg_white fn_jvn 2^{(8 - 1)} - 2 = 126(减2的原因是除去最小网络号0和最大网络号127)。

      每个网络中可分配的IP地址数量为2^{24} - 2 = 16777214(减2的原因是除去主机号为全0的网络地址和全1的广播地址)。

      3.2.2、B类地址

      可指派的网络数量为bg_white fn_jvn 2^{(16 - 2)} = 16384

      每个网络中可分配的IP地址数量为bg_white fn_jvn 2^{16} - 2 = 65534(减2的原因是除去主机号为全0的网络地址和全1的广播地址)。

      注意:有些教材中指出128.0是保留网络号,B类第一个可指派的网络号为128.1。

      但根据2002年9月发表的RFC 3330文档, 128.0网络号已经可以分配了。有兴趣的同学可以自行查询以128.0开头的IP地址,看看它们属于哪些国家。

      3.2.3、C类地址

      可指派的网络数量为2^{(24 - 3)} = 2097152

      每个网络中可分配的IP地址数量为2^{8} - 2 = 254(减2的原因是除去主机号为全0的网络地址和全1的广播地址)。

      注意:有些教材中指出192.0.0是保留网络号,C类第一个可指派的网络号为192.0.1。

      但根据2002年9月发表的RFC 3330文档, 192.0.0网络号已经可以分配了,只不过目前还没有分配出去。

      3.2.4、总结

      (1)、根据地址左起第一个十进制数的值,可以判断出网络类别(小于127的为A类,128~ 191的为B类,192~223的为C类) ;

      (2)、根据网络类别,就可找出地址中的网络号部分和主机号部分(A类地址网络号为左起第一个字节,B类地址网络号为左起前两个字节,C类地址网络号为左起前三个字节) ;

      (3)、以下三种情况的地址不能指派给主机或路由器接口:A类网络号0和127、主机号为“全0”,这是网络地址、主机号为“全1”,这是广播地址。

      3.2.4、练习(趁热打铁)

      下面做一个小测试:

      下列IP地址中,只能作为IP分组的源IP地址但不能作为目的IP地址的是 (A)

      A、0.0.0.0        B、127.0.0.1        C、20.10.10.3        D、255.255.255.255

      解析:地址0.0.0.0是一个特殊的IPv4地址,只能作为源地址使用,表示“在本网络上的本主机”。封装有DHCP Discovery报文的IP分组的源地址使用0.0.0.0。以127开头且后面三个字节非“全0”或“全1”的IP地址是一类特殊的IPv4地址, 既可以作为源地址使用,也可以作为目的地址使用,用于本地软件环回测试,例如常用的环回测试地址127.0.0.1。地址255.255.255.255是一个特殊的IPv4地址,只能作为目的地址使用,表示只在本网络上进行广播(各路由器均不转发)。

      下面再做一个练习:请根据本节课所学内容给出”下图各网络的IPv4地址分配方案。请按照节约IP地址的原则进行分配。

      (图中,中间为两个路由器,右边是三个交换机和40台主机组成的一个网络)

      解题步骤:

      1、找出图中有哪些网络;

      (如上图,两台路由器通过一段链路直连,它们的直连接口也属于一个网络,则一共四个网络)
      2、根据各网络中主机和路由器接口总数量来决定给各网络分配哪个类别的网络号;

      本着节约资源,能使用C(B)类网络号就不使用B(A)类网络号的原则。对于 黄色的网络 ,主机数量加上连接它们的路由器接口共65535,大于了一个B类网络号能提供的IP数量(65534),则只能分配一个A类网络号。对于 蓝色网络 ,主机数量加上连接它们的路由器接口共255,大于了一个C类网络号能提供的IP数量,则可分配A、B网络号,本着节约资源,则分配一个B类网络号。对于 绿色网络 ,同理推断,分配A、B、C类网络皆可,本着节约IP地址,就给其分配C类网络号。同理,粉 红色网络 分配C类网络号
      3、依据所确定的网路号类别,为每个网络挑选一个网络号。

      对于A类网络,从1~126中选择一个;对于B类网络,从128.0~191.255中选择一个;对于C类网络,从192.0.0~223.255.255中选择一个。注意粉红色网络和绿色网络的网络都是C类网络,别选同一个网络号。

      4、给主机和路由器的各接口分配IP地址

      需要注意,分配的I地址应该互不相同,且主机号部分不能出现全0(这是网络地址),也不能出现全1(这是广播地址)。

      3.3、划分子网的IPv4地址

      3.3.1、划分子网方法

      为新增网络申请新的网络号会带来以下弊端:需要等待时间和花费更多的费用、会增加其他路由器中路由表记录的数量、浪费原有网络中剩余的大量IP地址。

      那么解决办法就是从主机号部分借用一部分作为子网号

      32比特的子网掩码可以表明分类IP地址的主机号部分被借用了几个比特作为子网号。子网掩码使用连续的比特1来对应网络号和子网号,子网掩码使用连续的比特0来对应主机号,将划分子网的IPv4地址与其相应的子网掩码进行逻辑与运算就可得到IPv4地址所在子网的网络地址。

      3.3.2、举三个例子

      举第一个例子1:已知某个网络的地址为218.75.230.0,使用子网掩码255.255.255.128对其进行子网划分,请给出划分细节。

      划分出的子网数量为2^{1} = 1

      每个子网可分配地址数量为bg_white fn_jvn 2^{(8-1)} - 2 = 126。(减2是要去掉主机号为“全0"的网络地址和“全1”的广播地址)。

      举第二个例子2:已知某个网络的地址为218.75.230.0,使用子网掩码255.255.255.192对其进行子网划分,请给出划分细节。

      举第三个例子3:

      3.3.3、默认的子网掩码

      默认的子网掩码是指在未划分子网的情况下使用的子网掩码。

      3.4、无分类编址的IPv4地址

      3.4.1、CIDR地址块

      划分子网在一定程度上缓解了因特网在发展中遇到的困难,但是数量巨大的C类网因为其地址空间太小并没有得到充分使用,而因特网的IP地址仍在加速消耗,整个IPv4地址空间面临全部耗尽的威胁。为此,因特网工程任务组IETF又提出了采用无分类编址的方法来解决IP地址紧张的问题,同时还专门成立IPv6工作组负责研究新版本IP以彻底解决IP地址耗尽问题。1993年,IETF发布了无分类域间路由选择CIDR的RFC文档: RFC 1517~1519和1520。

      CIDR消除了传统的A类、B类和C类地址,以及划分子网的概念。它更加有效地分配IPv4的地址空间,并且可以在新的IPv6使用之前允许因特网的规模继续增长。CIDR使用“斜线记法”,或称CIDR记法。即在IPv4地址后面加上斜线“/” ,在斜线后面写上网络前缀所占的比特数量。比如:

      CIDR实际,上是将网络前级都相同的连续的IP地址组成一个“CIDR地址块”。我们只要知道CIDR地址块中任何一个地址,就可以知道该地址块全部细节:地址块的最小地址、地址块的最大地址、地址块中的地址数量、地址块聚合某类网络(A类、B类或C类) 的数量地址掩码(也可继续称为子网掩码)。

      3.4.2、举三个例子

      例题1:请给出CIDR地址块128.14.35.7/20的全部细节(最小地址,最大地址,地址数量,聚合C类网数量,地址掩码)。

      地址数量为:2^{(32 - 20)}

      聚合C类网的数量为:frac{2^{(32 - 20)}}{2^{8}}

      地址掩码为:255.255.240.0

      例题2:请给出CIDR地址块206.0.64.8/18的全部细节(最小地址,最大地址,地址数量,聚合C类网数量,地址掩码)。

      地址数量为:2^{(32 - 18)}

      聚合C类网的数量为:frac{2^{(32 - 18)}}{2^{8}}

      地址掩码为:255.255.192.0

      例题3:在子网192.168.4.0/30中, 能接收目的地址为192.1 68.4.3的IP分组的最大主机数是2。

      3.4.3、路由聚合(构造超网)

      若直接将这些信息转发给R2,则R2要存储5条记录,而路由聚合则采用共同前缀。

      聚合地址块为172.1.4.0/22。

      网络前缀越长,地址块越小,路由越具体。若路由器查表转发分组时发现有多条路由可选,则选择网络前缀最长的那条,这称为最长前缀匹配,因为这样的路由更具体。

      例题:某路由表中有转发接口相同的4条路由表项,其目的网络地址分别为35.230.32.0/21、35.230.40.0/21、35.230.48.0/21和35.230.56.0/21, 将该4条路由聚合后的目的网络地址为 35.230.32.0/19 。解析如下:

      3.5、IPv4地址的应用规划

      子网掩码的划分分为定长的划分和变长的划分。两者的对比如下。

      3.5.1、定长子网掩码划分

      假设申请到的C类网络为218.75.230.0,请使用定长的子网掩码给下图所示的小型互联网中的各设备分配IP地址。

      应用需求:将C类网络218.75.230.0划分成5个子网,每个子网上可分配的IP地址数量不得少于各自的需求。

      我们从主机号借用3个比特作为子网号子网数量:2^{3} > 5

      则每个子网上的地址数量为:2^{(8 - 3)} = 32(大于每个子网络最大的需求)。

      则子网掩码为255.255.255.224(24个连续的比特1对应网络号,3个连续的比特1表示从主机号借用3个比特作为子网号)。

      我们只需要选择5个子网分给网络N1~N5,即可。但是,网络N5只需要4个地址,但我们却只能划分出32个给他,即便是空闲下来的,其他网络也不能使用,就造成了IP地址资源的浪费。

      3.5.2、变长子网掩码划分

      假设申请到的地址块为218.75.230.0/24, 请使用变长的子网掩码给下图所示的小型互联网中的各设备分配IP地址。如果我们采用变长的方式划分,则如下:

      在该地址块中给上图所示的网络N1~N5分配子块,分配原则是“每个子块的起点位置不能随意选取,只能选取块大小整数倍的地址作为起点”。建议先给大的子块分配。分配如下:

      四、IP数据报的发送和转发流程

      (为了将重点放在TCP/IP协议栈的网际层发送和转发IP数据报的过程上,在后面的举例中,忽略使用ARP协议来获取目的主机或路由器接口的MAC地址的过程以及以太网交换机自学习和转发帧的过程。)

      第一种形式,主机直接发送IP数据报

      首先,判断目的主机是否与自己在同一个网络(主机自己的IP地址与自己的掩码相与得到自己所在网络,要发送的目的IP地址与自己的掩码相与得到目的IP地址所在的网络,如果一样,则主机与目的IP地址属于同一个网络,否则不在同一个网络中) 。若在同一个网络,则属于直接交付。 若不在同一个网络,则属于间接交付,传输给主机所在网络的默认网关(连接该网络的路由器的某个接口),有默认网关帮忙转发。

      第二种交由路由器帮忙转发

      路由器转发IP数据报。每个网络有一个路由器接口,其接口地址指定给该接口所直连网络中的各个主机作为默认网关。要转发数据时,传给默认网关,然后由默认网关转发出去。检查IP数据报首部是否出错:若出错,则直接丢弃该IP数据报闭并通告源主机;若没有出错,则进行转发;根据IP数据报的目的地址在路由表中查找匹配的条目(后续章节中会详细介绍路由表的建立);若找到匹配的条目,则转发给条目中指示的下一跳;若找不到,则丢弃该IP数据报并通告源主机。

      下面看一个例题:下列网络设备中,能够抑制广播风暴的是D

      A、中继器        B、集线器        C、网桥        D、路由器

      解析:中继器和集线器工作在物理层,既不隔离冲突域也不隔离广播域。网桥和交换机(多端口网桥)工作在数据链路层,可以隔离冲突域,不能隔离广播域。路由器工作在网络层,既隔离冲突域,也隔离广播域。

      五、静态路由器配置及其可能产生的路由环路问题

      静态路由配置是指用户或网络管理员使用路由器的相关命令给路由器人工配置路由表。这种人工配置方式简单、开销小。但不能及时适应网络状态(流量、拓扑等)的变化。一般只在小规模网络中采用。

      使用静态路由配置可能出现以下导致产生路由环路的错误:配置错误、聚合了不存在的网络、网络故障。

      为了防止IP数据报在路由环路中永久兜圈,在IP数据报首部设有生存时间TTL字段。IP数据报进入路由器后,TTL字段的值减1。若TTL的值不等于0,则被路由器转发,否则被丢弃。

      路由条目的类型:直连网络、静态路由(人工配置)、动态路由(路由选择协议)。

      特殊的静态路由条目:默认路由(目的网络为0.0.0.0, 地址掩码为0.0.0.0)、特定主机路由(目的网络为特定主机的IP地址,地址掩码为255.255.255.255)、黑洞路由(下一跳为null0)。

      六、路由协议

      1、路由选择协议概述

      因特网所采用的路由选择协议的主要特点:自适应(动态路由选择,能较好地适应网络状态的变化)、分布式(路由器之间交换路由信息)、分层次(将整个因特网划分为许多较小的自治系统AS)。

      常见路由选择协议:

      路由器结构分为:路由选择部分、分组转发部分、输入与输出端口三部分。

      路由表一般仅包含从目的网络到下一跳的映射,需要对网络拓扑变化的计算最优化。

      转发表是从路由表得出的,转发表的结构应当使查找过程最优化。

      输入缓冲区(暂存新进入路由器但还来不及处理的分组)、输出缓冲区(暂存处理完毕但还来不及转发的分组)。

      2、路由信息协议RIP的基本工作原理

      2.1、RIP的基本原理

      路由信息协议RIP是内部网关协议IGP中最先得到广泛使用的协议之一,其相关标准文档为RFC 1058。RIP要求自治系统AS内的每一个路由器都要维护从它自己到AS内其他每一个网络的距离记录。这是一组距离,称为“距离向量D-V”。RIP使用跳数作为度量来衡量到达目的网络的距离。路由器到直连网络的距离定义为1。路由器到非直连网络的距离定义为所经过的路由器数加1。允许一条路径最多只能包含15个路由器。距离等于16时相当于不可达。因此,RIP只适用于小型互联网

      RIP认为好的路由就是“距离短”的路由,也就是所通过路由器数量最少的路由。当到达同一目的网络有多条“距离相等”的路由时,可以进行等价负载均衡(平均分摊分组到每条路径)。RIP包含以下三个要点:和谁交换信息- 仅和相邻路由器交换信息、交换什么信息- 自己的路由表、何时交换信息- 周期性交换(例如每30秒)。

      2.2、RIP的基本工作过程

      路由器刚开始工作时,只知道自己到直连网络的距离为1。每个路由器仅和相邻路由器周期性地交换井更新路由信息。若干次交换和更新后,每个路由器都知道到达本AS内各网络的最短距离和下一跳地址,称为收敛。

      2.3、RIP的路由表条目的更新规则

      1、到达目的网络,相同下一跳,最新消息,更新;

      2、发现了新的网络,添加;

      3、到达目的网络,不同下一跳,新路由优势,更新;

      4、到达目的网络,不同下一跳,等价负载均衡;

      5、到达目的网络,不同下一跳,新路由劣势,不更新。

      举一个例子:请给出路由器B更新后的路由表。

      2.3、坏消息传得慢

      RIP存在“坏消息传播得慢”的问题,“坏消息传播得慢”又称为路由环路或距离无穷计数问题,这是距离向量算法的一个固有问题。可以采取多种措施减少出现该问题的概率或减小该问题带来的危害。限制最大路径距离为15(16表示不可达);当路由表发生变化时就立即发送更新报文(即“触发更新”),而不仅是周期性发送;让路由器记录收到某特定路由信息的接口,而不让同一路由信息再通过此接口向反方向传送(即“水平分割”)。

      3、开放最短路径优先OSPF的基本工作原理

      3.1、OSPF的基本原理

      开放最短路径优先OSPF,是为克服RIP的缺点在1989年开发出来的。“开放”表明OSPF协议不是受某一家厂商控制,而是公开发表的。“最短路径优先”是因为使用了Dijkstra提出的最短路径算法SPF。OSPF是基于链路状态的,而不像RIP那样是基于距离向量的。采用SPF算法计算路由,从算法上保证了不会产生路由环路不限制网络规模,更新效率高,收敛速度快。链路状态是指本路由器都和哪些路由器相邻,以及相应链路的“代价”,"代价” 用来表示费用、距离、时延、带宽等。这些都由网络管理人员来决定。

      举例:思科路由器中OSPF计算代价的方法:100Mbps / 链路带宽。计算结果小于1的值仍记为1;大于1且有小数的,舍去小数。如下图:

      OSPF相邻路由器之间通过交互问候(Hello)分组,建立和维护邻居关系。Hello分组封装在IP数据报中,发往组播地址224.0.0.5,发送周期为10秒,40秒未收到来自邻居路由器的Hello分组,则认为该邻居路由器不可达。如下图:

      3.2、链路状态通告LSA及链路状态数据库LSDB

      使用OSPF的每个路由器都会产生链路状态通告LSA。LSA中包含以下内容:直连网络的链路状态信息、邻居路由器的链路状态信息。LSA被封装在链路状态更新分组LSU中,采用洪泛法发送。使用OSPF的每个路由器都有一个链路状态数据库LSDB, 用于存储LSA。通过各路由器洪泛发送封装有自己LSA的LSU分组,各路由器的LSDB最终将达到一致。

      使用OSPF的各路由器基于LSDB进行最短路径优先SPF计算,构建出各自到达其他各路由器的最短路径,即构建各自的路由表。

      3.3、OSPF五种分组类型

      OSPF有以下五种分组类型:

      类型1,问候(Hello))分组,用来发现和维护邻居路由器的可达性。

      类型2,数据库描述(Database Description)分组,向邻居路由器给出自己的链路状态数据库中的所有链路状态项目的摘要信息。

      类型3,链路状态请求(Link State Request)分组,向邻居路由器请求发送某些链路状态项目的详细信息。

      类型4,链路状态更新(Link State Update)分组,路由器使用这种分组将其链路状态进行洪泛发送,即用洪泛法对全网更新链路状态。

      类型5,链路状态确认(Link State Acknowledgment)分组,这是对链路状态更新分组的确认分组。

      3.4、路由器DR与备用的指定路由器BDR

      OSPF在多点接入网络中路由器邻居关系的建立。选举指定路由器DR和备用的指定路由器BDR;所有的非DR/BDR只与DR/BDR建立邻居关系;非DR/BDR之间通过DR/BDR交换信息。为了使OSPF能够用于规模很大的网络, OSPF把一个自治系统再划分为若干个更小的范围,叫做区域。划分区域的好处就是把利用洪泛法交换链路状体信息的范围局限于每一个区域而不是整个自治系统,这就减少了整个网络上的通信量。如下图:

      4、边界网关协议BGP的基本工作原理

      在不同自治系统内,度量路由的“代价”(距离,带宽,费用等)可能不同。因此,对于自治系统之间的路由选择,使用“代价”作为度量来寻找最佳路由是不行的。自治系统之间的路由选择必须考虑相关策略(政治,经济,安全等)。BGP只能是力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而并非要寻找一条最佳路由。

      在配置BGP时,每个自治系统的管理员要选择至少一个路由器作为该自治系统的“BGP发言人”。不同自治系统的BGP发言人要交换路由信息,必须首先建立TCP连接端口号为179。在此TCP连接上交换BGP报文以建立BGP会话;利用BGP会话交换路由信息(例如,增加新的路由,或撤销过时的路由,以及报告出错的情况等);使用TCP连接交换路由信息的两个BGP发言人,彼此称为对方的邻站或对等站。BGP发言人除了运行BGP外,还必须运行自己所在自治系统所使用的内部网关协议IGP,例如OSPF或RIP。发言人交换网络可达性的信息(要到达某个网络所要经过的一系列自治系统),当BGP发言人互相交换了网络可达性的信息后,各BGP发言人就根据所采用的策略从收到的路由信,息中找出到达各自治系统的较好的路由。也就是构造出树形结构、不存在回路的自治系统连通图。

      BGP适用于多级结构的因特网(如下图)

      BGP-4有以下四种报文:

      OPEN(打开)报文:用来与相邻的另一个BGP发言人建立关系,使通信初始化。

      UPDATE(更新)报文:用来通告某一路由的信息, 以及列出要撤销的多条路由。

      KEEPALIVE(保活)报文:用来周期性地证实邻站的连通性。

      NOTIFICATION(通知)报文:用来发送检测到的差错。

      例题1:R1与R2之间利用哪个路由协议交换路由信息?该路由协议的报文被封装到哪个协议的分组中进行传输?

      解析:R1和R2分别位于两个不同的自治系统AS1和AS2中;自治系统之间需要使用外部网关协议EGP这一类协议,具体为边界网关协议BGP,目前使用最多的版本是BGP-4;BGP-4报文被封装在TCP报文段中进行传输。
      例题2:直接封装RIP、OSPF、BGP报文的协议分别是:UDP、IP、 TCP

      在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/16923.html

          热门文章

          文章分类