当DNS工作完之后得到了一个网址

https//192.168.1.255/index.html

这个并不符合标准的请求路径.接下来就是https的功能了.讲https前先讲讲它的前身http协议

HTTP协议

http协议是超文本传输协议,是一个基于请求与响应,无状态的,应用层的协议,常基于TCP/IP协议传输数据,互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准。设计HTTP的初衷是为了提供一种发布和接收HTML页面的方法。

说得通俗一点就是,请求和响应的规范.和其他的协议和规范一样,其目的都是为了统一规范,方便处理.

协议内容

1.规定了url规范,默认端口:80.

也就是http的请求将会默认给加上一个80端口,最终我们得到如下网址

https//192.168.1.255:80/index.html

这就是一个完整合规的请求路径了

2.规定了请求报文格式和响应报文格式

以火狐浏览器请求这个页面为例,因为现在浏览基本都把请求和响应美化了,所以我们要选中边上的原始去查看原始内容

1): 请求报文

包含起始行,请求头和请求主体

起始行

请求方式:GET,

请求url:/api/msg,

协议类型及版本:HTTP/2

请求方式通常是8种,其中GET和POST是最常用的.而其中POST有请求主体,包含了需要传递的参数内容,而GET则没有,

请求头

请求头是一系列的键值对,具体的内容通常也可以在网上查的.这里不讨论.

请求体

根据需求各有不同,可在浏览器中查看

2):响应报文

响应报文跟请求报文的总体结构是相似的,只是在细节上不太一样

起始行

协议类型及版本

状态码

状态码描述

响应头

对响应的描述,主要是一些键值对.

响应体

响应的主要内容,在浏览器中可直接看到.前端需要的数据主要就放在这里.

3.交互过程

请求->响应

通过http协议,我们能完成完整的前后端交互,并且在大家都遵守相关协议的情况下.我们可以在任何平台和宿主环境中完成前后端交互.

HTTPS协议

上面在描述http的时候,我特意说了"可以在浏览器看到这一点".也就是说http协议传输是明文的,所以一下敏感数据就不太适合用http协议,于是https就应运而生.它主要是http协议+ssl加密协议.所以简称https.

它继承了http的大体框架,唯一不同的就是多了个s(不是).而这个s就决定它让交互过程多了加密通话的过程.也就是说原来是直接给,现在多了些验证过程.

我们一步步去了解加密

1.密钥和密文

密文是一段加密过的文字,而密钥可以是加密也可以是解密的工具.

2.公钥和私钥

公钥是公共密钥,也就是大家都用这同一个密钥.私钥是私有的密钥,也就是说每个人都可以有自己的私钥,只有自己知道.

3.对称加密和非对称加密

对称加密是大家都用公钥,加密和解密都用相同的.这样只有统一一下便可以比较方便地实现加密和解密.

非对称加密是加密用公钥,而解密用私钥.也就是说,我给大家一个公钥,你要加密好给我,我再用私钥去解密.因为公钥和私钥是可以相互加解密的.

4.混合加密

就是结合对称加密和非对称加密两种方案的.

5.风险

在讨论SSL加密方式之前,我们先讨论一下以上普通加密的风险.

风险主要源自公钥,比如服务器的公钥a,和私钥a.正常情况下是服务器把公钥a传给客户端,客户端用公钥a加密,然后传给服务器,就是别人拿到密文,因为没有私钥a解密,也解析不出来东西.但是,假如.有个第三者,有公钥b,私钥b.在服务器把公钥a传给客户端是,它把公钥a给拦截了,然后传给了客户端公钥b,客户端用公钥b去加密,然后再发给服务器,如果这时候密文被第三者拦截后,他就可以用私钥b去解析了.成功获得内容.

6.认证

所以,我们需要对服务器和浏览器进行认证.这个时候"自证"就不如"权威机构"靠谱.就需要引入第三方认证机构,由它来认证.认证通过了,客户端和服务器就可以放心得去交流了.

7.SSL

SSL加密过程包含三方,客户端,服务器,认证机构.其中,服务端和认证机构的公钥和密钥都是需要参与其中的.还有一个特殊的,客户端的密钥.他是在这过程中生成,从过程来看,它参与了.从结果来看,它没完全参与.

1).认证机构自己的公钥A内置到客户端里,其实这一步就是认证客户端的过程.因为没有公钥A就不是合规的客户端,SSL验证也就进行不下去.

2).服务端先把自己的公钥B给认证机构,认证机构认证完确认是合规的服务器,接着需要把自己的认证结果传递给客户端.它会用自己的私钥a,去加密一个认证数字签名,然后
把公钥B和数组签名放在一个证书里给客户端. 3).客户端拿到了证书,用内置的公钥A去解密数字签名(防止伪造签名),发现签名合规,确定了公钥B是服务端给的.就会生成一个对称密钥C,这个密钥是后面数据交流的时候,
客户端和服务端统一的密钥. 4).客户端用公钥B把密钥C加密之后传给服务端, 5).服务端拿到密钥C的密文之后用私钥b去解密,获得密钥C. 6).服务端用密钥C加密数据传给客户端. 7).客户端用密钥C去解析加密数据.

通常情况下http请求是直接进行TCP连接的,而https则是需要先SSL,然后再TCP.这其实就是http和https的最大区别,其他比如它们的端口号不一样,需要ca认证,http无状态和https有状态啥的,都是它的延伸.

前端浅谈-协议相关(http/https)的更多相关文章

  1. 前端浅谈-协议相关(DNS协议)

    从应用层到实体层的协议太多了,我们并不能一一涉及,目前来说就打算整理可能会与前端相关的协议. 前端面试常会问到一个问题-"从输入一个url到页面渲染经历了哪些过程".这其实是一个相 ...

  2. 前端浅谈---协议相关(TCP连接)

    TCP连接 http的描述里面,我弱化了交互过程的描述,因为它相对复杂.所以我在此单独描述.客户端和服务端传递数据时过程相对谨慎和复杂,主要是开始和结束的过程.而这整个过程就是TCP连接.连接流程大体 ...

  3. 浅谈协议(四)——wireshark强力解析视频流协议

    参考链接: https://wenku.baidu.com/view/460f016e49d7c1c708a1284ac850ad02de800722.html https://wenku.baidu ...

  4. 浅谈协议(二)——视频流协议 [RTP/RTCP/RTMP/HTTP_FLV]

  5. Web 前端 - 浅谈外部手动控制 Promise 状态

    前言 当有多个共享资源.协同操作的时候,往往需要根据动态亦或是复杂的条件以控制和调用程序逻辑. 还是那句话,懂的人自然懂,不懂的人也搜不到这个随笔. 设计 PendingPromise<T> ...

  6. 前端浅谈-Js的组成

    这里主要想详细的分析一下浏览器渲染过程,但东西比较多.所以分成多个部分. JS由三个部分组成,分别为ECMAScript.BOM.DOM. 其中BOM是浏览器层面的东西,而DOM是页面层面的东西.简单 ...

  7. 浅谈HTTPS以及Fiddler抓取HTTPS协议

    最近想尝试基于Fiddler的录制功能做一些接口的获取和处理工作,碰到的一个问题就是简单连接Fiddler只能抓取HTTP协议,关键的登录请求等HTTPS协议都没有捕捉到,所以想让Fiddler能够同 ...

  8. 浅谈HTTPS以及Fiddler抓取HTTPS协议(摘抄)

    一.浅谈HTTPS 我们都知道HTTP并非是安全传输,在HTTPS基础上使用SSL协议进行加密构成的HTTPS协议是相对安全的.目前越来越多的企业选择使用HTTPS协议与用户进行通信,如百度.谷歌等. ...

  9. 【转载】浅谈HTTPS以及Fiddler抓取HTTPS协议

    最近想尝试基于Fiddler的录制功能做一些接口的获取和处理工作,碰到的一个问题就是简单连接Fiddler只能抓取HTTP协议,关键的登录请求等HTTPS协议都没有捕捉到,所以想让Fiddler能够同 ...

随机推荐

  1. [bzoj3317]First Knight

    建立方程后直接高斯消元,再把0的区间找出来计算,就可以过(因为实际上这样的复杂度是5次的,且常数小)(当然这样的复杂度看上去并不太好,考虑优化)可以发现最后一行的概率都可以用上一行来表示,那么代入上一 ...

  2. 接上篇:Git Worktree 高级使用,这样清爽多了

    前言 上一篇文章 Git Worktree 大法真香 带大家了解了 git worktree 是如何帮助我同时在多个分支工作,并且互不影响的.但是创建 worktree 的目录位置不是在当前项目下,总 ...

  3. 深度剖析Spring Boot自动装配机制实现原理

    在前面的分析中,Spring Framework一直在致力于解决一个问题,就是如何让bean的管理变得更简单,如何让开发者尽可能的少关注一些基础化的bean的配置,从而实现自动装配.所以,所谓的自动装 ...

  4. 从一个小Bug,到Azure DevOps

    1. 一个小Bug 最近和同事提起一个几年前的 Bug,那是一个很小很小的 Bug,没什么技术含量.那时候我刚入职,正好公司卖了一款仪器到某个国家,但是那边说配套的软件运行不起来,一打开就报错.经过排 ...

  5. Go语言核心36讲(Go语言实战与应用十七)--学习笔记

    39 | bytes包与字节串操作(下) 在上一篇文章中,我们分享了bytes.Buffer中已读计数的大致功用,并围绕着这个问题做了解析,下面我们来进行相关的知识扩展. 知识扩展 问题 1:byte ...

  6. 洛谷 P4426 - [HNOI/AHOI2018]毒瘤(虚树+dp)

    题面传送门 神仙虚树题. 首先考虑最 trival 的情况:\(m=n-1\),也就是一棵树的情况.这个我相信刚学树形 \(dp\) 的都能够秒掉罢(确信).直接设 \(dp_{i,0/1}\) 在表 ...

  7. 【1】蛋白鉴定软件之X!Tandem

    目录 1. 简介 2.下载安装 3. 软件试用 4. 结果 5. FAQ 1. 简介 X!Tandem是GPM:The Global Proteome Machine(主要基于Web的开源用户界面,用 ...

  8. header 301,显示302

    header 301,显示302 一定要注意Location 后面的":"前后都不能有空格 header('HTTP/1.1 301 Moved Permanently'); he ...

  9. nordic 51822 sdk. timer 的使用

    它的源代码和头文件分别为app_timer.c/app_timer.h.这是Nordic为我们提供的虚拟定时器,这个定时器不同于硬件上的TIMER,而是基于RTC1实现的一种虚拟定时器,其将定时功能作 ...

  10. github小白的记录随笔

    此文章是基础本地安装好了git环境的新手小白. 进入您要上传项目的根路径,右键选择Git Bash Here. 输入命令: git init //初始化git仓库环境 git remote add o ...