TCP/IP网络协议---相关设备

网络协议-架包 专栏收录该内容
17 篇文章 0 订阅

基本概念

1.为什么要分链路层,网络层,运输层,应用层这四层

主要依据是各层的功能,链路层主要负责处理物理接口的细节,网络层处理分组在网络中的活动(IP到IP,尽可能快但不可靠),运输层主要提供应用程序端到端的服务(端口到端口,并且可靠),应用层处理特定的应用程序细节。

链路协议主要有ARP和RARP,网络层协议主要有ICMP,IGMP和IP协议,运输层协议主要有TCP和UDP。其中有四个协议分层时候有写争议,ARP和RARP协议与IP协议一样,有各自的以太网帧数据类型,但是却在链路层,主要考虑还是从逻辑功能上来划分;ICMP和IGMP的报文同TCP和UDP的一样都被封装在IP数据报的里面,按道理应该是IP的上层,但是被分在IP层,主要还是因为它们是IP协议的附属协议。

2.路由和网桥组网区别

路由是在网络层上对网络进行互联,局域网A(以太网)中的一个IP数据包,封装成帧后发送到相连的路由器,路由器在把帧转成IP数据包发送除去,到达局域网B(令牌环)的路由后在通过令牌环协议形成帧,发送到主机,主机通过分用接收到IP数据包。而网桥则是直接在链路层连接两个局域网。

3.网关

网关应该是一个网络设备。但这个网络设备还有两个含义,一是工作在IP层的路由,网关IP即是具有路由功能的设备的IP地址,只有设置好网关的IP地址,TCP/IP协议才能实现不同网络之间的相互通信。

还有一个网关是应用层网关,用来连接两个不同的协议族(例如TCP/IP和IBM的SNA),网关还有其他的功能,具体看一个典型的网关参数“支持协议: TCP/IP协议,ICMP协议,RIPv2协议,静态路由协议,动态路由协议,PAP协议,CHAP协议,NAT协议,PPPoE协议,250K个并发会话数,新建会话数7K/秒,防火墙性能120Mbps,40G硬盘,100条VPN隧道数,3DES加密性能30Mbps,病毒邮件扫描25000封/小时,垃圾邮件15000封/小时,HTTP稍描1MB/S; 内置防火墙。”

4.以太网封装格式

以太网是几个公司联合公布的一个标准,采用CSMA/CD的媒体接入方法,带冲突检测的载波侦听多路接入,速率为10Mb/s,地址为48bit。以太网封装的帧前面是6字节的目的地址(48bit),跟着6字节的源地址,然后是2字节的帧类型(arp,rarp,ip),然后是数据,最后是4字节的CRC。对数据帧的长度有一个限制,(46~1500最大值为MTU)(那么以太网的帧的大小同样有个限制最大为1500+6+6+2+4),对长度限制的原因是为了提供快的响应时间(idea)。

5.环回接口(loopback Interface)

大多数系统把127.0.0.1(环路地址)分配给这个接口,并且命名为localhost,环回接口可以被看作是网络层下面的另一个链路层,网络层把一份数据报发送给环回接口,就像传给其他的链路层一样,只不过环回接口把它返回到IP的输入队列(这样处理的效率貌似不高,但是这样可以大大的简化设计idea)。

ping 127.0.0.1 本地环路地址,不同的话则TCP/IP不能正常工作,ping 本机IP,不同的话网卡不正常工作(网卡不正常一般不能获得IP),ping通网的IP,不同的话则网络线路出现故障。

6.路径的MTU

两个主机通信的时候可能要通过多个网络,每个网络的链路层可能有不同的MTU,两台主机通信主机路径的最小MTU称为路径的MTU,两个主机之间的MTU不一定是个常数(路由选择是变化的),而且选的路径不一定是对称的(A到B的MTU和B到A的MTU可能不等,因为路由选择不同)。

7.私网IP地址:

10.0.0.0- 10.255.255.255;

172.16.0.0-   172.31.255.255;

192.168.0.0-192.168.255.255。

公网、内网是两种Internet的接入方式。
内网接入方式:上网的计算机得到的IP地址是Inetnet上的保留地址,保留地址有如下3种形式:
10.x.x.x
172.16.x.x至172.31.x.x
192.168.x.x
以下列出留用的内部私有地址
A类 10.0.0.0--10.255.255.255
B类 172.16.0.0--172.31.255.255
C类 192.168.0.0--192.168.255.255
1,10.0.0.0-10.255.255.255
127开头的(lookback地址)--回环地址
169.254开头的(WINDOWS保留地址)
172.16.0.0-172.31.255.255
192.168.0.0-192.168.255.255
2,私网IP地址是不可能直接用来跟WAN通信的,要么利用帧来进行通信(例如FR帧中继,HDLC,PPP)要么需要路由的NAT功能把私网地址转换成一个公网IP地址

8.ABCDE类地址
A类地址:0.0.0.0 127.255.255.255
B类地址:128.0.0.0  191.255.255.255
C类地址:192.0.0.0  223.255.255.255
D类地址:224.0.0.0  239.255.255.255( D类地址就是组播地址)
E类地址:240.0.0.0  247.255.255.255

二Http   IP    TCP    UDP协议

在这里只是简单说明下IP、TCP、UDP数据报报头和各个字段的简单意义,像IP选路、TCP链接的建立和终止等复杂的问题,以后在做总结。首先是大概介绍下各个协议,然后分别的说明协议报头。


0 .HTTP 是一个属于应用层的面向对象的协议,是一个基于请求与响应模式的、无状态的、不连接的应用层的协议,常基于TCP 的连接方 式。

1.IP提供一种不可靠、无连接的数据报传送服务。

不可靠:不能保证IP数据报能够成功的到达目的地,如果发生某种错误,如路由器暂时用完了缓冲区,IP有一个简单的错误处理算法:丢弃数据报,然后发送ICMP消息报告给信源端。任何要求的可靠性必须由上层来提供。
无连接IP并不维护任何关于后续数据报的状态信息(下一个数据报的目的IP,下一个的大小等),每个数据报处理都是独立的。所以IP数据报可以不按照发送顺序接收。

2.UDP

UDP是一个简单的面向数据报的运输层协议:(不连接、非可靠的)。进程的每个输出操作都正好产生一个UDP数据报,并组装成一份待发送的IP数据报。这与面向流字符的协议不同,如TCP,应用程序产生的全体数据与真正发送的单个IP数据报可能没有什么联系。

3.TCP

TCP提供一种面向连接的、可靠的字节流服务。
面向连接意味着两个使用TCP的应用(通常是一个客户和一个服务器)在彼此交换数据之前必须先建立一个TCP连接。在一个TCP中,仅有两方进行彼此通信,广播和多播不能用于TCP
TCP将用户数据打包构成报文段;它发送数据后启动一个定时器;另一端对收到的数据进行确认,对失序的数据重新排序,丢弃重复数据;TCP提供端到端的流量控制,并计算和验证一个强制性的端到端的检验和。

二、IP首部

IP的首部如下图所示,如果没有选项字段,普通的IP首部有20个字节。

下面是用wireshark软件分析的一个IP数据报的截图,对应的显示了个个部分。


版本号有四位,现在有4和6两个版本。
首部长度用一个四比特的字段来表示,最长为60个字节(四个字节对齐,所以最大不是63)。
8位的服务(TOS)字段包括一个3bit优先权字段(现在已经被忽略),4bit的TOS字段,和1bit未用位但是必须置为0。4bit的TOS分别代表最小延时,最大吞吐量,最高可靠性和最小费用。大多数的TCP/IP都不支持TOS特性了。
16位总长度是整个IP数据报的长度,以字节为单位,利用首部长度字段和总长度字段就可以知道IP数据报的数据内容的起始位置和长度。16位最大为65535,当IP数据报分片时,这个字段要改变的。
下面的16位为标识字段,标识字段唯一标识发送的每一份数据报,通常每发送一份报文,它的值就会加1,它在分片重组的时候会用到。3位的标识字段和13为的偏移字段也是与分片有关,以后会在讨论。
TTL设置了数据报可以经过的最多路由器数目,初始值由主机设置,每经过一个路由器处理,它的值就会减1,当该字段为0时会被丢弃,并发送ICMP报文通知源主机。
16位的首部检验字段是根据IP的首部计算校验和码,它不对首部后面的数据进行计算。
剩下的八个字节分别是四个字节的源IP地址和目的地址。
任选项是一个数据报中一个可变长的可选信息,有几个例如记录路径:让每个路由器记下它的IP地址,时间戳:记下IP地址的时间。和一些其它的定义。

三、UDP首部

下面是UDP的首部,比较简单。

其中UDP的校验和覆盖UDP首部和UDP数据,UDP和TCP都有覆盖首部和数据的校验和,但是UDP的校验和是可选的,而TCP的校验和是必须的。可能上面的两点都是为了加快UDP的传输速度。如果发送端没有计算校验和而接收端检测到校验和有差错,那么UDP数据报就要被悄悄地丢弃,不产生任何差错报文,尽管UDP校验和是可选的,但是一般都是使用的。

四、TCP首部

下面是TCP首部和wireshark的TCP包分析结果

 

其中32位的序号用来标识从TCP发端向TCP收端发送的数据字节流,它表示在这个报文段中的第一个数据字节。如果将字节流看作在两个应用程序间的单向流动,则TCP用序号来对每个字节进行计算,序号是32位的无符号数,到达2的32次方减一后从0开始。
既然每个字节都被计数,那么确认序号包含发送确认的一端所期望收到的下一个序号,因此确认序号应该是上次已经成功收到数据字节序号加1,只有ACK字段为1时候,确认序号字段才有效。TCP为应用提供全双工的服务,这意味着数据能在两个方向上独立的传输,因此链接的每一端都必须保持每个方向上的传输数据序号。
TCP的六个标识字段分别为:
URG 紧急指针有效(urgent pointer)
ACK 确认序号有效
PSH 接收方应尽快将报文段交给应用层
RST 重建链接
SYN 同步序号用来发起一个连接。
FIN 发端完成发送任务
16位的校验和覆盖了整个TCP报文段:TCP首部和TCP数据,这是一个强制性的字段,一定由发端计算和存储,并由收端进行验证。

 

四、以太网帧格式

6个字节的目的地址,6个字节的源地址,2个字节的类型,然后就是(46~1500)字节的数据,最后有4个字节的CRC循环校验码。其中类型有三种IP数据报,ARP的请求/应答,RARP的请求/应答。

三 TCP和UDP区别(UDP无需建立连接,直接收发数据)


 
 
TCP
UDP
是否连接
面向连接
面向非连接
传输可靠性
可靠的
不可靠的
应用场合
传输大量的数据
少量数据
速度
 
 OSI 和 TCP/IP 模型在传输层定义两种传输协议:TCP(或传输控制协议)和 UDP(或用户数据报协议)。
UDP 
    UDP 与 TCP 的主要区别在于 UDP 不一定提供可靠的数据传输。 事实上,该协议不能保证数据准确无误地到达目的地。UDP 在许多方面非常有效。当某个程序的目标是尽快地传输尽可能多的信息时(其中任意给定数据的重要性相对较低),可使用 UDP。ICQ 短消息使用 UDP 协议发送消息。 
    许多程序将使用单独的TCP连接和单独的UDP连接。重要的状态信息随可靠的TCP连接发送,而主数据流通过UDP发送。
TCP
    T
CP的目的是提供可靠的数据传输,并在相互进行通信的设备或服务之间保持一个虚拟 连接 。TCP在数据包接收无序、丢失或在交付期间被破坏时,负责数据恢复。它通过为其发送的每个数据包提供一个序号来完成此恢复。 记住,较低的网络层会将每个数据包视为一个独立的单元,因此,数据包可以沿完全不同的路径发送,即使它们都是同一消息的组成部分。这种路由与网络层处理分段和重新组装数据包的方式非常相似,只是级别更高而已。
    为确保正确地接收数据,TCP要求在目标计算机成功收到数据时发回一个确认(即 ACK)。如果在某个时限内未收到相应的 ACK,将重新传送数据包。如果网络拥塞,这种重新传送将导致发送的数据包重复。但是,接收计算机可使用数据包的序号来确定它是否为重复数据包,并在必要时丢弃它。
TCP与UDP的选择
    如果比较UDP包和TCP包的结构,很明显UDP包不具备TCP包复杂的可靠性与控制机制。 与TCP协议相同,UDP的源端口数和目的端口数也都支持一台主机上的多个应用。一个16位的UDP包包含了一个字节长的头部和数据的长度,校验码域使其可以进行整体校验。(许多应用只支持UDP,如:多媒体数据流,不产生任何额外的数据,即使知道有破坏的包也不进行重发。) 
    很明显,当数据传输的性能必须让位于数据传输的完整性、可控制性和可靠性时,TCP协议是当然的选择。当强调传输性能而不是传输的完整性时,如:音频和多媒体应用,UDP是最好的选择。在数据传输时间很短,以至于此前的连接过程成为整个流量主体的情况下,UDP也是一个好的选择,如:DNS交换。把SNMP建立在UDP上的部分原因是设计者认为当发生网络阻塞时,UDP较低的开销使其有更好的机会去传送管理数据。TCP丰富的功能有时会导致不可预料的性能低下,但是我们相信在不远的将来,TCP可靠的点对点连接将会用于绝大多数的网络应用。
 
TCP协议和UDP协议特性区别总结:
     1. TCP协议在传送数据段的时候要给段标号;UDP协议不
     2. TCP协议可靠;UDP协议不可靠
     3. TCP协议是面向连接;UDP协议采用无连接
     4. TCP协议负载较高,采用虚电路;UDP采用无连接
     5. TCP协议的发送方要确认接收方是否收到数据段(3次握手协议)
     6. TCP协议采用窗口技术和流控制

ICMP   Ping   Tracerout和Telnet

ICMP

ICMP是“Internet Control Message Protocol”(Internet控制消息协议)的缩写。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。我们在网络中经常会使用到ICMP协议,如我们经常使用的用于检查网络通不通的Ping命令,这个“Ping”的过程实际上就是ICMP协议工作的过程。还有其他的网络命令如跟踪路由的Tracert命令也是基于ICMP协议的。

从技术角度来说,ICMP就是一个“错误侦测与回报机制”,其目的就是让我们能够检测网路的连线状况﹐也能确保连线的准确性﹐其功能主要有: 基本的功能是测试网络是否畅通)
· 侦测远端主机是否存在。
· 建立及维护路由资料。
· 重导资料传送路径

ICMP协议经常被认为是IP层的一个组成部分。它传递差错报文以及其他需要注意的信息。ICMP报文通常被IP层或更高层协议(TCP或UDP使用)。一些ICMP报文把差错报文返回给用户进程。ICMP是在IP数据报内被传输的,协议代码为1。所有ICMP报文的前4个字节都是一样的,第一个字节为类型(常见的有0,ping的回显应答。3,目的不可达。8,ping请求回显。11,超时)第二个字节为代码(常见的有3类型目的不可到达的3代码-端口不可到达,1代码-主机不可到达)

Ping

        最常见的使用ICMP协议的为ping程序了,该程序发送一份ICMP回显请求报文给主机,并等待返回ICMP回显应答。ping这能测试服务器是否不可到达,使用的只是IP数据报,并不能检测某个端口是否可用(如web服务器的80端口),ping针对的只是一个IP没有涉及到传输层的端口。

Traceroute(跟踪路由)

    Traceroute(windows上为tracert)程序可以让我们看到IP数据报从一台及其传到另一台主机所经过的路由。Traceroute程序使用ICMP报文和IP首部中的TTL字段(一般为64).TTL字段的目的是防止数据报在选路时候无休止的在网络中流动(当路由故障的时候,可能在两个路由循环)。当路由器收到一份IP数据报的时候,如果其TTL字段是0或1,则路由器不转发该数据报,路由器将该数据报丢弃,并给信源主机发送一份ICMP“超时”信息。

Tracerout的工作工程,它发送一份TTL字段为1的IP数据报给目的主机(为ICMP的请求回显Type为8),处理这份数据报的第一个路由器将TTL值减1,丢弃该数据报,并发回一份超时ICMP报文。这样就得到了该路径中的第一个路由器的地址。然后在发送一份TTL值为2的数据报,这样我们可以得到第二个路由器的地址。继续这个过程直到该数据报到达主机。目的主机如果接收到ICMP报文(这个时候不会发送ICMP“超时”差错报文),为了判断已经到达主机,这个时候在发送一份UDP数据报给主机,并且数据报的端口很大(应用程序不会占用),这个时候目的主机会产生一份“端口不可到达”的错误的ICMP报文。traceroute程序所要做的是区分接收到的ICMP报文是超时还是端口不可到达,以判断什么时候结束。

关于这个程序还有几点要说明:
(1)并不能确保现在的路由也是将来所要采用的路由,甚至两份连续的数据报都可能采用不同的路由。
(2)不能保证ICMP报文的路由与traceroute程序发送的UDP数据报采用同一路由。这表明打印出来的往返时间可能并不能真正体现数据报发送和返回的时间差。
(3)返回的ICMP报文中的信源IP地址是UDP数据报到达的路由的接口的IP地址。接受这个报文的接入接口地址,并不是发送接口的地址。

Telnet
Telnet为(telecommunication network protocol)的缩写,它为标准的提供远程登录的功能的应用,它使用TCP连接,能够运行在不同操作系统主机之间。telnet的使用方法是 telent host port的方式,这个命令有个特殊的应用,就是测试远程主机是否开启某个端口,例如 telent baidu.com 80,可以测试百度的web服务。用抓包器抓了下包,当telent baidu.com 80的时候,就会和百度一台服务器的80端口建立一个tcp连接,这个连接可以维持一会,就会自动断开。


PS: 

在一个主机中, tcp 与udp使用的端口的取值范围各自是独立的,允许存在取值相同的TCP端口和UDP端口。比如说:一个程序已经占用TCP的80端口,其还能占用UDP的80端口。

 五  网络中易于混淆的几个硬件设备

    1 中继器是物理层上的网络互连设备,它的作用是重新生成信号(即对原信号进行放大和整形)。 

      中继器(Repeater)又称重发器,是一种最为简单但也是用得最多的互连设备。中继器仅适用于以太网,可将两段或两段以上以太网互连起来。中继器只对电缆上传输 的数据信号再生放大,再重发到其它电缆段上。对链路层以上的协议来说,用中继器互连起来的若干段电缆与单根电缆并无区别(除了中断器本身会引起一定的时间延迟外)。 

     2集线器在OSI的7层模型中处于物理层,其实质是一个中继器。主要功能是对接收到的信号进行再生放大,以扩大网络的传输距离。正因为集线器只是一个信号放大和中转的设备,所以它不具备交换功能,但是由于集线器价格便宜、组网灵活,所以经常使用它。集线器使用于星型网络布线,如果一个工作站出现问题,不会影响整个网络的正常运行。 
   3网桥工作在数据链路层,将两个LAN连起来,根据MAC地址来转发帧,可以看作一个“低层的路由器”(路由器工作在网络层,根据网络地址如IP地址进行转发)。 
   

  4 数据交换机(Switch)也叫交换式集线器,是一种工作在OSI第二层(数据链路层,参见“广域网”定义)上的、基于MAC (网卡的介质访问控制地址)识别、能完成封装转发数据包功能的网络设备。它通过对信息进行重新生成,并经过内部处理后转发至指定端口,具备自动寻址能力和交换作用。交换机不懂得IP地址,但它可以“学习”MAC地址,并把其存放在内部地址表中,通过在数据帧的始发者和目标接收者之间建立临时的交换路径,使数据帧直接由源地址到达目的地址。 

    5   是什么把网络相互连接起来?是路由器。路由器是互联网络的枢纽、"交通警察"。

         目前路由器已经广泛应用于各行各业,各种不同档次的产品已经成为实现各种骨干网内部连接、骨干网间互联和骨干网与互联网互联互通业务的主力军。 
   所谓路由就是指通过相互连接的网络把信息从源地点移动到目标地点的活动。一般来说,在路由过程中,信息至少会经过一个或多个中间节点。通常,人们会把路由和交换进行对比,这主要是因为在普通用户看来两者所实现的功能是完全一样的。其实,路由和交换之间的主要区别就是交换发生在OSI参考模型的第二层(数据链路层),而路由发生在第三层,即网络层。这一区别决定了路由和交换在移动信息的过程中需要使用不同的控制信息,所以两者实现各自功能的方式是不同的。

六 集线器、交换机、路由器的区别

      (1) 集线器-VS--交换机

           a 首先说HUB,也就是集线器。它的作用可以简单的理解为将一些机器连接起来组成一个局域网。(物理层)

           b交换机(又名交换式集线器)作用与集线器大体相同。(数据链路层)

           c 但是两者在性能上有区别:集线器采用的式共享带宽的工作方式,而交换机是独享带宽。这样在机器很多或数据量很大                  时, 两者将会有比较明显的。

          d  而路由器与以上两者有明显区别,它的作用在于连接不同的网段并且找到网络中数据传输最合适的路径 ,可以说一般情                况下个人用户需求不大。路由器是产生于交换机之后,就像交换机产生于集线器之后,所以路由器与交换机也有一定联系,                并不是完全独立的两种设备。路由器主要克服了交换机不能路由转发数据包的不足(网络层)


   (2) 路由器与交换机的主要区别体现在以下几个方面:

 

  (1)工作层次不同

  最初的的交换机是工作在OSI/RM开放体系结构的数据链路层,也就是第二层,而路由器一开始就设计工作在OSI模型的网络层。由于交换机工作在OSI的第二层(数据链路层),所以它的工作原理比较简单,而路由器工作在OSI的第三层(网络层),可以得到更多的协议信息,路由器可以做出更加智能的转发决策。

  (2)数据转发所依据的对象不同

  交换机是利用物理地址或者说MAC地址来确定转发数据的目的地址。

         b 路由器则是利用不同网络的ID号(即IP地址)来确定数据转发的地址。IP地址是在软件中实现的,描述的是设备所在的网络,有                时这些第三层的地址也称为协议地址或者网络地址。

         c MAC地址通常是硬件自带的,由网卡生产商来分配的,而且已经固化到了网卡中去,一般来说是不可更改的。

         d IP地址则通常由网络管理员或系统自动分配。

  (3)传统的交换机只能分割冲突域,不能分割广播域;而路由器可以分割广播域

  由交换机连接的网段仍属于同一个广播域,广播数据包会在交换机连接的所有网段上传播,在某些情况下会导致通信拥挤和安全漏洞。连接到路由器上的网段会被分配成不同的广播域,广播数据不会穿过路由器。虽然第三层以上交换机具有VLAN功能,也可以分割广播域,但是各子广播域之间是不能通信交流的,它们之间的交流仍然需要路由器。

  (4)路由器提供了防火墙的服务

  路由器仅仅转发特定地址的数据包,不传送不支持路由协议的数据包传送和未知目标网络数据包的传送,从而可以防止广播风暴。

  交换机一般用于LAN-WAN的连接,交换机归于网桥,是数据链路层的设备,有些交换机也可实现第三层的交换。 

路由器用于WAN-WAN之间的连接,可以解决异性网络之间转发分组,作用于网络层。他们只是从一条线路上接受输入分组,然后向另一条线路转发。这两条线路可能分属于不同的网络,并采用不同协议。相比较而言,路由器的功能较交换机要强大,但速度相对也慢,价格昂贵,第三层交换机既有交换机线速转发报文能力,又有路由器良好的控制功能,因此得以广泛应用。

  目前个人比较多宽带接入方式就是ADSL,因此笔者就ADSL的接入来简单的说明一下。现在购买的ADSL猫大多具有路由功能(很多的时候厂家在出厂时将路由功能屏蔽了,因为电信安装时大多是不启用路由功能的,启用DHCP。打开ADSL的路由功能),如果个人上网或少数几台通过ADSL本身就可以了,如果电脑比较多你只需要再购买一个或多个集线器或者交换机。考虑到如今集线器与交换机的 价格相差十分小,不是特殊的原因,请购买一个交换机。不必去追求高价,因为如今产品同质化十分严重,我最便宜的交换机现在没有任 何问题。给你一个参考报价,建议你购买一个8口的,以满足扩充需求,一般的价格100元左右。接上交换机,所有电脑再接到交换机上就行了。余下所要做的事情就只有把各个机器的网线插入交换机的接口,将猫的网线插入uplink接口。然后设置路由功能,DHCP等, 就可以共享上网了。

  看完以上的解说读者应该对交换机、集线器、路由器有了一些了解,目前的使用主要还是以交换机、路由器的组合使用为主,具体的组合方式可根据具体的网络情况和需求来确定。

参考:http://blog.csdn.net/ysu108/article/details/7772474

           http://blog.csdn.net/zhaozheng7758/article/details/2815322

  • 0
    点赞
  • 1
    评论
  • 1
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值