计算机网络常见面试题


(根据自己的面试经验总结的知识点,内容比较浅显,有问题的地方欢迎指正呀)

1、Http和Https的区别

Http协议运行在TCP上,明文传输,客户端与服务端都无法验证对方的身份;Https是被SSL(Secure Socket Layer)外壳的Http,运行于SSL上,SSL运行于TCP之上,就是添加了加密和认证机制的HTTP。二者之间存在如下不同:

  1. 端口不同:HTTP是80,Https是443
  2. 资源消耗:Https显然多一些
  3. 开销:Https通信需要证书,而证书一般需要向认证机构购买;
  4. Https的加密机制是一种共享密钥加密和公开密钥加密并用的混合加密机制

2、对称加密和非对称加密

  1. 对称加密是指加密和解密使用同一种密钥的方式,这种方式存在的最大问题就是密钥发送问题,即如何安全地将密钥发送给对方;
  2. 非对称加密是指使用一对非对称密钥,即公钥和私钥,公钥可以对外发布,但私钥只有自己知道。发送密文的一方使用对方的公钥进行加密处理,对方接受到加密信息后,使用自己的私钥进行解密。
    由于非对称加密的方式不需要发送用来解密的私钥,所以可以保证安全性;但是和对称加密比起来,它非常的慢,所以我们还是要用对称加密来传送消息,但对称加密所使用的密钥我们可以通过非对称加密的方式发送出去。
    Linux免密授权就是采用非对称加密的方式:

在这里插入图片描述

3、三次握手与四次握手

3.1、三次握手过程

(1)序号:seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发送方发送数据时对此进行标记(这个是标记发送的数据的一个代号)
(2)确认序号:ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,ack=seq+1
(3)标志位:
A)URG:紧急指针(urgent pointer)有效。
B)ACK:确认序号有效。--------------->它为1,ack才有效
C)PSH:接收方应该尽快将这个报文交给应用层。
D)RST:重置连接。
E)SYN:发起一个新连接。
F)FIN:释放一个连接。
在这里插入图片描述
步骤:(这里的x和y代表了随机)
第一次握手: A向B发送了一个序号为x的数据包
SYN=1就是先建立一个新连接,要发送数据的代号(标记)是seq=x(就是序号为x的包),还没有确认信号,所以ACK=0
第二次握手:B接收到A发来的序号为x的数据包,然后向A发送确认消息
SYN=1建立了一个新连接,ack=x+1告诉A,B已经接收到了x的数据包,ACK=1保证ack是有效的,然后B还像A发送了序号为y的数据包
第三次握手:A接收到B发来的消息及数据,知道B已经接收到了x的包,然后根据消息,向B发送x+1的数据包(seq=x+1),
这个时候两个主机已经建立连接,所以不需要再建立新连接,所以不需要SYN,然后发送x+1的数据包即seq=x+1,然后向B发送确认信号,ack=y+1说明已经接收到B的数据,ACK=1说明ack有效

3.2、四次握手过程

TCP连接时是全双工的,因此,每个方向都必须单独进行关闭,这一原则是当一方完成数据发送任务后,发送一个FIN来终止这一方向的连接
收到一个FIN只是意味着这一方向上没有数据流动了,即不会再收到数据了,但是在这个TCP连接上仍然能够发送数据,直到这一方向也发送了FIN。
在这里插入图片描述
在这里插入图片描述
第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。
第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。
第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。
第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。

3.3、为什么TCP链接需要三次握手,两次不可以吗,为什么?

为了防止已失效的链接请求报文突然又传到了服务端,因而产生错误。
客户端发送的连接请求报文并未丢失,而是在某个网络节点长时间滞留了,以致延误到链接释放以后的某个时间才到达Server。服务端以为是Client发出的新的链接请求,于是就向客户端发送确认数据包,同意建立链接。如果采用两次握手的话,Server不需要收到客户端的确认,只需要发送确认包就可以建立连接了。由于client并未建立连接,所以不会理睬Server发送的确认,也不会与Server通信;而Server一直在等待Client的请求,这样Server就白白浪费了一定的资源。若采用三次握手,由于Server没有收到客户端的确认,则就会知道Client并没有要求建立请求,就不会建立链接。

1)客户端进程发出连接释放报文,并且停止发送数据。释放数据报文首部,FIN=1,其序列号为seq=u(等于前面已经传送过来的数据的最后一个字节的序号加1),此时,客户端进入FIN-WAIT-1(终止等待1)状态。 TCP规定,FIN报文段即使不携带数据,也要消耗一个序号。
2)服务器收到连接释放报文,发出确认报文,ACK=1,ack=u+1,并且带上自己的序列号seq=v,此时,服务端就进入了CLOSE-WAIT(关闭等待)状态。TCP服务器通知高层的应用进程,客户端向服务器的方向就释放了,这时候处于半关闭状态,即客户端已经没有数据要发送了,但是服务器若发送数据,客户端依然要接受。这个状态还要持续一段时间,也就是整个CLOSE-WAIT状态持续的时间。
3)客户端收到服务器的确认请求后,此时,客户端就进入FIN-WAIT-2(终止等待2)状态,等待服务器发送连接释放报文(在这之前还需要接受服务器发送的最后的数据)。
4)服务器将最后的数据发送完毕后,就向客户端发送连接释放报文,FIN=1,ack=u+1,由于在半关闭状态,服务器很可能又发送了一些数据,假定此时的序列号为seq=w,此时,服务器就进入了LAST-ACK(最后确认)状态,等待客户端的确认。
5)客户端收到服务器的连接释放报文后,必须发出确认,ACK=1,ack=w+1,而自己的序列号是seq=u+1,此时,客户端就进入了TIME-WAIT(时间等待)状态。注意此时TCP连接还没有释放,必须经过2∗∗MSL(最长报文段寿命)的时间后,当客户端撤销相应的TCB后,才进入CLOSED状态。
6)服务器只要收到了客户端发出的确认,立即进入CLOSED状态。同样,撤销TCB后,就结束了这次的TCP连接。可以看到,服务器结束TCP连接的时间要比客户端早一些。

3.4、为什么连接的时候是三次握手,关闭的时候却是四次握手?

因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,“你发的FIN报文我收到了”。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。

3.5、为什么TIME_WAIT状态需要经过2MSL(最大报文段生存时间)才能返回到CLOSE状态?

虽然按道理,四个报文都发送完毕,我们可以直接进入CLOSE状态了,但是我们必须假设网络是不可靠的,有可以最后一个ACK丢失。所以TIME_WAIT状态就是用来重发可能丢失的ACK报文。在Client发送出最后的ACK回复,但该ACK可能丢失。Server如果没有收到ACK,将不断重复发送FIN片段。所以Client不能立即关闭,它必须确认Server接收到了该ACK。Client会在发送出ACK之后进入到TIME_WAIT状态。Client会设置一个计时器,等待2MSL的时间。如果在该时间内再次收到FIN,那么Client会重发ACK并再次等待2MSL。所谓的2MSL是两倍的MSL(Maximum Segment Lifetime)。MSL指一个片段在网络中最大的存活时间,2MSL就是一个发送和一个回复所需的最大时间。如果直到2MSL,Client都没有再次收到FIN,那么Client推断ACK已经被成功接收,则结束TCP连接。

3.6、为什么不能用两次握手进行连接?(在第二次握手的时候数据包丢失,客户端在等待连接,服务端认为连接好了,就开始传数据了)

3次握手完成两个重要的功能,既要双方做好发送数据的准备工作(双方都知道彼此已准备好),也要允许双方就初始序列号进行协商,这个序列号在握手过程中被发送和确认。
现在把三次握手改成仅需要两次握手,死锁是可能发生的。作为例子,考虑计算机S和C之间的通信,假定C给S发送一个连接请求分组,S收到了这个分组,并发 送了确认应答分组。按照两次握手的协定,S认为连接已经成功地建立了,可以开始发送数据分组。可是,C在S的应答分组在传输中被丢失的情况下,将不知道S 是否已准备好,不知道S建立什么样的序列号,C甚至怀疑S是否收到自己的连接请求分组。在这种情况下,C认为连接还未建立成功,将忽略S发来的任何数据分 组,只等待连接确认应答分组。而S在发出的分组超时后,重复发送同样的分组。这样就形成了死锁。

3.7、如果已经建立了连接,但是客户端突然出现故障了怎么办?

TCP还设有一个保活计时器,显然,客户端如果出现故障,服务器不能一直等下去,白白浪费资源。服务器每收到一次客户端的请求后都会重新复位这个计时器,时间通常是设置为2小时,若两小时还没有收到客户端的任何数据,服务器就会发送一个探测报文段,以后每隔75秒钟发送一次。若一连发送10个探测报文仍然没反应,服务器就认为客户端出了故障,接着就关闭连接

4、TCP协议如何来保证传输的可靠性

  1. 数据包校验:目的是检测数据在传输过程中的任何变化,若校验出包有错,则丢弃报文段并且不给出响应,这时TCP发送数据段超时后会重新发送数据;
  2. 对失序数据包进行重排序:既然TCP报文段作为IP数据报来传输,而IP数据报的到达可能会失序,因此TCP报文段的到达也可能会失序。TCP将对失序数据进行重新排序,然后才交给应用层。
  3. 丢弃重复数据:对于重复数据,能够丢弃重复数据。
  4. 应答机制:当TCP收到发自TCP连接另一端的数据,它将发送一个确认。这个确认不是立即发送,通常将推迟几分之一秒
  5. 超时重发:当TCP发送一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重新发送这个报文段。
  6. 流量缓冲:TCP连接的每一方都有固定大小的缓存空间。TCP的接收端只允许另一端发送接收端缓冲区所能接纳的数据,这可以防止较快主机致使较慢主机的缓冲区溢出,这就是流量控制。TCP使用的流量控制协议是可变大小的滑动窗口协议。

5、客户端不断进行请求链接会怎样?DDos(Distributed Denial of Service)攻击?

服务器端会为每个请求创建一个链接,并向其发送确认报文,然后等待客户端进行确认
1)、DDos 攻击
客户端向服务端发送请求链接数据包
服务端向客户端发送确认数据包
客户端不向服务端发送确认数据包,服务器一直等待来自客户端的确认
2)、DDos 预防 ( 没有彻底根治的办法,除非不使用TCP )
限制同时打开SYN半链接的数目
缩短SYN半链接的Time out 时间
关闭不必要的服务

6、Get与Post的区别

Get与Post是两种常用的HTTP Methods,区别:

  1. 从功能上讲,Get一般是用来从服务器上获取资源,Post一般用来更新服务器上的资源。
  2. Get不会改变服务器上的资源,Post会对服务器资源进行改变。
  3. 从请求参数上讲,Get会把请求的数据附在URL之后,Post请求会把请求的数据则放置在HTTP请求报文的请求体中。
  4. Post安全性相对高一些(比如登录)
  5. Get的请求会小一些(URL有长度限制),Post没有限制。

7、TCP与UDP的区别

TCP (Transmission Control Protocol)和UDP(User Datagram Protocol)协议属于传输层协议,它们之间的区别包括:

  1. TCP是面向连接的,UDP是无连接的;
  2. TCP是可靠的,UDP是不可靠的;
  3. TCP只支持点对点通信,UDP支持一对一、一对多、多对一、多对多的通信模式;
  4. TCP是面向字节流的,UDP是面向报文的;
  5. TCP有拥塞控制机制;UDP没有拥塞控制,适合媒体通信;
  6. TCP首部开销(20个字节)比UDP的首部开销(8个字节)要大;

8、TCP的拥塞控制

计算机网络中的带宽,交换结点中缓存及处理机等都是网络的资源。在某段时间,弱队网络中某一资源的需求超过看该资源所能提供的可用部分,网络的性能就会变坏,这种情况就叫做拥塞。拥塞控制就是防止过多的数据注入网络中,这样可以使网络中的路由器或链路不致过载。拥塞控制的方法主要有以下四种:

  1. 慢启动:不要一开始就发送大量的数据,先探测以下网络的拥塞程度,也就是由小到大逐渐增加拥塞窗口的大小;
  2. 拥塞避免:拥塞避免算法让拥塞窗口缓慢增长,即每经过一个往返时间RTT就把发送方的拥塞窗口cwnd加1,而不是加倍,这样拥塞窗口按线性规律缓慢增长。
    在这里插入图片描述
  3. 快重传:快重传要求接收方在收到一个失序的报文段后就立即发出重复确认(为的是使发送方及早知道有报文段没有到达对方)而不要等到自己发送数据时捎带确认。快重传算法规定,发送方只要一连收到三个重复确认就应当立即重传对方尚未收到的报文段,而不必继续等待设置的重传计时器时间到期。
    在这里插入图片描述
  4. 快恢复:快重传配合使用的还有快恢复算法,当发送方连续收到三个重复确认时,就执行“乘法减小”算法,把ssthresh门限减半,但是接下去并不执行慢开始算法:因为如果网络出现拥塞的话就不会收到好几个重复的确认,所以发送方现在认为网络可能没有出现拥塞。所以此时不执行慢开始算法,而是将cwnd设置为ssthresh的大小,然后执行拥塞避免算法。
    在这里插入图片描述

9、从输入网址到获得页面的过程

  1. 浏览器查询 DNS,获取域名对应的IP地址:具体过程包括浏览器搜索自身的DNS缓存、搜索操作系统的DNS缓存、读取本地的Host文件和向本地DNS服务器进行查询等。对于向本地DNS服务器进行查询,如果要查询的域名包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析(此解析具有权威性);如果要查询的域名不由本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析(此解析不具有权威性)。如果本地域名服务器并未缓存该网址映射关系,那么将根据其设置发起递归查询或者迭代查询;
  2. 浏览器获得域名对应的IP地址以后,浏览器向服务器请求建立链接,发起三次握手;
  3. TCP/IP链接建立起来后,浏览器向服务器发送HTTP请求;
  4. 服务器接收到这个请求,并根据路径参数映射到特定的请求处理器进行处理,并将处理结果及相应的视图返回给浏览器;
  5. 浏览器解析并渲染视图,若遇到对js文件、css文件及图片等静态资源的引用,则重复上述步骤并向服务器请求这些资源;
  6. 浏览器根据其请求到的资源、数据渲染页面,最终向用户呈现一个完整的页面。

总结大致过程: 利用DNS进行域名解析 --> 发起TCP的3次握手 --> 建立TCP连接后发起http请求 --> 服务器响应http请求,浏览器得到html代码 --> 浏览器解析html代码,并请求html代码中的资源(如js、css、图片等) --> 浏览器对页面进行渲染呈现给用户

10、Session、Cookie与Application

Cookie和Session都是客户端与服务端之间保持状态的解决方案,具体来说,cookie机制采用的是客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案。

  1. Cookie及其相关API
      Cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie,而客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器,服务器检查该Cookie,以此来辨认用户状态。服务器还可以根据需要修改Cookie的内容。
  2. Session及其相关API
      同样地,会话状态也可以保存在服务器端。客户端请求服务器,如果服务器记录该用户状态,就获取Session来保存状态,这时,如果服务器已经为此客户端创建过session,服务器就按照sessionid把这个session检索出来使用;如果客户端请求不包含sessionid,则为此客户端创建一个session并且生成一个与此session相关联的sessionid,并将这个sessionid在本次响应中返回给客户端保存。保存这个sessionid的方式可以采用 cookie机制 ,这样在交互过程中浏览器可以自动的按照规则把这个标识发挥给服务器;若浏览器禁用Cookie的话,可以通过 URL重写机制 将sessionid传回服务器。
  3. Session 与 Cookie 的对比
    实现机制:Session的实现常常依赖于Cookie机制,通过Cookie机制回传SessionID;
    大小限制:Cookie有大小限制并且浏览器对每个站点也有cookie的个数限制,Session没有大小限制,理论上只与服务器的内存大小有关;
    安全性:Cookie存在安全隐患,通过拦截或本地文件找得到cookie后可以进行攻击,而Session由于保存在服务器端,相对更加安全;
    服务器资源消耗:Session是保存在服务器端上会存在一段时间才会消失,如果session过多会增加服务器的压力。
  4. Application(ServletContext):与一个Web应用程序相对应,为应用程序提供了一个全局的状态,所有客户都可以使用该状态。

11、TCP和UDP分别对应的常见应用层协议

1. TCP对应的应用层协议
FTP:定义了文件传输协议,使用21端口。常说某某计算机开了FTP服务便是启动了文件传输服务。下载文件,上传主页,都要用到FTP服务。
Telnet:它是一种用于远程登陆的端口,用户可以以自己的身份远程连接到计算机上,通过这种端口可以提供一种基于DOS模式下的通信服务。如以前的BBS是-纯字符界面的,支持BBS的服务器将23端口打开,对外提供服务。
SMTP:定义了简单邮件传送协议,现在很多邮件服务器都用的是这个协议,用于发送邮件。如常见的免费邮件服务中用的就是这个邮件服务端口,所以在电子邮件设置-中常看到有这么SMTP端口设置这个栏,服务器开放的是25号端口。
POP3:它是和SMTP对应,POP3用于接收邮件。通常情况下,POP3协议所用的是110端口。也是说,只要你有相应的使用POP3协议的程序(例如Fo-xmail或Outlook),就可以不以Web方式登陆进邮箱界面,直接用邮件程序就可以收到邮件(如是163邮箱就没有必要先进入网易网站,再进入自己的邮-箱来收信)。
HTTP:从Web服务器传输超文本到本地浏览器的传送协议。

2. UDP对应的应用层协议
DNS:用于域名解析服务,将域名地址转换为IP地址。DNS用的是53号端口。
SNMP:简单网络管理协议,使用161号端口,是用来管理网络设备的。由于网络设备很多,无连接的服务就体现出其优势。
TFTP(Trival File Transfer Protocal):简单文件传输协议,该协议在熟知端口69上使用UDP服务。

12、网络层的ARP协议工作原理

网络层的ARP协议完成了IP地址与物理地址的映射。首先,每台主机都会在自己的ARP缓冲区中建立一个ARP列表,以表示IP地址和MAC地址的对应关系。当源主机需要将一个数据包要发送到目的主机时,会首先检查自己ARP列表中是否存在该IP地址对应的MAC地址:如果有,就直接将数据包发送到这个MAC地址;如果没有,就向本地网段发起一个ARP请求的广播包,查询此目的主机对应的MAC地址。此ARP请求数据包里包括源主机的IP地址、硬件地址、以及目的主机的IP地址。网络中所有的主机收到这个ARP请求后,会检查数据包中的目的IP是否和自己的IP地址一致。如果不相同就忽略此数据包;如果相同,该主机首先将发送端的MAC地址和IP地址添加到自己的ARP列表中,如果ARP表中已经存在该IP的信息,则将其覆盖,然后给源主机发送一个ARP响应数据包,告诉对方自己是它需要查找的MAC地址;源主机收到这个ARP响应数据包后,将得到的目的主机的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息开始数据的传输。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。

13、IP地址的分类

IP地址是指互联网协议地址,是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。IP地址编址方案将IP地址空间划分为A、B、C、D、E五类,其中A、B、C是基本类,D、E类作为多播和保留使用,为特殊地址。
每个IP地址包括两个标识码(ID),即网络ID和主机ID。同一个物理网络上的所有主机都使用同一个网络ID,网络上的一个主机(包括网络上工作站,服务器和路由器等)有一个主机ID与其对应。A~E类地址的特点如下:
A类地址:以0开头,第一个字节范围:0~127;
B类地址:以10开头,第一个字节范围:128~191;
C类地址:以110开头,第一个字节范围:192~223;
D类地址:以1110开头,第一个字节范围为224~239;
E类地址:以1111开头,保留地址

14、IP地址与物理地址

物理地址是数据链路层和物理层使用的地址,IP地址是网络层和以上各层使用的地址,是一种逻辑地址,其中ARP协议用于IP地址与物理地址的对应。

15、常见状态码及原因短语

HTTP请求结构: 请求方式 + 请求URI + 协议及其版本
HTTP响应结构: 状态码 + 原因短语 + 协议及其版本
1×× : 请求处理中,请求已被接受,正在处理
2×× : 请求成功,请求被成功处理
200 OK
3×× : 重定向,要完成请求必须进行进一步处理
301 : 永久性转移
302 :暂时性转移
304 : 已缓存
4×× : 客户端错误,请求不合法
400:Bad Request,请求有语法问题
403:拒绝请求
404:客户端所访问的页面不存在
5×× : 服务器端错误,服务器不能处理合法请求
500 :服务器内部错误
503 : 服务不可用,稍等

16、OSI模型

在这里插入图片描述
1). 物理层
  参考模型的最低层,也是OSI模型的第一层,实现了相邻计算机节点之间比特流的透明传送,并尽可能地屏蔽掉具体传输介质和物理设备的差异,使其上层(数据链路层)不必关心网络的具体传输介质。
2). 数据链路层(data link layer)
  接收来自物理层的位流形式的数据,并封装成帧,传送到上一层;同样,也将来自上层的数据帧,拆装为位流形式的数据转发到物理层。这一层在物理层提供的比特流的基础上,通过差错控制、流量控制方法,使有差错的物理线路变为无差错的数据链路,即提供可靠的通过物理介质传输数据的方法。
  在这里插入图片描述
3). 网络层
  将网络地址翻译成对应的物理地址,并通过路由选择算法为分组通过通信子网选择最适当的路径。
4). 传输层(transport layer)
  在源端与目的端之间提供可靠的透明数据传输,使上层服务用户不必关系通信子网的实现细节。在协议栈中,传输层位于网络层之上,传输层协议为不同主机上运行的进程提供逻辑通信,而网络层协议为不同主机提供逻辑通信,如下图所示。

实际上,网络层可以看作是传输层的一部分,其为传输层提供服务。但对于终端系统而言,网络层对它们而言是透明的,它们知道传输层的存在,也就是说,在逻辑上它们认为是传输层为它们提供了端对端的通信,这也是分层思想的妙处。

在这里插入图片描述
5). 会话层(Session Layer)
  会话层是OSI模型的第五层,是用户应用程序和网络之间的接口,负责在网络中的两节点之间建立、维持和终止通信。
6). 表示层(Presentation Layer):数据的编码,压缩和解压缩,数据的加密和解密
  表示层是OSI模型的第六层,它对来自应用层的命令和数据进行解释,以确保一个系统的应用层所发送的信息可以被另一个系统的应用层读取。
7). 应用层(Application layer):为用户的应用进程提供网络通信服务

在这里插入图片描述

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值