您当前的位置:首页 > 电脑百科 > 网络技术 > 网络知识

面试官问 HTTPS 是怎么从 HTTP 转过来的,我有点懵

时间:2021-11-05 14:29:50  来源:  作者:Java开发仔

这段时间毕竟也是 “金九银十” 的面试的黄金季节,阿粉当然也想去面试,但是因为自身受限,所以只能采访一下出去面试的同学们都问了什么内容,其中有一个,阿粉觉得有必要给大家分享一下,就是问关于 HTTP 的内容。

HTTP

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网服务器传输超文本到本地浏览器的传送协议。HTTP 是基于 TCP/IP 协议通信协议来传递数据(html 文件、图片文件、查询结果等)。它不涉及数据包(packet)传输,主要规定了客户端和服务器之间的通信格式,默认使用80端口。

这其实就是百度百科里面的精简化的内容,虽然说不上太细致,但是已经算是对HTTP做了一个大概的描述,我们接下来就从以下的几个方面来看一下这个HTTP吧。

我们从这里就不再多解释 HTTP报文 和 主体 这些内容了,阿粉之前也是完整的给大家解释过了,包括了 HTTP 的进化历史,阿粉今天我们来讲讲 HTTP 和 HTTPS 的关系。

HTTP缺点

众所周知,HTTP 的优点那可是一大堆:

  1. 简单、灵活、易于扩展
  2. 应用广泛、环境成熟
  3. 无状态 (不需要额外的资源来记录状态信息)

但是 HTTP 的缺点也是非常的显著,为什么这么说,HTTP 使用的是明文的方式进行传输,虽然方便了我们的调试,但是信息会被暴露出来,每一个环节没有隐私可言。

而且 HTTP 在我们的认知当中,他就是一个不安全的,第一个原因是上面说的明文,还有就是 HTTP 不验证通信双方的身份,所以对方的身份有可能伪装,就像某些公共场所的那些 公共WIFI ,还有就是 HTTP 不能验证报文的完整性,所以报文也是有可能被篡改的。

基于这些内容,所以我们很多时候对 HTTP 的选择都比较慎重,不然你传输内容的时候,别人用抓包工具就很容易的能够分析出你想要传递的内容。

这时候我们就想到了一个事情,加密处理一下不就好了?

对,完全没问题,HTTP 没有加密的机制,但是我们可以想办法处理,这个办法就是:

SSL 或者 TLS

SSL: 安全套接层

TLS:安全层传输协议

当他们组合使用的时候,就能够加密 HTTP 的通信的内容了,这时候就能在这条线路上进行通信,而通过 SSL组合使用后的 HTTP 被称为 HTTPS 或者称之为 HTTP overSSL。

HTTPS

大白话说一下,HTTP 在加上加密处理和认证以及完整性保护之后就是 HTTPS。

分辨 HTTPS 最简单的方法就是,你在浏览器访问的时候,能够看到一个小锁的标识。

面试官问 HTTPS 是怎么从 HTTP 转过来的,我有点懵

 

现在百分之90以上的网站不都是使用的 HTTPS 么,

我们使用抓包工具来看一下 HTTPS 的传输内容试试。

面试官问 HTTPS 是怎么从 HTTP 转过来的,我有点懵

 

我们从中看到了TLS 的版本,还有阿粉没有截图上的随机数。

这时候我们就得来完整的分析 HTTPS 的安全通信机制了。来看个图看一下 然后我们再拿我们的抓包工具来进行分析。

面试官问 HTTPS 是怎么从 HTTP 转过来的,我有点懵

 

上面这是 HTTPS 的安全通信的机制,我们分别来看看都干了什么。

第一步:Client Hello

客户端通过 发送 Client Hello 报文开始 SSL/TSL 通信。其中包含了 SSL/TSL 的版本,所使用的加密的方法等一系列的内容。

第二步:Server Hello

服务端根据客户端发送的支持的 SSL/TLS 协议版本,和自己的比较确定使用的 SSL/TLS 协议版本。缺点假面算法等内容。

第三步:服务器发送 Certificate 报文,报文中包含了公开密钥证书。

证书的目的实际上就是保证标识的身份,证书一般采用X.509标准。

第四步:Server Key Exchange

服务器发送 Server Hello Done 报文请求客户端,第一阶段的 SSL/TSL 握手协商部分结束。

也有很多人习惯的称第四步是 Server Hello Done 实际上当我们抓包的时候,发现他们是在一次请求中的,我们一会抓包看一下试试。Server Hello Done 实际上就是相当于我给你说我这边发完毕了。

第五步:Client Key Exchange

完成 SSL/TSL 第一次握手之后,客户端就发送 Client Key Exchange 报文作为回应,这里实际上就是为了交换秘钥参数,

面试官问 HTTPS 是怎么从 HTTP 转过来的,我有点懵

 

这里客户端会再生成一个随机数,然后使用服务端传来的公钥进行加密得到密文PreMaster Key。服务端收到这个值后,使用私钥进行解密,这样两边的秘钥就协商好了。后面数据传输就可以用协商好的秘钥进行加密和解密。

第六步:Change Cipher Spec

客户端发送 Change Cipher Spec 报文,提示服务器编码改变,就是说以后我们再发消息的时候,我是用之前我们定义的密钥进行加密。

第七步:Client Finished

户端将前面的握手消息生成摘要再用协商好的秘钥加密,这是客户端发出的第一条加密消息,这一步也是比较关键的一步,这次的操作的成功与否,就得看服务器是否能够成功解密这次的报文来作为判断依据了。

第八步:服务器发送 Change Cipher Spec

第九步:服务器发送Server Finished 报文

实际上作用和 Client 差不多。

第十步:服务端和客户端的 Finished 交换完成了,这时候 SSL/TSL 的连接就OK了,发送信息也就是完整的称为 HTTPS 了。

最后就是进行数据传输的内容了。

既然 HTTPS 都是安全的了,为什么不大范围的广泛使用呢?

实际上加密通信虽然在一定程度上保护了数据的隐私,但是效率比较低,每一次通信都要加密,会消耗资源,如果包含一些钱的肯定那必须得使用加密的通信,而且主要证书要收费呀。

你要想用,那肯定需要证书,就像大家在做微信支付的时候,不是也需要购买证书么,一般一年怎么也得几百块钱,所以你知道 HTTP 和 HTTPS 的关系了么?



Tags:HTTPS   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
1. 前言本文主要讲解如何在Linux上使用tinyproxy搭建HTTP/HTTPS代理器。tinyproxy是一个HTTP/HTTPS代理。它是轻量级的、快速的、非常容易配置的,而且是一个开源的代理服务。...【详细内容】
2021-12-08  Tags: HTTPS  点击:(16)  评论:(0)  加入收藏
由于https 使用了 TLS/SSL 加密条件,我们无法直接在wireshark的中读取到数据内容,我们先看一下正常的http包的内容。可以直接读取到http的header 和body。 但如果是https 则不...【详细内容】
2021-12-01  Tags: HTTPS  点击:(29)  评论:(0)  加入收藏
这段时间毕竟也是 “金九银十” 的面试的黄金季节,阿粉当然也想去面试,但是因为自身受限,所以只能采访一下出去面试的同学们都问了什么内容,其中有一个,阿粉觉得有必要给大家分享...【详细内容】
2021-11-05  Tags: HTTPS  点击:(45)  评论:(0)  加入收藏
自互联网出现以来,超文本传输协议http协议被广泛用于在Web浏览器和网站服务器之间传递信息,但随着互联网的发展,另一种协议——https出现,并与http一同服务于这个互联...【详细内容】
2021-10-20  Tags: HTTPS  点击:(44)  评论:(0)  加入收藏
背景最近做微信小程序开发比较多,大家知道线上微信小程序为了安全起见,要求后端通信协议必须是HTTPS,这就要求需要安装证书。为了测试预发布线上环境,特地买了个最便宜的域名,为...【详细内容】
2021-09-14  Tags: HTTPS  点击:(124)  评论:(0)  加入收藏
随着互联网安全越来越被重视,几乎所有的大网站都已经默认启用了https协议,浏览器输入http网址也会自动跳转到https,比如百度、腾讯、搜狗、谷歌等等。简单来说就是https协议数...【详细内容】
2021-09-06  Tags: HTTPS  点击:(76)  评论:(0)  加入收藏
为什么要优化 Ngin HTTPS 延迟Nginx 常作为最常见的服务器,常被用作负载均衡 (Load Balancer)、反向代理 (Reverse Proxy),以及网关 (Gateway) 等等。一个配置得当的 Nginx 服...【详细内容】
2021-08-11  Tags: HTTPS  点击:(53)  评论:(0)  加入收藏
我们日常用https访问网站的时候,和网站交互的数据是加密的,所用的协议就是SSL/TLS。所以即使我们截获了这些数据包,我们也不能看到加密的内容。比如我们随便打开百度的网址,用wi...【详细内容】
2021-07-16  Tags: HTTPS  点击:(127)  评论:(0)  加入收藏
1. 实验说明:前面的章节我们已经简单学习了windows server2019上如何搭建web服务器的,有的同学可能在上网的过程中会发现有些域名是使用的http访问而有的域名则是使用https加...【详细内容】
2021-07-07  Tags: HTTPS  点击:(147)  评论:(0)  加入收藏
说明最近项目上遇到一些https的问题,需要在tomcat里面测试一下如何开启https协议访问网站,在网上查了一些资料,自己也试了很多次,终于成功搞定了,下面跟大家分享一下我的一点经验...【详细内容】
2021-04-20  Tags: HTTPS  点击:(162)  评论:(0)  加入收藏
▌简易百科推荐
HTTP 报文是在应用程序之间发送的数据块,这些数据块将通过以文本形式的元信息开头,用于 HTTP 协议交互。请求端(客户端)的 HTTP 报文叫做请求报文,响应端(服务器端)的叫做响应...【详细内容】
2021-12-27  程序员蛋蛋    Tags:HTTP 报文   点击:(0)  评论:(0)  加入收藏
一 网络概念:1.带宽: 标识网卡的最大传输速率,单位为 b/s,比如 1Gbps,10Gbps,相当于马路多宽2.吞吐量: 单位时间内传输数据量大小单位为 b/s 或 B/s ,吞吐量/带宽,就是网络的使用率...【详细内容】
2021-12-27  码农世界    Tags:网络   点击:(2)  评论:(0)  加入收藏
1.TCP/IP 网络模型有几层?分别有什么用? TCP/IP网络模型总共有五层 1.应用层:我们能接触到的就是应用层了,手机,电脑这些这些设备都属于应用层。 2.传输层:就是为应用层提供网络...【详细内容】
2021-12-22  憨猪哥08    Tags:TCP/IP   点击:(28)  评论:(0)  加入收藏
TCP握手的时候维护的队列 半连接队列(SYN队列) 全连接队列(accepted队列)半连接队列是什么?服务器收到客户端SYN数据包后,Linux内核会把该连接存储到半连接队列中,并响应SYN+ACK报...【详细内容】
2021-12-21  DifferentJava    Tags:TCP   点击:(9)  评论:(0)  加入收藏
你好,这里是科技前哨。 随着“元宇宙”概念的爆火,下一代互联网即将到来,也成了互联网前沿热议的话题,12月9日美国众议院的听证会上,共和党议员Patrick McHenry甚至宣称,要调整现...【详细内容】
2021-12-17  王煜全    Tags:Web3   点击:(14)  评论:(0)  加入收藏
一、demopublic static void main(String[] args) throws Exception { RetryPolicy retryPolicy = new ExponentialBackoffRetry( 1000, 3);...【详细内容】
2021-12-15  程序员阿龙    Tags:Curator   点击:(20)  评论:(0)  加入收藏
一、计算机网络概述 1.1 计算机网络的分类按照网络的作用范围:广域网(WAN)、城域网(MAN)、局域网(LAN);按照网络使用者:公用网络、专用网络。1.2 计算机网络的层次结构 TCP/IP四层模...【详细内容】
2021-12-14  一口Linux    Tags:网络知识   点击:(30)  评论:(0)  加入收藏
无论是在外面还是在家里,许多人都习惯了用手机连接 WiFi 进行上网。不知道大家有没有遇到过这样一种情况, 明明已经显示成功连接 WiFi,却仍然提示“网络不可用”或“不可上网”...【详细内容】
2021-12-14  UGREEN绿联    Tags:WiFi   点击:(25)  评论:(0)  加入收藏
拉了千兆宽带,买了标称 1300Mbps 的无线路由器,为什么 WiFi 还是跑不满千兆?要回答这个问题,我们先得知道这个 1300Mbps 是怎么来的。开始回答之前先说明一下,这期只讲 802.11ac,...【详细内容】
2021-12-14  Ubiquiti优倍快    Tags:WiFi   点击:(81)  评论:(0)  加入收藏
问题背景IPv6环境下,在浏览器中通过http://[vip:port]访问web业务,提示无法访问此网站,[vip]的响应时间过长。分析过程之前碰到过多次在PC浏览器上无法访问vip的情况,排查方法也...【详细内容】
2021-12-13  云原生知识星球    Tags:网络问题   点击:(27)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条