HTTP

3/12/2022 计算机网络

# 1. HTTP有哪几种协议?

查看答案
  • HTTP0.9(不是正式标准)
  • HTTP1.0
  • HTTP1.1
  • HTTP2.0
  • HTTP3.0

# 2. HTTP1.0的特点

查看答案
  1. TCP链接无法复用,每次请求都要三次握手,四次挥手
  2. 无法并行请求数据,容易造成队头阻塞

# 3. HTTP1.1的特点和优化点(区别)

查看答案
  1. 使用长链接Connection:Keep-alive,在一个TCP上可以发送多个HTTP请求和响应
  2. 使用管线化,浏览器可以并行发送请求,但是对于请求的响应依旧遵循先进先出,一个响应处理完后再处理下一个,并没有解决队头阻塞的问题。
  3. 增加了与缓存相关的请求/响应头
  4. 进行带宽优化,支持断点续传
  5. 新增错误类型,增强错误和响应码的语义特性
  6. 新增HOST头处理,若请求头中无HOST,就会报错

# 4. HTTP1.1存在的问题是什么?

查看答案
  1. HTTP1.1并没有解决队头阻塞的问题
  2. 明文传输,有安全隐患
  3. header内容多,增加传输成本
  4. 默认开启Keep-alive会造成性能压力(如果只有一个请求,长时间不关闭链接会造成性能压力)。

# 5. HTTP2.0和HTTP1.X的区别

查看答案
  1. 多路复用
    • 代替了HTTP1.x的序列和阻塞机制,所有的相同域名请求都通过一个TCP连接并发完成。在HTTP1.x中,并发多个请求需要多个TCP连接,浏览器为了控制资源都会有6-8个TCP连接限制。
    • 一个域名下单个TCP上可以并行交错请求和响应,之间无不干扰。
    • 可以并行多个请求,每帧分配一个流标识符id,通过id识别对应哪个请求,某请求超时也不会阻塞,解决了队头阻塞的问题。
    • 而且还可以根据id进行优先级的分配,服务端可以确定处理顺序。
    • 可以由客户端主动示意停止发送或减少发送的数据量。
  2. 服务器推送
    • HTTP/2 允许服务器未经请求,主动向客户端发送资源。
    • 主动返回一些资源存到内存中(相当于预加载),但是客户端还是主导地位,可以发送 RST_STREAM 来显式的停止这种推送。
    • 服务器主动推送的是静态资源,和 WebSocket 以及使用 SSE 等方式向客户端发送即时数据的推送是不同的。
  3. 头信息压缩
    • HTTP1.x带来的header有大量的信息,并且每次都要重复发送,HTTP2.0使用gzip 或 compress 压缩后再发送,且客户端和服务器同时维护一张头信息表,所有字段都生成一个索引号,每次只发送索引号。
    • 采用HPACK压缩算法。
    • 索引表中有静态表和动态表,静态表中最常用的http62个键值对,只发61个id,动态表中头信息只发一次,之后的就发id。
    • 采用霍夫曼编码,专门用户字符串和数字压缩的,可以将索引表压缩到十几个字节或者几个字节。
  4. 使用二进制协议:新的二进制协议被称为二进制分帧层协议,可以分为头信息帧和数据帧,帧的概念是它实现多路复用的基础。HTTP1.x基于文本(ASCII 编码),文本协议解析缺陷很多,HTTP2.0的二进制格式解析更高效。

# 6. HTTP2.0是不是必须用HTTPS?

查看答案

在HTTP2上必须上SSL,但是现在浏览器在用的时候都在实现上要求添加https,也有一些浏览器不要求。

# 7. HTTP 3.0有什么特点?

查看答案
  1. TCP/IP 丢包会重新发包,基于UDP的QUIC协议,彻底解决队头阻塞
  2. 网络状态改变时连接保持,例如:WIFI断开、网络切换为3G或4G时

# 8. 说说长链接

查看答案

长短链接说的是TCP链接,TCP链接是一个双向通道,它可以保持一段时间不关闭。HTTP1.1中将Connection设置为Keep-alive,发送HTTP请求不需要每次都三握四挥,提升了一定的效率。长链接并不是永久链接,一段时间没有发送HTTP请求,长链接就会断开,超时时间可以在header中设置。

# 9. HTTP实现主动推送

查看答案
  1. 在HTTP1.1时代,服务器推送功能主要有三种途径:
    • ajax短轮询
    • ajax长轮询
    • websocket
  2. HTTP2.0支持服务端推送

# 10. websocket和socket

查看答案
  • socket是对tcp/ip协议的抽象,他是一组接口
  • websocket是基于http,http基于tcp/ip所以websocket有http的请求头
更新时间: 2022-03-31 02:04