前端网络

网络

HTTPS原理

一句话归纳:css

HTTPS要使客户端与服务器端的通讯过程获得安全保证,必须使用的对称加密算法,可是协商对称加密算法的过程,须要使用非对称加密算法来保证安全,然而直接使用非对称加密的过程自己也不安全,会有中间人篡改公钥的可能性,因此客户端与服务器不直接使用公钥,而是使用数字证书签发机构颁发的证书来保证非对称加密过程自己的安全。这样经过这些机制协商出一个对称加密算法,就此双方使用该算法进行加密解密。从而解决了客户端与服务器端之间的通讯安全问题html

HTTP状态码

HTTP状态码分类

1**:信息,服务器收到请求,须要请求者继续执行操做算法

2**:成功,操做被成功接收并处理浏览器

3**:重定向,须要进一步的操做以完成请求缓存

4**:客户端错误,请求包含语法错误或没法完成请求(一般API名称写错或者后台代码没有部署致使找不到接口)安全

5**:服务器错误,服务器在处理请求的过程当中发生了错误性能优化

状态码 英文名称 中文描述
100 Continue 继续。客户端赢继续其请求
200 OK 请求成功。通常用于get与post请求
204 No Content 无内容。服务器成功处理,但未返回内容。在未更新网页的状况下,可确保浏览器继续显示当前文档
300 Multiple Choices 多种选择。请求的资源可报货多个位置,相应可返回一个资源特征与地址的列表用于用户终端选择
301 Moved Permanently 永久移动。请求的资源已被永久的移动到新URI,浏览器会自动定向到新URI。从此任何新的请求都应使用新的URI代替
304 Not Modified 未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端一般会缓存访问过的资源,经过提供一个头信息指出客户端但愿只返回在指定日期以后修改的资源。
400 Bad Request 客户端请求语法错误,服务器没法理解
401 Unauthorized 请求要求你用户的身份认证
403 Forbidden 服务器理解请求客户端的请求,可是拒绝执行此请求
404 Not Found 服务器没法根据客户端的请求找到资源。
408 Request Time-out 服务器等待客户端发送的请求你时间过长,超时。
500 Internal Server Error 服务器内部错误,没法完成请求
502 Bad Gateway 做为网关或者代理工做的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应
503 Service Unavailable 因为超载或系统维护,服务器暂时的没法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中
504 Gateway Time-out 充当网关或代理的服务器,未及时从远端服务器获取请求

一次完整的HTTP请求过程

  域名解析 --> 发起TCP的3次握手 --> 创建TCP链接后发起http请求 --> 服务器响应http请求,浏览器获得html代码 --> 浏览器解析html代码,并请求html代码中的资源(如js、css、图片等) --> 浏览器对页面进行渲染呈现给用户   服务器

HTTPS页面与HTTP页面混用

https页面不能够嵌入http页面会报出错误提示或者忽略http资源网络

解决办法:socket

1.当两种https和http的资源都存在的时候,可使用相对连接来进行资源定义,即(//resource),这样能够无缝匹配两种资源

2.可使用ifream结构,在https的层内嵌套一层http的资源,也但是实现访问

HTTP1.0、HTTP1.一、HTTP2.0

HTTP基本优化

影响HTTP速度的主要有两个因素:带宽和延迟

  • 带宽:若是说咱们还停留在拨号上网的阶段,带宽可能会成为一个比较严重影响请求的问题,可是如今网络基础建设已经使得带宽获得极大的提高,咱们再也不会担忧由带宽而影响网速,那么就只剩下延迟了。
  • 延迟:
  1. 浏览器阻塞:浏览器会因为一些缘由阻塞请求。浏览器对于同一个域名,同时只能有4个连接,超过浏览器最大链接数限制,后续请求就会被阻塞
  2. DNS查询:浏览器须要知道目标服务器IP才能捡来连接。将域名解析为IP的这个系统就是DNS。一般能够用DNS缓存来达到减小这个时间的目的
  3. 创建连接:HTTP是基于TCP协议的,浏览器最快也要第三次握手才能捎带HTTP请求报文,达到真正的创建连接。可是这些连接没法复用,致使每次请求都会经历3次握手和慢启动

HTTP1.0和HTTP1.1的区别

  1. 缓存处理:http1.0主要使用header里的If-Modified-Since,Expires来作为缓存判断的标准,而http1.1引入了更多的缓存控制策略如Entity tag,If-Unmodified-Since, If-Match, If-None-Match等更多可供选择的缓存头来控制缓存策略
  2. 错误通知管理:http1.1中增长了24个错误状态响应码,如409 表示请求的资源与资源当前状态发生冲突;410 表示服务器上的某个资源呗永久性删除
  3. 带宽优化及网络链接的使用:http1.0中存在浪费带宽的现象,如客户端只想要某个对象的一部分,而服务器却将整个对象传过来了,而且不支持断点续传。http1.1在请求头引入了range头域,容许只请求资源的某个部分,即返回206,方便了开发者自由的选择以便于充分利用带宽和连接
  4. Host头处理:http1.0中认为每台服务器都绑定惟一的IP地址,所以请求消息中的URL并无传递主机名。但随着虚拟主机技术的发展,一台物理服务器能够存在多个虚拟主机,而且共享一个IP。http1.1的请求消息和响应消息都应支持Host头域,且请求消息中若是没有Host会报400错误
  5. 长链接:http1.1支持长链接,和请求的流水线处理,在一个tcp链接上能够传送多个HTTP请求你和响应,减小了创建和关闭链接的消耗和延迟。默认开启connection:keep-alive

HTTP 和 HTTPS 的区别

  1. https须要CA申请证书
  2. HTTP协议运行在TCP上,全部传输都是明文的;HTTPS运行在ssl/tls之上,ssl/tls运行在tcp之上,全部传输都是通过加密的
  3. https和http彻底不一样的连接方式,端口也不同http80,https443
  4. https有效防止运营商劫持

image

SPDY

  1. 下降延迟:针对http高延迟问题,spdy采用了多路复用。
  2. 请求优先级:多路复用带来的问题,在链接共享的基础上可能致使关键请求被阻塞。SPDY容许给每一个request设置优先级,重要的请求会优先获得响应
  3. header压缩:选择合适的压缩算法能够减小包的大小和数量
  4. 基于https的加密协议传输:提升传输数据可靠性
  5. 服务端推送(server push)

image

HTTP2.0:SPDY升级版

http2.0是基于spdy设计的,但略有不一样

  • 首先http2.0能够接受明文http传输、但spdy强制使用https
  • http2.0头部压缩算法用的是HPACK,spdy用的是DEFLATE

HTTP2.0 和HTTP1.x 相比的新特性

  • 新的二进制格式:http1.x解析是基于文本。文本表现形式多种多样,要作到健壮性考虑的场景太多,可是二进制只认0和1,更加健壮方便
  • 多路复用:即链接共享。一个request对应一个id,这样一个连接上能够有多个request,每一个连接的request能够随机混在一块儿,接收方能够根据request的id将request再归属到各自不一样的服务端请求里面
  • header压缩:对前面提到过HTTP1.x的header带有大量信息,并且每次都要重复发送,HTTP2.0使用encoder来减小须要传输的header大小,通信双方各自cache一份header fields表,既避免了重复header的传输,又减少了须要传输的大小。
  • 服务端推送

HTTP2.0的多路复用和HTTP1.X中的长链接复用有什么区别?

  • HTTP/1.* 一次请求-响应,创建一个链接,用完关闭;每个请求都要创建一个链接;
  • HTTP/1.1 Pipeling解决方式为,若干个请求排队串行化单线程处理,后面的请求等待前面请求的返回才能得到执行机会,一旦有某请求超时等,后续请求只能被阻塞,毫无办法,也就是人们常说的线头阻塞;
  • HTTP/2多个请求可同时在一个链接上并行执行。某个请求任务耗时严重,不会影响到其它链接的正常执行;

image

为何服务端推送会很快?

由于省去了客户端重复请求的步骤,因为没有发起请求,创建链接等操做,因此静态资源经过服务器推送的方式能够极大的提高速度

普通客户端请求:

image

服务端推送:

image

为何要头部压缩?

假定一个页面有100个资源须要加载(这个数量对于今天的Web而言仍是挺保守的), 而每一次请求都有1kb的消息头(这一样也并很多见,由于Cookie和引用等东西的存在), 则至少须要多消耗100kb来获取这些消息头。HTTP2.0能够维护一个字典,差量更新HTTP头部,大大下降因头部传输产生的流量。具体参考:HTTP/2 头部压缩技术介绍

HTTP2.0多路复用有多好?

HTTP 性能优化的关键并不在于高带宽,而是低延迟。TCP 链接会随着时间进行自我「调谐」,起初会限制链接的最大速度,若是数据成功传输,会随着时间的推移提升传输的速度。这种调谐则被称为 TCP 慢启动。因为这种缘由,让本来就具备突发性和短时性的 HTTP 链接变的十分低效。 HTTP/2 经过让全部数据流共用同一个链接,能够更有效地使用 TCP 链接,让高带宽也能真正的服务于 HTTP 的性能提高。

http主要因为慢启动影响效率,而多路复用能够充分利用带宽

https原理通俗了解

http状态码

看完让你完全搞懂Websocket原理

三次握手和四次挥手

一次完整的HTTP请求过程

HTTP1.0、HTTP1.1 和 HTTP2.0 的区别

Service Worker, 你究竟是个什么东西?

https 页面中引入 http 资源的解决方式

一文读懂HTTP/2 及 HTTP/3特性

相关文章
相关标签/搜索