移动端网络知识

1.什么是网络
在计算机领域中,网络是信息传输、接收、共享的虚拟平台

2.什么是网络编程
网络编程从大的方面说就是对信息的发送与接收,通过操作相应api,调度计算器硬件资源,并利用传输管道,进行数据交换的过程

3.7层网络模型
网络模型建立的原因:建立七层模型的主要目的是为解决网络互连时所遇到的兼容性问题,它的最大的优点是将服务、接口和协议这三个概念明确区分开来,服务说明某一层为上一层提供一些什么功能,节课说明上一层如何使用下层的服务,而协议涉及如何实现本层的服务,这样各层之间具有很强的独立性,同时划分了网络中不同功能模块的不同职责,
网络模型的优点:减轻问题的复杂度,一旦网络发生故障,可迅速定位故障所处的层次,便于查找和纠错,在各层分别定义标准接口,使具备相同对等层的不同网络设备能实现互操作,各层之间则相对独立,一种高层协议可放在多种底层协议上运行,网络技术革新可以缩小范围进行,便于研究和教学。

应用层:应用层是用户与网络,以及应用程序与网络间的直接接口,使得用户能够与网络进行交互式联系,该层具有的各种应用程序可以完成和实现用户请求的各种服务,负责完成网络中应用程序与网络操作系统之间的联系,建立与结束使用者之间的联系,并完成网络用户提出的各种网络服务及应用所需的监督、管理和服务等各种协议,此外,该层还负责协调各个应用程序间的工作,应用层为用户提供的服务和协议有:文件服务,目录服务、文件传输服务、远程登录服务、点子邮件服务、打印服务、安全服务、网络管理服务、数据库服务等,这些网络服务由该层的不同应用协议和程序完成。

表示层:表示层会对来自应用层的命令和数据进行解释,对各种语法赋予相应的含义,并按照一定的格式传送给会话层,其主要功能时处理用户信息的表示问题,如编码、数据格式转换和加密解密等,表示层的具体功能主要有:协商和建立数据交换的格式,解决各应用程序之间在数据格式表示上的差异。处理字符集和数字的转换。为了减少数据的传输量,还负责数据的压缩与恢复。提高网络的安全性。

会话层:会话层是用户应用程序和网络之间的接口,主要任务是向两个实体的表示层提供建立和使用连接的方法,将不同实体之间的表示层的连接称为会话,因此会话层的任务就是组织和协调两个会话进程之间的通信,并对数据交换进行管理。用户可以按照半双工、单工和全双工的方式建立会话,当建立会话时,用户必须提供他们想要连接的远程地址。会话层具有以下功能 :允许用户在两个实体设备之间建立、维持和终止会话,并支持它们之间的数据交换,,例如提供单方向会话或双向同时会话,并管理会话中的发送顺序,以及会话所占用时间的就长短。提供会话流量控制和交叉会话功能。使用远程地址建立会话连接,从逻辑上讲会话层主要负责数据交换的建立,保持和终止,但实际的工作却是接收来自传输层的数据,并负责纠正错误,此处的纠正错误指的是磁盘空间。打印机缺纸等类型的高级错误。

传输层:上三层的任务主要是数据处理,传输层是通信子网和资源子网的接口和桥梁,起到承上启下的作用。该层的主要任务是,向用户提供可靠的端到端的差错和流量控制,保证报文的正确传输,传输层的作用是向高层屏蔽下层数据通信的细节,向用户透明的传送报文,传输层提供会话层和网络层之间的传输服务,这种服务从会话层获得数据,并在必要时,对数据进行分割,然后传输层将数据传递到网络层,并确保数据能正确无误的传送到网络层,
传输层的主要功能如下:提供建立、维护和拆除传输连接的功能,传输层在网络层的基础上为高层提供面向连接和面向无连接的两种服务。提供可靠的面向连接和不太可靠的面向无连接的数据传输服务、差错控制和流量控制,在提供面向连接服务时,通过这一层传输的数据将由目标设备确认,如果在指定的时间内未收到确认信息,数据将被重发。

网络层:它是osi中最复杂的一层,也是通信子网的最高一层,它在下两层的基础上向资源子网提供服务,其主要任务是:通过路由选择算法,为报文或分组通过通信子网选择最恰当的路径,该层控制数据链路层与传输层之间的信息转发,建立,维持和终止网络的连接,具体的说,数据链路层的数据在这一层被转换为数据包,然后通过路径选择,分段组合,顺序,进/出路由等控制,将信息从一个网络设备传送到另一个网络设备。在实现网络层功能时,需要解决的主要问题如下:寻址、规定不同的信息交换方式,常见的交换技术有,线路交换技术和存储转发技术,后者又包括报文交换技术和分则交换技术。路由算法,当源节点和目的节点之间存在多条路径时,本层可以根据路由算法,通过网络为数据分组选择最佳的路径,并将信息从最合适的路径由发送端传送到接收端。连接服务,与数据链路层流量控制不同的是,前者控制的是网络相邻节点间的流量,后者控制的是从源节点到目的节点之间的流量。其目的在于防止阻塞,并进行差错检测。

数据链路层:负责建立和管理节点间的链路,主要功能时通过各种控制协议,将由差错的物理信道变为无差错的,能可靠传输数据帧的数据链路。在计算机网络中由于各种干扰的存在,物理链路是不可靠的,因此,这一层的主要功能时再物理层提供的比特流的基础上,通过差错控制,流量控制方法,使有差错的物理线路变为无差错的数据链路,即提供可靠的通过物理介质传输数据的方法。该层通常又被分为介质访问控制和逻辑链路控制两个自层。介质访问控制层主要任务是解决共享型网络中多用户对信道竞争的问题,完成网络介质的访问控制,逻辑链路控制主要任务是建立和维护网络连接,执行差错校验、流量控制和链路控制。数据链路层的具体工作是接收来自物理层的位流形式的数据,并封装成帧,传送到上一层,同样,也将来自上层的数据帧,拆装为位流形式的数据转发到物理层,并且,还负责处理接收端发回的确认帧的信息,以便提供可靠的数据传输。

物理层:物理层的主要功能时利用传输介质为数据链路层提供物理连接,实现比特流的透明传输,物理层的作用是实现相邻计算机节点之间比特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异,使其上面的数据链路层不必考虑网络的具体传输介质,
3.什么是socket
Socket 是IP地址与端口的结合协议(RFC793),是一种地址与端口的结合描述协议,是TCP/ip协议的相关api的总称,是网络api的集合实现。是应用层与tcp/IP 协议族通信的中间软件抽象层,它是一组接口,它把复杂的tcp/IP协议族隐藏在socket接口后面。

4.socket的作用与组成
在网络传输中用于唯一标识两个端点(IP+端口)之间的链接,socket区分于物理层面的链接。它由四个要素组成,客户端地址,客户端端口,服务器地址,服务器端口。

5.Tcp
Tcp是为了再不可靠的互联网络上提供可靠的端到端字节流而专门设计的一个传输协议,互联网络与单个网络不通,因为互联网络的不同部分可能有截然不同的拓扑结构、带宽、延迟、数据包大小和其他参数,tcp的设计目标是能够动态适应互联网络的这些特性,而且具备面对各种故障时的健壮性,应用层向tcp发送用于网间传输的、用8位字节表示的数据流,然后tcp把数据流分区成恰当长度的报文段,之后tcp把结果包传送给IP层,由它来通过网络将包传送给接收端实体的tcp层,tcp为了保证不丢包,就给每个包一个序号,。同时序号也保证了传送到接收端实体的包的按序接收,然后接收端实体对已成功收到的包发回一个相应的确认ack信号,如果发送端实体在合理的往返时间内未收到确认,那么对应的数据包就会被假设为已丢失将会被进行重传,tcp用一个校验和函数来检验数据是否有错误,在发送和接收时都要计算校验和。IP层不保证数据报一定被正确地递交到接收方,也不指示数据报的发送速度有多快,正是tcp负责既要足够快地发送数据报,以便使用网络容量,但又不能引起网络拥塞,tcp提供了可靠的端到端的字节流传输。

主要功能:当应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,TCP则把数据流分割成适当长度的报文段,最大传输段大小(MSS)通常受该计算机连接的网络的数据链路层的最大传送单元(MTU)限制。之后TCP把数据包传给IP层,由它来通过网络将包传送给接收端实体的TCP层,TCP为了保证报文传输的可靠,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的字节发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据(假设丢失了)将会被重传,在数据正确性与合法性上,TCP用一个校验和函数来检验数据是否有错误,在发送和接收时都要计算校验和;同时可以使用md5认证对数据进行加密。在保证可靠性上,采用超时重传和捎带确认机制。在流量控制上,采用滑动窗口协议,协议中规定,对于窗口内未经确认的分组需要重传。
在拥塞控制上,采用广受好评的tcp拥塞控制算法,主要包括四个主要部分:
(1)慢启动
每当建立一个TCP连接时或一个TCP连接发生超时重传后,该连接便进入慢启动阶段。进入慢启动后,TCP实体将拥塞窗口的大小初始化为一个报文段,即:cwnd=1。此后,每收到一个报文段的确认(ACK),cwnd值加1,即拥塞窗口按指数增加。当cwnd值超过慢启动阐值(ssthresh)或发生报文段丢失重传时,慢启动阶段结束。前者进入拥塞避免阶段,后者重新进入慢启动阶段。
(2)拥塞避免
在慢启阶段,当cwnd值超过慢启动阐值(ssthresh)后,慢启动过程结束,TCP连接进入拥塞避免阶段。在拥塞避免阶段,每一次发送的cwnd个报文段被完全确认后,才将cwnd值加1。在此阶段,cwnd值线性增加。
(3)快速重传
快速重传是对超时重传的改进。当源端收到对同一个报文的三个重复确认时,就确定一个报文段已经丢失,因此立刻重传丢失的报文段,而不必等到重传定时器(RTO)超时。以此减少不必要的等待时间。
(4)快速恢复
快速恢复是对丢失恢复机制的改进。在快速重传之后,不经过慢启动过程而直接进入拥塞避免阶段。每当快速重传后,置ssthresh=cwnd/2、ewnd=ssthresh+3。此后,每收到一个重复确认,将cwnd值加1,直至收到对丢失报文段和其后若干报文段的累积确认后,置cwnd=ssthresh,进入拥塞避免阶段。
Tcp特点:基于流的方式,面向连接,可靠通信方式,在网络状况不佳的时候劲量降低系统由于重传带来的带宽开销,通信连接维护是面向通信的两个端点的,而不考虑中间网段和节点

为满足TCP协议的这些特点,TCP协议做了如下的规定:
①数据分片:在发送端对用户数据进行分片,在接收端进行重组,由TCP确定分片的大小并控制分片和重组;
②到达确认:接收端接收到分片数据时,根据分片数据序号向发送端发送一个确认;
③超时重发:发送方在发送分片时启动超时定时器,如果在定时器超时之后没有收到相应的确认,重发分片;
④滑动窗口:TCP连接每一方的接收缓冲空间大小都固定,接收端只允许另一端发送接收端缓冲区所能接纳的数据,TCP在滑动窗口的基础上提供流量控制,防止较快主机致使较慢主机的缓冲区溢出;
⑤失序处理:作为IP数据报来传输的TCP分片到达时可能会失序,TCP将对收到的数据进行重新排序,将收到的数据以正确的顺序交给应用层;
⑥重复处理:作为IP数据报来传输的TCP分片会发生重复,TCP的接收端必须丢弃重复的数据;
⑦数据校验:TCP将保持它首部和数据的检验和,这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化。如果收到分片的检验和有差错,TCP将丢弃这个分片,并不确认收到此报文段导致对端超时并重发。

6.UDP
UDP 为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据包的方法,Internet 的传输层有两个主要协议,互为补充。无连接的是 UDP,它除了给应用程序发送数据包功能并允许它们在所需的层次上架构自己的协议之外,几乎没有做什么特别的事情。面向连接的是 TCP,该协议几乎做了所有的事情。UDP协议与TCP协议一样用于处理数据包,在OSI模型中,两者都位于传输层,处于IP协议的上一层。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。UDP用来支持那些需要在计算机之间传输数据的网络应用。许多应用只支持UDP,如:多媒体数据流,不产生任何额外的数据,即使知道有破坏的包也不进行重发。当强调传输性能而不是传输的完整性时,如:音频和多媒体应用,UDP是最好的选择。在数据传输时间很短,以至于此前的连接过程成为整个流量主体的情况下,UDP也是一个好的选择。
UDP报文没有可靠性保证、顺序保证和流量控制字段等,可靠性较差。但是正因为UDP协议的控制选项较少,在数据传输过程中延迟小、数据传输效率高,适合对可靠性要求不高的应用程序,或者可以保障可靠性的应用程序,如DNS、TFTP、SNMP等。UDP是面向报文的。发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付给IP层。既不拆分,也不合并,而是保留这些报文的边界,因此,应用程序需要选择合适的报文大小。

7.tcp与UDP的区别
UDP和TCP协议的主要区别是两者在如何实现信息的可靠传递方面不同。TCP协议中包含了专门的传递保证机制,当数据接收方收到发送方传来的信息时,会自动向发送方发出确认消息;发送方只有在接收到该确认消息之后才继续传送其它信息,否则将一直等待直到收到确认信息为止。与TCP不同,UDP协议并不提供数据传送的保证机制。如果在从发送方到接收方的传递过程中出现数据包的丢失,协议本身并不能做出任何检测或提示。因此,通常人们把UDP协议称为不可靠的传输协议。
TCP 是面向连接的传输控制协议,而UDP 提供了无连接的数据报服务;TCP 具有高可靠性,确保传输数据的正确性,不出现丢失或乱序;UDP 在传输数据前不建立连接,不对数据报进行检查与修改,无须等待对方的应答,所以会出现分组丢失、重复、乱序,应用程序需要负责传输可靠性方面的所有工作;UDP 具有较好的实时性,工作效率较 TCP 协议高;UDP 段结构比 TCP 的段结构简单,因此网络开销也小。TCP 协议可以保证接收端毫无差错地接收到发送端发出的字节流,为应用程序提供可靠的通信服务。对可靠性要求高的通信系统往往使用 TCP 传输数据。

8.C/S模型
1.特点
非对等相互作用,服务器有客户端不具备的硬件和软件资源、运算能力,服务器提供服务,客户请求服务。

2.客户端和服务器的数量关系
多个客户进程可以同时访问一个服务进程,一个客户进程可以同时访问多个服务器提供的服务。

3.客户端和服务器的位置关系
客户端和服务器运行在同一个机器上,应用于网络应用程序开发测试。
客户端和服务器运行在同一个局域网内的不同机器上,应用于局域网文件共享、局域网打印机。
客户端和服务器运行与广域网不同网络内的机器上,应用于最常见的网络应用程序。

4.客户端和服务器的角色关系
应用程序作为纯粹的客户运行,如Web服务器。
应用程序作为纯粹的服务器运行,如局部基本功能的ftp服务器。
应用程序同时具备客户和服务器的两种角色。

5.工作过程
服务器首先启动监听程序,对指定的端口进行监听,等待接收客户端的连接请求。
客户端启动程序,请求连接服务器的指定端口。
服务器收到客户端的连接请求后,与客户端建立套接字连接。
连接建立成功,客户端与服务器分别打开两个流,其中客户端的输入流连接到服务器的输出流,服务器的输入流连接到客户端的输出流,两边的流连接成功后进行双向通信。
当通信完毕后,客户端和服务器两边各自断开连接。

6.优点
结构简单。
支持分布式、并发环境,有效提高资源的利用率和共享程度。
服务器集中管理资源,有利于权限控制和系统安全。
可扩展性较好,客户和服务器均可单独升级。

7.模型组成
客户端程序+服务器程序,如微信客户端版、PC版的网络游戏。

8.DNS
万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。每个IP地址都可以有一个主机名,主机名由一个或多个字符串组成,字符串之间用小数点隔开。有了主机名,就不要死记硬背每台IP设备的IP地址,只要记住相对直观有意义的主机名就行了。这就是DNS协议的功能。

9在浏览器中输入www.baidu.com后执行的全部过程

1)客户端浏览器通过DNS解析到www.baidu.com的IP地址220.181.27.48,通过这个IP地址找到客户端到服务器的路径。客户端浏览器发起一个HTTP会话到220.161.27.48,然后通过TCP进行封装数据包,输入到网络层。

2)在客户端的传输层,把HTTP会话请求分成报文段,添加源和目的端口,如服务器使用80端口监听客户端的请求,客户端由系统随机选择一个端口如5000,与服务器进行交换,服务器把相应的请求返回给客户端的5000端口。然后使用IP层的IP地址查找目的端。

3)客户端的网络层不用关系应用层或者传输层的东西,主要做的是通过查找路由表确定如何到达服务器,期间可能经过多个路由器,这些都是由路由器来完成的工作,我不作过多的描述,无非就是通过查找路由表决定通过那个路径到达服务器。

4)客户端的链路层,包通过链路层发送到路由器,通过邻居协议查找给定IP地址的MAC地址,然后发送ARP请求查找目的地址,如果得到回应后就可以使用ARP的请求应答交换的IP数据包现在就可以传输了,然后发送IP数据包到达服务器的地址。

  1. 为什么连接建立需要三次握手,而不是两次握手?

防止失效的连接请求报文段被服务端接收,从而产生错误。

PS:失效的连接请求:若客户端向服务端发送的连接请求丢失,客户端等待应答超时后就会再次发送连接请求,此时,上一个连接请求就是『失效的』。

若建立连接只需两次握手,客户端并没有太大的变化,仍然需要获得服务端的应答后才进入ESTABLISHED状态(打开),而服务端在收到连接请求后就进入ESTABLISHED状态。此时如果网络拥塞,客户端发送的连接请求迟迟到不了服务端,客户端便超时重发请求,如果服务端正确接收并确认应答,双方便开始通信,通信结束后释放连接。此时,如果那个失效的连接请求抵达了服务端,由于只有两次握手,服务端收到请求就会进入ESTABLISHED状态,等待发送数据或主动发送数据。但此时的客户端早已进入CLOSED状态,服务端将会一直等待下去,这样浪费服务端连接资源。

  1. 为什么要四次挥手

因为TCP有个半关闭状态,假设A.B要释放连接,那么A发送一个释放连接报文给B,B收到后发送确认,这个时候A不发数据,但是B如果发数据A还是要接受,这叫半关闭。然后B还要发给A连接释放报文,然后A发确认,所以是4次。(服务端的ack和fin不能同时发送)

  1. 为什么客户端要先进入TIME-WAIT状态,等待2MSL时间后才进入CLOSED状态?

为了保证服务端能收到客户端的确认应答。若客户端发完确认应答后直接进入CLOSED状态,那么如果该应答丢失,服务端等待超时后就会重新发送连接释放请求,但此时客户端已经关闭了,不会作出任何响应,因此服务端永远无法正常关闭。

13.什么是cookie
Cookie实际上是一小段的文本信息(key-value格式)。客户端向服务器发起请求,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。

14.cookie和session的区别
Session是在服务端保存的一个数据结构,用来跟踪用户的状态,这个数据可以保存在集群、数据库、文件中;

Cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一种方式。

15.HTTP的长连接和短连接?
HTTP的长连接和短连接本质上是TCP长连接和短连接。HTTP属于应用层协议.

短连接:浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。

长连接:当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的 TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接。Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。实现长连接要客户端和服务端都支持长连接。

TCP短连接: client向server发起连接请求,server接到请求,然后双方建立连接。client向server发送消息,server回应client,然后一次读写就完成了,这时候双方任何一个都可以发起close操作,不过一般都是client先发起 close操作.短连接一般只会在 client/server间传递一次读写操作

TCP长连接: client向server发起连接,server接受client连接,双方建立连接。Client与server完成一次读写之后,它们之间的连接并不会主动关闭,后续的读写操作会继续使用这个连接。

16.IP地址的分类
A类地址:以0开头, 第一个字节范围:0~127(1.0.0.1 - 126.255.255.254);

B类地址:以10开头, 第一个字节范围:128~191(128.0.0.1 - 191.255.255.254);

C类地址:以110开头, 第一个字节范围:192~223(192.0.0.1- 223.255.255.254);

17.各种网络协议
ARP是地址解析协议,简单语言解释一下工作原理。
1:首先,每个主机都会在自己的ARP缓冲区中建立一个ARP列表,以表示IP地址和MAC地址之间的对应关系。

2:当源主机要发送数据时,首先检查ARP列表中是否有对应IP地址的目的主机的MAC地址,如果有,则直接发送数据,如果没有,就向本网段的所有主机发送ARP数据包,该数据包包括的内容有:源主机IP地址,源主机MAC地址,目的主机的IP地址。

3:当本网络的所有主机收到该ARP数据包时,首先检查数据包中的IP地址是否是自己的IP地址,如果不是,则忽略该数据包,如果是,则首先从数据包中取出源主机的IP和MAC地址写入到ARP列表中,如果已经存在,则覆盖,然后将自己的MAC地址写入ARP响应包中,告诉源主机自己是它想要找的MAC地址。

4:源主机收到ARP响应包后。将目的主机的IP和MAC地址写入ARP列表,并利用此信息发送数据。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。
广播发送ARP请求,单播发送ARP响应。

ICMP协议:因特网控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。
TFTP协议:是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。
HTTP协议:超文本传输协议,是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。
DHCP协议:动态主机配置协议,是一种让系统得以连接到网络上,并获取所需要的配置参数手段。一个局域网的网络协议,使用UDP协议工作,用途:给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段。
NAT协议:网络地址转换属接入广域网(WAN)技术,是一种将私有(保留)地址转化为合法IP地址的转换技术,
RARP
RARP是逆地址解析协议,作用是完成硬件地址到IP地址的映射,主要用于无盘工作站,因为给无盘工作站配置的IP地址不能保存。工作流程:在网络中配置一台RARP服务器,里面保存着IP地址和MAC地址的映射关系,当无盘工作站启动后,就封装一个RARP数据包,里面有其MAC地址,然后广播到网络上去,当服务器收到请求包后,就查找对应的MAC地址的IP地址装入响应报文中发回给请求者。因为需要广播请求报文,因此RARP只能用于具有广播能力的网络。

18.IP地址的作用,以及MAC地址的作用。
MAC地址是硬件地址,用来定义网络设备的位置,主要由数据链路层负责;IP地址是IP协议提供的一种统一的地址格式,为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。

19,请你说一说TCP拥塞控制?以及达到什么情况的时候开始减慢增长速度。
答:拥塞控制是防止过多的数据注入网络,使得网络中的路由器或者链路过载。流量控制是点对点的通信量控制,而拥塞控制是全局的网络流量整体性的控制。发送双方都有一个拥塞窗口(cwnd)。
(1)慢开始:最开始发送方的拥塞窗口为1,由小到大递增。每经过一个传输轮次,拥塞窗口cwnd加倍(乘2)。当cwnd超过慢开始门限,则使用拥塞避免算法,避免cwnd增长过长。
(2)拥塞避免(算法):当cwnd超过慢开始门限,每经过一个往返时间RTT,cwnd就增长1。在慢开始和拥塞避免过程中,一旦发现网络拥塞,就把慢开始门限设置为当前值的一半,并且重新设置cwnd为1,重新慢启动。
(3)快重传:接收方每收到一个失序的报文段后就立即发出重复确认,发送方只要收到3个重复确认就立即重传。
(4)快恢复:当发送方连续收到三个重复确认,就将慢开始门限减半,将当前的窗口设置为慢开始门限,并采用拥塞避免算法。(采用快恢复算法时,慢开始只在建立连接和网络超时时才使用)

19.请你说说传递到IP层怎么知道报文该给哪个应用程序,它怎么区分UDP报文还是TCP报文?
根据端口区分;看ip头中的协议标识字段,17是udp,6是tcp。

20.请你说一下GET和POST的区别。
答:(1)概括:对于GET方式请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);而对于POST方式请求,浏览器会先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。
(2)区别:
1)get参数通过url传递,post放在request body中。
2)get请求在URL中传递参数的长度有限制(根据浏览器不同长度限制也不同),而post没有
3)get比post更不安全,因为参数暴露在URL中
4)get请求只能进行url编码,post支持多种编码方式
5)get 请求会被浏览器主动cache (缓存),post 则不会,除非手动设置
6)get请求会完整保留在浏览历史记录里,而post中的参数不会被保留
7)get和post本质上是TCP连接,并无差别,但是由于http的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同
8)GET产生一个TCP数据包,post产生两个数据包。

21.请说一下阻塞,非阻塞,同步,异步。
答:阻塞和非阻塞:调用者在事件没有发生的时候,一直等待事件发生,不能处理其他任务是阻塞。调用者在事件没有发生的时候,可以去处理别的事务这是非阻塞。
同步和异步:调用者循环查看事件有没有发生,这种情况是同步。调用者不用自己去查看事件有没有发生,而是等待注册在时间上的回调函数自己通知自己,这是异步。

22.请你简单说一下http协议。
HTTP是一个基于TCP/IP通信协议来传递数据的协议。HTTP是一个属于应用层的面向对象的协议。HTTP协议工作于客户端-服务端架构之上,浏览器作为HTTP客户端通过URL向Web服务器发送所有请求,Web服务器根据接收到到的请求向客户端发送相应信息。
2)特点:①简单快速:客户端向服务器发送请求时,只需传送请求方法和路径即可。②灵活:HTTP允许传输任意类型的数据对象。③无连接:限制每次连接只处理一个请求。服务器处理完客户请求,并收到客户应答后,即断开连接。④无状态:协议对于事务处理没有记忆能力。⑤支持B/S及C/S模式。⑥默认端口80。⑦基于TCP协议。
3)HTTP过程概述:
HTTP协议定义Web客户端如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户端。HTTP协议采用请求/响应模型。客户端向服务器发送一个请求报文,请求报文包含请求方法、URL、协议版本、请求头部和请求数据。服务器以一个状态行作为响应,响应内容包括协议版本、成功或者错误的代码、服务器信息、响应头部和响应数据。
23.请你简单说一下数字证书是什么,里面包含哪些内容。
答:数字证书是在一个身份和该身份的持有者所拥有的的公/私钥对之间建立的一种联系,由认证中心(CA)或认证中心的下一级认证中心颁发。根证书是认证中心与用户之间建立信任的基础。在用户使用数字证书之间必须首先下载和安装。
认证中心(CA)是一家能向用户签发数字证书以确认用户身份的管理机构。为了防止数字凭证的伪造,认证中心的公共秘钥必须是可靠的,认证中心必须公布其公共密钥或由更高级的认证中心提供一个电子凭证来证明其公共密钥的有效性,后一种方法导致了多级别认证中心的出现。
内容包括:(1)证书的版本信息;(2)证书的序列号;(3)证书所使用的签名算法;(4)证书的发行机构名称;(5)证书的有效期;(6)证书所有人的名称;(7)证书所有人的公开密钥;(8)证书发行者对证书的签名。

24.面向连接和非面向连接的服务的特点是什么?

面向连接的服务,通信双方在进行通信之前,要先在双方建立起一个完整的可以彼此沟通的通道,在通信过程中,整个连接的情况一直可以被实时地监控和管理。

非面向连接的服务,不需要预先建立一个联络两个通信节点的连接,需要通信的时候,发送节点就可以往网络上发送信息,让信息自主地在网络上去传,一般在传输的过程中不再加以监控。

25.HTTP1.0和HTTP1.1的一些区别
(1)缓存处理,在HTTP1.0中主要使用header里的If-Modified-Since,Expires来做为缓存判断的标准,HTTP1.1则引入了更多的缓存控制策略例如Entity tag,If-Unmodified-Since, If-Match, If-None-Match等更多可供选择的缓存头来控制缓存策略。

(2)带宽优化及网络连接的使用,HTTP1.0中,存在一些浪费带宽的现象,例如客户端只是需要某个对象的一部分,而服务器却将整个对象送过来了,并且不支持断点续传功能,HTTP1.1则在请求头引入了range头域,它允许只请求资源的某个部分,即返回码是206(Partial Content),这样就方便了开发者自由的选择以便于充分利用带宽和连接。

(3)错误通知的管理,在HTTP1.1中新增了24个错误状态响应码,如409(Conflict)表示请求的资源与资源的当前状态发生冲突;410(Gone)表示服务器上的某个资源被永久性的删除。

(4)Host头处理,在HTTP1.0中认为每台服务器都绑定一个唯一的IP地址,因此,请求消息中的URL并没有传递主机名(hostname)。但随着虚拟主机技术的发展,在一台物理服务器上可以存在多个虚拟主机(Multi-homed Web Servers),并且它们共享一个IP地址。HTTP1.1的请求消息和响应消息都应支持Host头域,且请求消息中如果没有Host头域会报告一个错误(400 Bad Request)。

(5)长连接,HTTP 1.1支持长连接(PersistentConnection)和请求的流水线(Pipelining)处理,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟,在HTTP1.1中默认开启Connection: keep-alive,一定程度上弥补了HTTP1.0每次请求都要创建连接的缺点。

(6)HTTP1.1增加了OPTIONS, PUT, DELETE, TRACE, CONNECT这些Request方法.

26.Http2.0与Http1.x的一些区别
(1)新的二进制格式(Binary Format),HTTP1.x的解析是基于文本。基于文本协议的格式解析存在天然缺陷,文本的表现形式有多样性,要做到健壮性考虑的场景必然很多,二进制则不同,只认0和1的组合。基于这种考虑HTTP2.0的协议解析决定采用二进制格式,实现方便且健壮。

(2)多路复用(MultiPlexing),即连接共享,即每一个request都是是用作连接共享机制的。一个request对应一个id,这样一个连接上可以有多个request,每个连接的request可以随机的混杂在一起,接收方可以根据request的 id将request再归属到各自不同的服务端请求里

(3)header压缩,如上文中所言,对前面提到过HTTP1.x的header带有大量信息,而且每次都要重复发送,HTTP2.0使用encoder来减少需要传输的header大小,通讯双方各自cache一份header fields表,既避免了重复header的传输,又减小了需要传输的大小。

(4)服务端推送(server push),同SPDY一样,HTTP2.0也具有server push功能。例如我的网页有一个sytle.css的请求,在客户端收到sytle.css数据的同时,服务端会将sytle.js的文件推送给客户端,当客户端再次尝试获取sytle.js时就可以直接从缓存中获取到,不用再发请求了。

27,转发(Forward)和重定向(Redirect)的区别
转发是服务器行为,重定向是客户端行为
1.转发在服务器端完成的;重定向是在客户端完成的

2.转发的速度快;重定向速度慢

3.转发的是同一次请求;重定向是两次不同请求

4.转发不会执行转发后的代码;重定向会执行重定向之后的代码

5.转发地址栏没有变化;重定向地址栏有变化

6.转发必须是在同一台服务器下完成;重定向可以在不同的服务器下完成

28.Http和Https的基本概念
Http:超文本传输协议(Http,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。设计Http最初的目的是为了提供一种发布和接收HTML页面的方法。它可以使浏览器更加高效。Http协议是以明文方式发送信息的,如果黑客截取了Web浏览器和服务器之间的传输报文,就可以直接获得其中的信息。HTTP协议和TCP协议是不冲突的,HTTP定义在七层协议中的应用层,TCP解决的是传输层的逻辑。HTTP使用TCP而不是UDP的原因在于(打开)一个网页必须传送很多数据,而TCP协议提供传输控制,按顺序组织数据,和错误纠正。
特点:
无状态:协议对客户端没有状态存储,对事物处理没有“记忆”能力,比如访问一个网站需要反复进行登录操作
无连接:HTTP/1.1之前,由于无状态特点,每次请求需要通过TCP三次握手四次挥手,和服务器重新建立连接。比如某个客户机在短时间多次请求同一个资源,服务器并不能区别是否已经响应过用户的请求,所以每次需要重新响应请求,需要耗费不必要的时间和流量。
基于请求和响应:基本的特性,由客户端发起请求,服务端响应
简单快速、灵活
通信使用明文、请求和响应不会对通信方进行确认、无法保护数据的完整性

Https:是以安全为目标的Http通道,是Http的安全版。Https的安全基础是SSL。SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。SSL协议可分为两层:SSL记录协议(SSL Record Protocol),它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。SSL握手协议(SSL Handshake Protocol),它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。

29.Http与Https的区别
(1)https协议需要到CA申请证书,一般免费证书较少,因而需要一定费用。(原来网易官网是http,而网易邮箱是https。)

(2)http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。

(3)http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

(4)http的连接很简单,是无状态的。Https协议是由SSL+Http协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。(无状态的意思是其数据包的发送、传输和接收都是相互独立的。无连接的意思是指通信双方都不长久的维持对方的任何信息。)

30.token
token的意思是“令牌”,是用户身份的验证方式,最简单的token组成:uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名,由token的前几位+盐以哈希算法压缩成一定长的十六进制字符串,可以防止恶意第三方拼接token请求服务器)。还可以把不变的参数也放进token,避免多次查库

31.https
https原理:

1.http为什么不安全?
因为HTTP协议通信使用明问,内容可能被窃听,不验证通信方的身份,因此有可能遭到伪装,无法确定请求发送至目标的web服务器是否是按真实意图返回响应的那台服务器,有可能是已伪装的web服务器。无法确定响应返回到的客户端是否是按真实意图接收响应的那个客户端,有可能是已伪装的客户端。无法判定请求是来自何方、出自谁手,即使是无意义的请求也会照单全收,无法阻止海量请求下的dos攻击。无法验证报文的完整性,所以有可能被篡改,由于HTTP协议无法证明通信的报文完整性,因此,在请求或响应送出之后直到对方接收之前的这段时间内,即使请求或响应的内容遭到篡改,也没有办法获悉。而且无法处理中间人攻击,为了解决上述问题,采用了http加ssl的方式,https并非是应用层的一种新协议。只是HTTP通信接口部分用ssl和Tls协议替代,通常HTTP直接和TCP通信,当使用SSL时,则演变成先和ssl通信,再由SSL和TCP通信。

2.加密方式
近代的加密方法中加密算法时公开的,而密钥却时保密的,通过这种方式得以保持加密方法得安全性。加密和解密都会用到密钥。没有密钥就无法对密码解密,反过来说,任何人只要持有密钥就能解密了,如果密钥被攻击者获得,那加密也就失去了意义。从加密方式划分又可以分为对称加密与非对称加密,对称加密和解密通用一个密钥。堆成加密又分为流加密和分组加密。流加密将消息作为位流对待,并且使用函数分别作用再每一个位上,使用流加密时,每加密一次,相同得明文位会转换成不同得密文位,流加密使用了密钥流生成器,它生成得位流与明问位进行异或,从而生成密文。现在常用得就是RC4,不过RC4已经不再安全,微软已经建议不要使用,分组加密则时将消息划分位若干位分组,这些分组随后会通过数学函数进行处理,每次一个分组,假设需要加密发生给对端得消息,并且使用得64位得分组密码,此时如果消息长度为640位,就会被划分成10个64位得分组,每个分组都用一系列数学公式进行处理,最后得到10个加密文本分组。然后,将这条密文消息发送给对端。对端必须拥有相同得分组密码,以相反得顺序对密文分组使用前面得算法解密,最终得到明文得消息,比较常用得分组加密算法有DES/3DES/AES。其中DES时比较老得加密算法,现在已经被证明不安全。对称加密得优点时算法公开。计算量小、加密速度快、加密效率高。缺点时交易双方都使用同样得钥匙,安全性得不到保证。每次对用户每次使用对称加密算法时,都需要使用其他人不知道得唯一钥匙,这会使得收发双方所拥有得钥匙数量呈几何级数增长,密钥管理成为用户得负担。能提供机密性,但是不能提供验证和不可否认性。而非对称加密则有两把密钥,一把叫做私有密钥,另一把叫做公开密钥。在非对称密钥交换算法出现之前,堆成加密一个很大得问题就是不知道如何安全生成和保管密钥。非对称密钥交换过程主要就是为了解决这个问题,使得对称密钥得生成和使用更加安全。密钥交换算法本身非常复杂,密钥交换过程涉及到随机数生成,模指数运算,空白补齐,加密,签名等操作。常见得密钥交换算法有RSA/ECDHE/DH/DHE等算法,涉及到比较复杂得数学问题。RSA得算法实现简单,安全性高,缺点就是需要比较大得素数也就是质数来保证安全强度,很消耗CPU运算资源,RSA是目标唯一一个既能用于密钥交换又能用于证书签名得算法。RSA可以算是最经典得非对称加密算法了。非对称加密相比对称加密更加安全,但也存在两个明显缺点,第一个是CPU计算资源消耗非常大,一次完全得TLS握手,密钥交换时得非对称解密计算量占整个握手过程得90%以上,而对称加密得计算量只相当于非堆成加密得0.1%,如果应用层数据也使用非对称加解密,性能开销太大,无法承受。第二个是非对称加密算法对加密内容得长度有限制,不能超过公钥长度,比如现在常用得公钥长度是2048位,意味着待加密内容不能超过256个字节。所以公钥加密目前只能用来作密钥交换或者内容签名,不适合用来做应用层传输内容得加解密。另外,要想根据密文和公钥,恢复到信息原文是非常困难得,因为解密过程就是在对离散对数进行求值,这并非轻而易举就能办到。由于使用非对称加密能够保证安全,但是效率却大大降低,所以为了改进这个问题,可以采用混合加密机制,既使用非堆成密钥传输对称密钥,后续安全获得对称密钥后,再使用对称密钥加密通信。但是这种方式也存在问题,如果出现了中间人攻击,中间人劫持公钥后,发送给对方伪造公钥,对方用伪造公钥进行加密传输,再次被拦截,用中间人用自己得私钥进行解密,此刻中间人就会得到对称加密密钥。

3.ssl与tls
https使用ssl和TLS这两个协议,TSL是以SSL为原型开发得协议,有时会统一称为SSL,SSL得速度慢主要分为两种,一种是指通信慢,另一种是指由于大量消耗CPU及内存等资源,导致处理速度变慢,和使用http相比,网络负载可能会变慢2到100倍,除去和TCP链接,发送HTTP请求响应以外,还必须进行SSL通信,因此整体上处理通信量不可避免会增加。另一点是SSL必须进行加密处理。再服务器和客户端都需要进行加密和解密得运算处理。因此从结果上讲,比起Http会更多地消耗服务器和客户端得硬件资源,导致负载增强。针对速度变慢这一问题,并没有根本性得解决方案,我们会使用SSL加速器这种硬件来改善该问题。该硬件为SSL通信专用硬件,相对软件来讲,能够提高数倍SSL得计算速度。仅在SSL处理时发挥SSL加速器得功效,以分担负载。

4.身份认证
https协议中身份认证得部分是由数字证书来完成得,证书由公钥、证书主体和数字签名等内容组成。再客户端发起SSL请求后,服务端会讲数字证书发送给客户端,客户端会对证书进行验证,并获取公钥。数字证书有两个作用,一是身份授权,确保浏览器访问得网站时经过CA验证得可信任得网站。二是分发公钥,每个数字证书都包含了注册者生成的公钥,在SSL握手时会通过消息传输给客户端。

5.证书申请流程
第一步,服务器得运营人员向数字证书认证机构提出公钥得申请。第二步,证书注册及审核机构检查实体得合法性,第三步,证书签发机构数字证书认证机构在判明提出申请者得身份之后,会对已申请得公开密钥做数字签名,然后分配这个已签名得公开密钥,并将该公开密钥放入公钥证书后绑定在一起。第四步,证书更新到证书存储库,终端后续从该存储库更新证书以及查询证书状态等。

6.证书认证流程
第一步,服务器会将这份由数字证书认证呢机构颁发得公钥证书发送给客户端,以进行公开密钥加密方式通信。公钥证书也可叫做数字证书。第二步,接到证书得客户端可使用数字证书认证机构得公开密钥,对证书上得数字签名进行验证,一旦验证通过,客户端便可明确两件事,认证服务器得公开密钥得时真实有效的数字证书认证机构,服务器得公开密钥时值得信赖得。第三步,此处认证机关得公开密钥必须安全地转交给客户端,使用通信方式时,如何安全转交是一件很困难得事,因此,多数浏览器开发商发布版本时,会事先在内部植入常用认证机关得公开密钥。

7.数字签名得制作和验证过程
数字签名得签发,首先时使用哈希函数对待签名内容进行安全哈希,生成消息摘要,然后使用CA自己的私钥对消息摘要进行加密。数字签名的校验,使用CA的公钥解密签名,然后使用相同的签名函数对待签名证书内容进行签名并和服务端数字签名里的签名内容进行比较,如果相同就认为校验成功。需要注意的是,1.数字签名签发和校验使用的密钥对是CA自己的公私密钥,跟证书申请者提交的公钥没有关系。2.数字签名的签发过程跟公钥加密的过程刚好相反,即是用私钥加密,公钥解密。3.现在大的CA都会有证书链,证书链的好处一是安全,保持根CA的私钥离线使用。第二个好处是方便部署和撤销,即如果证书出现问题,只需要撤销相应级别的证书,根证书依然安全。4.根CA证书都是自签名,即用自己的公钥和私钥完成了签名的制作和验证。而证书链上的证书签名都是使用上一级证书的密钥对完成签名和验证的。5.怎样获取根CA和多级CA的密钥对?它们是否可信?当然可信,因为这些厂商跟浏览器和操作系统都有合作,它们的公钥都默认装到了浏览器或者操作系统环境里。

8.EV SSL证书
用来证明作为通信一方的服务器是否规范,另外一个作用是可确认对方服务器背后运营的企业是否真实存在,EV SSL证书是基于国际标准的认证指导方针颁发的证书。其严格规定了对运营组织是否真实的确认方针,因此,通过认证的Web网站能够获得更高的认可度。持有EV SSL证书的Web网站的浏览器地址栏处有绿色的锁头标识,从视觉上就能一眼辨别出。

9.客户端证书
HTTPS中还可以使用客户端证书。以客户端证书进行客户端认证,证明服务器正在通信的对方始终是预料之内的客户端,其作用跟服务器证书如出一辙。但客户端证书仍存在几处问题点。其中的一个问题点是证书的获取及发布。想获取证书时,用户得自行安装客户端证书。但由于客户端证书是要付费购买的,且每张证书对应到每位用户也就意味着需支付和用户数对等的费用。另外,要让知识层次不同的用户们自行安装证书,这件事本身也充满了各种挑战。现状是,安全性极高的认证机构可颁发客户端证书但仅用于特殊用途的业务。比如那些可支撑客户端证书支出费用的业务。例如,银行的网上银行就采用了客户端证书。在登录网银时不仅要求用户确认输入ID和密码,还会要求用户的客户端证书,以确认用户是否从特定的终端访问网银。客户端证书存在的另一个问题点是,客户端证书毕竟只能用来证明客户端实际存在,而不能用来证明用户本人的真实有效性。也就是说,只要获得了安装有客户端证书的计算机的使用权限,也就意味着同时拥有了客户端证书的使用权限。

10.数据完整性
数据传输过程中的完整性使用MAC算法来保证。为了避免网络中传输的数据被非法篡改,SSL利用基于MD5或SHA的MAC(Message Autahentication Code)算法来保证消息的完整性。MAC(Message Autahentication Code)算法是在密钥参与下的数据摘要算法,能将密钥和任意长度的数据转换为固定长度的数据。发送者在密钥的参与下,利用MAC算法计算出消息的MAC值,并将其加在消息之后发送给接收者。接收者利用同样的密钥和MAC算法计算出消息的MAC值,并与接收到的MAC值比较。如果二者相同,则报文没有改变;否则,报文在传输过程中被修改,接收者将丢弃该报文。

11.https得安全通信流程
步骤一,客户端发送client hello报文开始SSL通信,报文中包含了随机数、sessionID、密文族。sessionID得作用时当对话中断时,可以进行重连,步骤二,服务器可进行SSL通信时,会以Server Hello报文作为应答。和客户端一样,在报文中包含回复三个数据包,包括 Server Hello, 证书名称,证书状态。服务器的加密组件内容是从接收到的客户端加密组件内筛选出来的。步骤三,服务器发送证书报文。报文中包含公开密钥证书。步骤四,服务器发送Server Hello Done报文通知客户端,最初阶段的SSL握手协商部分结束。步骤五,客户端验证证书真伪,验证主要包括,证书链得可信性,证书是否吊销,有效期,核查证书域名是否与当前得访问域名匹配,然后进行密钥交换,首先,利用非对称加密实现身份认证和密钥协商,利用非对称加密,协商好加解密数据的对称秘钥(外加CA认证,防止中间人窃取对称秘钥)2.然后,对称加密算法采用协商的密钥对数据加密,客户端和服务器利用 对称秘钥 进行通信;3.最后,基于散列函数验证信息的完整性,确保通信数据不会被中间人恶意篡改。此时客户端已经获取全部的计算协商密钥需要的信息,计算得到协商对称密钥;SSL第一次握手结束之后,客户端以Client Key Exchange报文作为回应。报文中包含通信加密中使用的一种被称为Pre-master secret的随机密码串。该报文已用步骤3中的公开密钥进行加密。步骤六,客户端继续发送Change Cipher Spec报文。该报文会提示服务器,在此报文之后的通信会采用Pre-master secret密钥加密。步骤七,客户端发送Finished报文。该报文包含连接至今全部报文的整体校验值。这次握手协商是否能够成功,要以服务器是否能够正确解密该报文作为判定标准。步骤八,服务器同样发送Change Cipher Spec报文,步骤九,服务器同样发送Finished报文,步骤10,服务器和客户端的Finished报文交换完毕之后,SSL连接就算建立完成。当然,通信会受到SSL的保护。从此处开始进行应用层协议的通信,即发送HTTP请求。步骤11,应用层协议通信,即发送HTTP响应。

12.为什么不一直使用HTTPS
其中一个原因是,因为与纯文本通信相比,加密通信会消耗更多的CPU及内存资源。如果每次通信都加密,会消耗相当多的资源,平摊到一台计算机上时,能够处理的请求数量必定也会随之减少。

因此,如果是非敏感信息则使用HTTP通信,只有在包含个人信息等敏感数据时,才利用HTTPS加密通信。特别是每当那些访问量较多的Web网站在进行加密处理时,它们所承担着的负载不容小觑。在进行加密处理时,并非对所有内容都进行加密处理,而是仅在那些需要信息隐藏时才会加密,以节约资源。除此之外,想要节约购买证书的开销也是原因之一。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值