• 第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个。

  • 相关阅读:
    学员操作——隔行变色
    jQuery基础及选择器(1)
    学员操作——组合继承
    JavaScript面向对象
    学员操作——创建继承person的student子类
    学员操作——flower函数
    JavaScript操作DOM(2)
    JavaScript操作DOM(1)
    学员操作——制作秒表定时器
    学员操作——制作5s关闭广告
  • 原文地址:https://www.cnblogs.com/huen2015/p/11196626.html
Copyright © 2020-2023  润新知