HTTP和HTTPS的区别和常见的面试题

本篇会着重介绍http和https的区别和常见的面试题css

常见的http和https面试题:html

  • Http与Https的基本概念和他们的区别
  • HTTPS工做原理
  • 经常使用的HTTP方法有哪些
  • GET方法与POST方法的区别,何时应该使用GET何时应该使用POST
  • HTTP请求报文与响应报文格式
  • 常见的HTTP的状态码
  • HTTP1.0,1.1,2.0之间的区别和特性
  • 常见HTTP首部字段
  • HTTP的缺点与HTTPS有哪些改进
  • HTTP优化
  • 一个页面从输入 URL 到页面加载显示完成,这个过程当中都发生了什么?
  • 为何HTTPS安全

以上就是我进行总结的http和https的面试问题,接下来我会对每一个问题予以解答分析,相信带着问题看答案会印象更深入web

 Http与Https的基本概念和他们的区别

http的中文叫作超文本传输协议,它负责完成客户端到服务端的一系列操做,是专门用来传输注入HTML的超媒体文档等web内容的协议,它是基于传输层的TCP协议的应用层协议面试

https:https是基于安全套接字的http协议,也能够理解为是http+ssl/tls(数字证书)的组合浏览器

http和https的区别:缓存

  • HTTP 的 URL 以 http:// 开头,而 HTTPS 的 URL 以 https:// 开头
  • HTTP 是不安全的,而 HTTPS 是安全的
  • HTTP 标准端口是 80 ,而 HTTPS 的标准端口是 443
  • 在 OSI 网络模型中,HTTPS的加密是在传输层完成的,由于SSL是位于传输层的,TLS的前身是SSL,因此同理
  • HTTP无需认证证书,而https须要认证证书 

小结:简单来讲http是用来进行html等超媒体传输的,可是http不安全,为了安全,使用证书SSL和HTTP的方式进行数据传输,也就是HTTPS 安全

HTTPS工做原理

  • 首先服务端给客户端传输证书,这个证书就是公钥,只是包含了不少的信息,好比说证书的办法机构,证书的过时时间
  • 客户端进行证书的解析,好比说验证办法机构,过时时间,若是发现没有任何问题,就生成一个随机值(私钥),而后用证书对这个私钥进行加密,并发送给服务端
  • 服务端使用私钥将这个信息进行解密,获得客户端的私钥,而后客户端和服务端就能够经过这个私钥进行通讯了
  • 服务端将消息进行对称加密(简单来讲就是讲消息和私钥进行混合,除非知道私钥不然服务进行解密),私钥正好只有客户端和服务端知道,因此信息就比较安全了
  • 服务端将进行对称加密后的消息进行传送
  • 客户端使用私钥进行信息的解密

小结:https就是使用了非对称加密(一对公私钥进行加密解密)进行公钥传输,而后客户端经过公钥加密将本身的私钥发给服务端,之后就可使用这个私钥进行消息的收发了(图文方式的https的加密原理,能够点击连接:到个人另外一篇博客进行学习)服务器

经常使用的HTTP方法有哪些

  • GET 从服务器得到资源网络

  • POST 客户端向服务器提交资源并发

  • PUT 修改服务器相关资源  (已经不多用)

  • DELETE 删除服务器相关资源   (已经不多用)

小结:我基本用的是get和post,其他的两个基本没用过(被本身菜醒)

GET方法与POST方法的区别,何时应该使用GET何时应该使用POST

  • GET:通常用于信息获取,使用URL传递参数,对所发送信息的数量也有限制,通常在2000个字符
  • POST:通常用于修改服务器上的资源,对所发送的信息数量没有限制
  • GET方式须要使用Request.QueryString来取得变量的值,而POST方式经过Request.Form来获取变量的值,也就是说Get是经过地址栏来传值,而Post是经过提交表单来传值。

小结:对于信息的获取通常使用get,在如下状况下最好使用post请求:

  1. 向服务器发送大量数据(由于post没有发送数据的数量限制) 
  2. 没法使用缓存文件(会更新服务器上的文件)
  3. 发送包含未知字符的用户输入时(亲身经历过GET的坑,泪目) 

HTTP请求报文与响应报文格式

这里我推荐一位大神写的很出色的博客,在这里就不详细写了,博客地址:https://blog.csdn.net/a19881029/article/details/14002273

小结:主要的区别就是请求报文有url和请求方法,响应报文没有这两个,可是有状态码和状态码描述,还要注意一些常见的请求头和响应头表明的意思,好比说Connection:Keep-Alive

常见的HTTP的状态码

我在上面推荐的博客已经进行了一些经常使用状态吗的说明,个人一片文章里面也有详细说明

博客地址: https://blog.csdn.net/zhttly/article/details/82829854

HTTP1.0,1.1,2.0之间的区别和特性

http1.0:

  • 是一种无状态、无链接的应用层协议,每一个请求都会新建立一个tcp链接,完成后关闭服务端不跟踪也不记录过去的请求(无状态),但正因频繁建立链接,因为tcp的慢启动(为了避免给网络形成拥堵,在首次进行tcp请求的时候,会限制服务端和客户端之间交互数据量的上限,大概为14kb,以后以指数级增加),服务端接受请求,处理完,发送完响应以后就会将tcp链接关闭,这形成了很大的资源浪费,并且http1.0在一个请求接收到响应以后才会接着发送下一个,这也形成了head of line blocking(队头阻塞),如今的浏览器为了解决这个问题,采用了一个页面能够创建多个tcp链接的方式来进行

http1.1:

  • 继承了http1.0的特色,同时改善了http的一些问题,首先是长链接,http1.1新增长了connecion字段,里面能够设置keey-Alive(保持链接)或者close(关闭长链接),避免了每次请求都会新建链接,提升了网络的利用率
  • http1.1还增长了Host字段,用来明确表示浏览器要服务器上的哪个WEB站点,这才实现了在一台WEB服务器上能够在同一个IP地址和端口号上使用不一样的主机名来建立多个虚拟WEB站点,同时还支持了断点续传
  • http1.1的管道:能够发送不少请求到服务端,可是服务端必需要按顺序返回响应,由此能够看出http1.1的管道只是把客户端的请求序列变成了服务端的响应序列,仍是有问题,不少浏览器并非很支持
  • http1.1还增长了缓存,断点续传

http2.0 : 

  • 采用了二进制分帧(frame),在应用层和传输层之间增长了一个二进制分帧层,也就是把http1.x的header和body使用帧(frame)进行了封装
    • 这里明确几个概念:流(stream) : 已经创建上链接的双向字节流(也就是一个请求和其对应的响应) 消息:与逻辑消息对应的完整的一系列数据帧 帧(frame):http2.0进行通讯的最小单位,每一个帧都会包含一个头部,这个头部会包含当前帧所处的流
  • 多路复用:全部的HTTP2.0通讯都在一个TCP链接上完成,这个链接能够承载任意数量的双向数据流,每一个数据流都以消息的方式进行发送,这个发送可使乱序的,而后在经过每一个帧头部的流标识符进行组装,同时每一个数据流均可以设置优先级,可见http2.0真正实现了并行发送数据,这个是给予二进制分帧来实现的,接下来上一张图片,展现一下一个在一个流中分帧传输的实例

                                                                               注:此图片来源于百度图片

  • 头部压缩:就是和服务端约定头部的数据的编码,来将头部进行压缩后发送,这样就能够增长请求头的容量

小结:这里讲的稍微有一点多,这里给一个总结

  1. http1.0:无链接,无状态,一次请求一个tcp链接
  2. http1.1:持久链接,请求管道化(有一些缺陷) ,增长了host字段,缓存,断点续传
  3. http2.0 : 二进制分帧(多路复用的实现基础), 多路复用,头部压缩

常见HTTP首部字段

这里我仍是给你们推荐两篇博客,写的很详细就不在这里献丑了

 地址1 : http://www.javashuo.com/article/p-minfzymc-u.html

 地址2 : https://blog.csdn.net/chenyuanyong110/article/details/52781462

 

HTTP的缺点与HTTPS有哪些改进

http的传输是不安全的,https是http+ssl证书进行加密的,因此比http安全(这里的详细过程上面有写)

HTTP优化

  • 资源内敛 : 资源内联 : 既然每一个资源的首次访问都会存在握手等rtt损耗,那么越少数量的资源请求就越好,例如咋一个html中src访问css,不如直接将其这个css集成到html中
  • 图片懒加载 ; 用到的时候在加载,这个已经很广泛了,就不细说了
  • 服务器渲染 : 让服务端先将页面渲染好,在发送给客户端,也能够减小rtt的次数

一个页面从输入 URL 到页面加载显示完成,这个过程当中都发生了什么?

这里个人另外一篇博客有详细的说明 地址链接 ; https://blog.csdn.net/zhttly/article/details/82832582  (喜欢的话赞一下啊)

 为何HTTPS安全

HTTPS是HTTP和SSL组合而成的,在传输层使用了SSL进行加密,保证了只有拥有私钥的才能看到信

 

原博:https://blog.csdn.net/zhttly/article/details/82895713

相关文章
相关标签/搜索