第29篇

1、https协议的优点?

1)使用HTTPS协议可认证用户和服务器;

2)确保数据发送到正确的客户端和服务器;

3) HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全,

可防止数据在传输过程中不被窃取、改变、确保数据的完整性。

4)HTTPS是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本。

5)谷歌曾在2014年8月调整搜索引擎算法,并称“比起同等HTTP网站,采用HTTPS加密的网站在搜索结果中的排名将会更高”

2、https协议的缺点?

https握手阶段比较费时,会使页面加载时间延长50%,增加10%~20%的耗电。

https缓存不如http高效,会增加数据开销。

SSL证书也需要钱,功能越强大的证书费用越高。

SSL证书需要绑定IP,不能在同一个IP上绑定多个域名,

ipv4资源支持不了这种消耗。

3、TCP三次握手,一句话概括?  参考链接:https://blog.csdn.net/b954960630/article/details/81861579

1)图的名词解释?

【1】SYN:同步序号,表示建立连接。TCP规定SYN=1时不能携带数据,但要消耗一个序号,因此随即选取一个序列号

seq=x数据包(该数据包里就是一个标记seq,并没有任何有效的数据)。

【2】ACK:确认序号,表示响应(都能响应了,那上一步就连接成功了,所以说ACK=1表示确认连接成功)。因此SYN和

ACK同时为1,表示建立连接之后的响应。而只是单个的SYN=1,表示的只是建立连接。

【3】seq:序列号(sequence number),发送数据包的初始序列号。seq=x表示发送端数据包的初始序列号为x。

【4】ack:确认号(acknowledge number),这次收到数据包的确认,以及对下次收到数据包的期待。ack=x+1表示我方到x为止,所有的数据

都已正确收到,且我方告知对方:我期待你下次给我发送包的初始序号seq为x+1。

可以这么理解:SYN/ACK是TCP协议层面的标记,而seq/ack是数据层面的标记

2)过程解释

【1】首先client向server发起连接,SYN = 1, seq = x;

因为要建立连接,所以SYN=1;又因为TCP规定SYN=1时不能携带数据,但要消耗一个序号,所以client随机选取一个初始序号

seq=x。(因为并没有响应动作,所以认为ACk=0)。发送后client进入syn-sent状态,表示客户端等待服务器的回复。

【2】server收到请求后,再向client发送确认。SYN=1, ACK=1, seq=y, ack=x+1

因为server建立连接后做出了响应,所以SYN=1,ACK=1。因为TCP规定SYN=1时不能携带数据,但要消耗一个序号,所以

server随机选取一个初始序号seq=y。又因为server到x为止的所有数据都已正确收到了,且server告诉client:我期待你下次给我发送

包的初始序号(seq)是x+1,所以ack=x+1。  发送后服务器进入syn_rcvd,表示服务器已经收到client的连接请求,等待clientde

确认。

【3】client收到确认后还需再次发送确认,同时携带要发送给server的数据:ACK=1, seq=x+1,ack=y+1;连接建立

因为有响应动作,所以ACK=1(因为要携带发送的数据,所以这儿没SYN什么事)。因为【2】中Server已经告诉了这次它

想收到包的初始序号是x+1,所以初始序号为seq=x+1。又因为client到y为止的所有数据都已经正确收到了,准备接受序号为

y+1的包,所以ack=y+1。server收到后,这个TCP连接就进入Established状态,就可以发起http请求。

3)为什么不能改成两次握手?

有人困惑为什么要进行三次握手呢(两次确认)?这主要是为了防止已失效的请求连接报文忽然又传送到了,从而产生错误。

假定A向B发送一个连接请求,由于一些原因,导致A发出的连接请求在一个网络节点逗留了比较长的时间。此时A会将此

连接请求作为五效处理,又重新向B发起了一次新的连接请求,B正常收到此连接请求后建立了连接,数据传输完成后释放了

连接。如果此时A发出的第一次请求又到达了B,B会以为A有发起了一次连接请求。如果是两次握手,此时连接就建立了,

b会一直等待A发送数据,从而白白浪费B的资源。如果是三次握手:由于A没有发起连接请求,也就不会理会B的连接相应,

B没有收到A的确认链接,就会关掉本次链接。

4、TCP和UDP的区别?

1)TCP是面向连接的,UDP是无连接的即发送数据前不需要建立连接。

2)TCP提供可靠的服务,也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达。

UDP尽最大努力交付,即不保证可靠交付。并且因为TCP可靠,面向连接,不会丢失数据,因此适合大数据量的交换。

3)TCP是面向字节流,UDP面向报文。

4)TCP只能是1对1,UDP支持1对1,1对多。

5)TCP的首部较大为20字节,而UDP只有8字节。

6)TCP是面向连接的可靠性传输,而UDP是不可靠的。

5)什么是WebSocket?

WebSocket是HTML5中的协议,支持持久连接,http协议不支持持久性连接。

在WebSocket中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。

HTTP1.0和HTTP1.1都不支持持久性连接,HTTP1.1中的keep-alive,可以将多个http请求合并为1个。

原文地址:https://www.cnblogs.com/huen2015/p/11196626.html