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

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

常见的http和https面试题:

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

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

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 : https://www.cnblogs.com/chenxizhaolu/p/7591549.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

原文地址:https://www.cnblogs.com/aidixie/p/11764181.html

时间: 2024-07-29 08:30:20

HTTP和HTTPS的区别和常见的面试题的相关文章

http与socket和https的区别

1. http与socket的区别,两个协议哪个更高效一点? 创建socket连接时,可以指定使用的传输层协议,socket可以支持不同的传输层协议(TCP或UDP),当使用TCP协议进行连接时,该socket连接就是一个TCP连接.socket连接一旦建立,通信双方即可开始相互发送数据内容, 直到双方连接断开.注意,同HTTP不同的是http只能基于tcp,socket不仅能走tcp,而且还能走udp,这个是socket的第一个特点. HTTP连接使用的是“请求-响应”的方式,不仅在请求时需要

大前端学习笔记整理【七】HTTP协议以及http与https的区别

前言 还是老样子,新博客开始前总是想先啰嗦几句...HTTP协议其实在当初学习java时老师就有提过...但是...反正就那么过去了... 这段时间公司的项目正好要求做https的转换和迁移,然后自己思考了一下,好像自己对于http连一知半解都算不上...更不提http与https的区别...想想作为一个未来的大前端工程师,岂能不去研究这些东西? 好吧,废话就到这里...正文开始 什么是HTTP? 以下来自度娘最为专业的解释: 超文本传输协议(HTTP,HyperText Transfer Pr

HTTP和HTTPS的区别及HTTPS加密算法

HTTP和HTTPS的概念              HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏     览器更加高效,使网络传输减少.http协议属于明文传输协议,交互过程以及数据传输都没有进行加密,通信双方也没有进行任何认证,通信过程非常容易遭遇劫持.监听.篡改,严重情况下,会造成恶意的流量劫持等问题,甚至造成个人隐私泄露(比如银行卡卡号和密码泄露)等严重的安全问题. HTT

HTTP协议与HTTPS的区别

permike 原文 HTTP协议与HTTPS的区别 HTTP协议 HTTP协议主要应用是在服务器和客户端之间,客户端接受超文本. HTTP是在七层网络模型中的应用层的协议,由发送请求和接受响应构成,是一个标准的客户端服务器模型.与此同时,HTTP是一个无状态的协议.也就是说,不能通过一个状态判断连接的状态,因此有时候,计算机之间通信需要通过其他协议来协同工作,一起提供支持. (1)基于B/S模式,即客户/服务器模式.同时可以提供登陆认证和网间安全传输,例如HTTP下加入SSL层,可以提供安全的

http与https的区别以及https的加密原理

HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议 它是一个安全通信通道,它基于HTTP开发,用于在客户计算机和服务器之间交换信息.它使用安全套接字层(SSL)进行信息交换,简单来说它是HTTP的安全版. http与https的区别在于 http一般使用的是80端口,而https使用的是443端口 http协议需要ca证书 http是明文传输的,而https是通过ssl加密之后传输的. https使用的是非对称加密,所谓的非对称加密就是加密密钥与

HTML5常见的面试题,基础知识点

                                                                                HTML5常见的面试题 一.HTML 常见题目 01.Doctype作用?严格模式与混杂模式如何区分?它们有何意义? 02.HTML5 为什么只需要写 <!DOCTYPE HTML>? 03.行内元素有哪些?块级元素有哪些? 空(void)元素有那些? 04.页面导入样式时,使用link和@import有什么区别? 05.介绍一下你对浏

常见Android面试题及答案(详细整理)

常见Android面试题及答案(详细整理) 1. 请描述一下Activity 生命周期. 答: 如下图所示.共有七个周期函数,按顺序分别是: onCreate(), onStart(), onRestart(), onResume(), onPause(),onStop(), onDestroy(). onCreate(): 创建Activity时调用,设置在该方法中,还以Bundle的形式提供对以前存储的任何状态的访问. onStart(): Activity变为在屏幕上对用户可见时调用. o

Android常见笔试&amp;面试题

一.JAVA部分: (挂起) 二.Android部分: 1.Android系统的架构 2.Android常用的五大布局 3.Android四大组件是什么 4.Activity的生命周期 5.Activity的四种启动模式 6.Service的启动方式有几种,有什么区别 7.BroadCastReceiver的使用机制 8.谈一谈Handler的工作机制 9.Service运行在哪个线程中 10.两个子线程中如何通过Handler来进行通讯 11.对于不同分辨率屏幕适配你是怎么做的 12.怎样彻底

希望可以帮到正在奔波的你—常见安卓面试题

目录 1.怎么实现通知栏到聊天界面的跳转 3 2.聊天界面左右分隔怎么实现,怎么实现优化使其不出现错位 3 3.视频,音频的上传 3 4.http协议和soap协议的区别 3 5.http和https的区别 4 6.listview的逐行显示 5 7.edittext中文字的下划线效果 5 8.activity以及service的生命周期 5 9.安卓系统的理解,优缺点 5 10.sim卡EF文件是什么 6 11.四大组件哪些能动态注册 6 12.安卓文件存储方式 6 13.intent的功能,