http相关总结

HTTP 协议是基于 TCP 协议出现的,对 TCP 协议来说,TCP 协议是一条双向的通讯通道,HTTP 在 TCP 的基础上,规定了 Request-Response 的模式。这个模式决定了通讯必定是由浏览器端首先发起的.大部分情况下,浏览器的实现者只需要用一个 TCP 库,甚至一个现成的 HTTP 库就可以搞定浏览器的网络通讯部分。HTTP 是纯粹的文本协议,它是规定了使用 TCP 协议来传输文本格式的一个应用层协议。

常用方法

  • 浏览器通过地址栏访问页面都是 GET 方法。
  • 表单提交产生 POST 方法。
  • HEAD 则是跟 GET 类似,只返回请求头,多数由 JavaScript 发起
  • PUT 和 DELETE 分别表示添加资源和删除资源,但是实际上这只是语义上的一种约定,并没有强约束。
  • CONNECT 现在多用于 HTTPS 和 WebSocket
  • OPTIONS 和 TRACE 一般用于调试,多数线上服务都不支持

HTTPS

参考文章

HTTPS 有两个作用,一是确定请求的目标服务端身份,二是保证传输的数据不会被网络中间节点窃听或者篡改。
HTTPS 是使用加密通道来传输 HTTP 的内容。但是 HTTPS 首先与服务端建立一条 TLS 加密通道。TLS 构建于 TCP 协议之上,它实际上是对传输的内容做一次加密,所以从传输内容上看,HTTPS 跟 HTTP 没有任何区别

HTTP 2

HTTP 2.0 最大的改进有两点,一是支持服务端推送,二是支持 TCP 连接复用。
服务端推送能够在客户端发送第一个请求到服务端时,提前把一部分内容推送给客户端,放入缓存当中,这可以避免客户端请求顺序带来的并行度不高,从而导致的性能问题。
TCP 连接复用,则使用同一个 TCP 连接来传输多个 HTTP 请求,避免了 TCP 连接建立时的三次握手开销,和初建 TCP 连接时传输窗口小的问题

  1. 内容安全,应为 http2.0 是基于 https 的,天然具有安全特性,通过 http2.0 的特性可 以避免单纯使用 https 的性能下降
  2. 二进制格式,http1.X 的解析是基于文本的,http2.0 将所有的传输信息分割为更小的 消息和帧,并对他们采用二进制格式编码,基于二进制可以让协议有更多的扩展性,比 如引入了帧来传输数据和指令
  3. 多路复用,这个功能相当于是长连接的增强,每个 request 请求可以随机的混杂在一 起,接收方可以根据 request 的 id 将 request 再归属到各自不同的服务端请求里面,另外 多路复用中也支持了流的优先级,允许客户端告诉服务器那些内容是更优先级的资源, 可以优先传输。多路复用代替了 HTTP1.x 的序列和阻塞机制,所有的相同域名请求都通过同一 个 TCP 连接并发完成。在 HTTP1.x 中,并发多个请求需要多个 TCP 连接,浏览器为了控制资源会有 6-8 个 TCP 连接都限制。

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!