-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
前端需要知道的网络基础 #10
Comments
HTTPS的原理HTTPS是建立在HTTP原有的基础上,在应用层加入TLS/SSL协议加密数据,来达到数据加密的目的。对比起HTTP协议来说,有以下优势:
介绍HTTPS的具体工作原理前,先介绍一些常见的加密算法:
对称加密和非对称加密算法的比较: TLS/SSL使用了非堆成加密、对称加密和hash算法。 HTTPS的工作流程现在,我们逐一分析一下https的工作流程 在不引人https而使用http的时候,信息都是通过明文的形式传播的。此时,传输的信息可能被中间人恶意截取或篡改,这就是中间人攻击。这时,我们很自然地会想到数据的加密传输。 由于在网上传输的数据量级可能会很大,我们首先想到的是使用非对称加密算法对信息进行加密,发送和接收方可以通过相同的密钥进行加密和解密。但是这样仍有缺陷,假如中间人在第一次通信的时候就将约定的密钥截获了,那么中间人就可以用这个密钥对数据进行加密和解密了。 这时,我们就要考虑怎么来保护对称加密的密钥了。我们可以引用非对称加密,来保护对称加密的密钥传输。在非对称加密中,包含一个公钥和私钥,明文可以通过公钥加密,然后用私钥解密;也可以通过私钥加密,用公钥解密。一切就绪,走流程:
然而,这方案也有和前面同样的缺陷,如果中间人在建立通信的时候,对接收方发送的公钥进行篡改,那么后续的操作就没有意义了。 这时候我们就需要引入第三方,权威的证书颁发机构(CA)来对进行加密传输了。
引用某博客的一张图片: 由于服务端在向CA申请证书的时候,会向CA发送自身的网址等信息,并通过了机构私钥加密,所以中间人是无法通过自己申请的证书来顶替的。 补充
参考: |
强缓存和协商缓存这里提到的缓存不是指cookie、storage之类的存储介质,而是指服务端返回给客户端的HTTP报文头信息中的缓存信息,这些缓存信息是后台配置的(所以严格来说是后台的知识,笑~)。 强缓存和协商缓存的区别:
两种缓存可以同时存在,强缓存的优先级要高于协商缓存。如果命中强缓存,那么直接使用缓存,不再执行协商缓存。 强缓存强缓存是通过
协商缓存执行强缓存规则时都是根据有效时间来判断的,如果时间过期后,并且文件没有改动,再次去获取文件就有点浪费服务器资源了。所以,此时我们可以考虑使用协商缓存。 和协商缓存相关的header有:
虽然 参考: |
HTTP2的基本介绍在HTTP2诞生前,HTTP1(包括HTTP1.0合HTTP1.1)已经服务我们很多年了。但是它的设计缺陷随着互联网的发展被不断放大,人们就这些问题开始设计改良方案。 HTTP1的问题1.队头阻塞一般来说,浏览器向服务端请求的资源不止一份,并且,多数情况下它希望能同时获取许多资源。如果在一个网站内,其所有资源都放在了单个域名下,HTTP1无法同时请求这些资源。如果仅用一个连接,它需要发起请求、等待响应,之后才能发起下一次请求。HTTP1有一个称为“管道化”的特性,允许一次发送一组请求,但是只能按照发送顺序依次接收响应,并且由于该特性受多种因素影响,基本无实用价值。于是,在请求的过程中,如果出现某些情况导致剩下的所有工作都回被阻塞在那次请求应答之后,就导致了“队头阻塞”。它回阻塞网络传输和前端页面的渲染,直到失去响应。 2.TCP的利用低效TCP协议是可靠传输的协议,其涉及的核心概念是拥塞窗口,它是指在接收方确认数据包前,发送方可以发出TCP包的数量。举个栗子,如果拥塞窗口为1,那么发送方发出1个数据包后,只有接收方确认了那个包,才能发送下一个。一般的,每次发送一个数据包的情况也并不是低效的。 3.臃肿的首部http1的消息首部无法压缩 4.优先级受限浏览器为了请求优先级高的资源,回推迟请求其他资源。然而在优先级高的资源获取到之后,在处理它的过程中(比如渲染),浏览器并不会发起新的资源请求,那么就浪费了这段可以重新请求的空闲时间。 HTTP2的改变针对上述的问题,人们在HTTP2中加入了新特性补足了HTTP1的短板。在2015年发布的大部分现代浏览器已经支持了HTTP2,并向下兼容HTTP1。另外补充一点,虽然HTTP2的规范并不明确要求TLS,也支持明文传输,但是在主流浏览器中都是不支持非TLS的HTTP2的。 分层的概念HTTP2大致可以分为两层:分帧层,即HTTP2多路复用能力的核心部分;数据层,其中包含了HTTP1的内容。 HTTP的优势
二进制分帧
多路复用和优先级在HTTP1中可能会出现以下的问题:
借助这一特性,网络通信的的性能就大大提升了:
并且HTTP2规定每个请求都可以带有一个优先级值,数值越大优先级越高。这样通信双方就可以按最优的条件传输资源了。 服务器推送在HTTP2规范中,服务端可以主动向客户端发送资源,并且,客户端也可以选择是否接收。 关于丢包丢包是HTTP2的命门,频繁丢包会影响HTTP2的页面传输,主要是因为HTTP2开启了单一TCP连接,每次有丢包时,TCP拥塞窗口就会缩减。 参考:
|
前端需要知道的网络基础
本issue的内容主要是前端会接触到的一些网络知识,会有后续更新
The text was updated successfully, but these errors were encountered: