http理论知识梳理

201 阅读6分钟

1. http有哪些请求方式?分别用在什么场景下面?

常见请求方式:GET,PUT,POST,DELETE,OPTIONS

GET和POST的区别:

- 缓存:get会被浏览器缓存,post不会;
- 安全性:get是明文传参,传参长度有限制;post可以传递更多数据类型的参数,无长度限制;
- 数据更新:get用于获取信息;post用于更改信息

OPTIONS:

- OPTIONS是一种HTTP请求方法;
- 获取当前服务器的状态、性能、特征;
- 检查访问权限 => 权限、CORS

2. http的头部压缩算法(HPACK)是如何的?如何降低开销的?

HPACK算法

1)客户端和服务端共同维护建立字典,引用索引来标识重复的字符串
2)通过编码算法压缩字符串,从而进一步减小头的大小

客户端、服务端利用字典来跟踪和实时存储之前发送的数据值,实时记忆 对于相同的数据,不再通过每次请求和响应重复发送(即:不会重复发送一样的请求头数据)

4. 了解http请求头和响应头的常见属性

  • 请求头:浏览器告知服务器自己的能力和配置
Accept-*  浏览器的能力
content-type:传输的数据格式;
connection:连接状态(keep-alive);
user-Agent:浏览器环境;
host:域名信息;
cookie;

  • 响应头:服务器告知自己的能力
Date;
server;
connection;
cache-control;
content-type:
- application/json  序列化后的字符串
- application/x-www-form-urlencoded -原生form表单格式
- multipart/form-data   表单提交post

5.HTTP状态码

    1xx:信息类,表示服务器已接收到信息;
    2xx:请求成功;
    3xx:重定向;
        304:浏览器缓存相关
        301:永久重定向
        302:临时重定向
        303:有一个更加合适的途径
    4xx:客户端错误,表示浏览器无法根据当前的参数进行请求处理
        400:请求参数出现错误
        401:认证失败
        403:请求成功,但返回拒绝
        404:请求的资源访问不到
        405:请求的方式不被允许
    5xx:服务端错误
        500:服务器程序错误,接口报错
        502:服务器网关错误;
        503:服务器停机

6. 302 303 307三种重定向的区别有了解吗?

302 是http1.0中出现的重定向
http/1.1细化派生除了303307
        303将当前的post请求变为get请求进行重定向
        307当前的重定向会严格按照浏览器的诉求,不会从post变成get

7.HTTP版本差异

**http1.0**
缺点:没有持久连接,一个TCP只能发送一个请求;相当于每请求一个资源就需要造成一个TCP建立和连接

**http1.1**
持久型连接
管道机制(同一个Tcp可发送多个请求)
新增了PUT ,DELETE的请求方式
缺点:
由于管道机制的产生,虽然请求有多个并发,可是服务器还是需要一一处理,所以会造成对头阻塞问题。(例如:前一个请求的响应延迟)

**http2.0**
基于UDP,没有三次握手四次挥手的概念
请求头采用HPACK压缩算法

**https**
概念:在http的基础上建立SSL加密层,对传输的数据进行加密,是http的安全版

8.HTTP和HTTPS的区别

https添加了SSL加密传输,身份认证
https更加有利于搜索引擎
https标准端口号443,http是80

9.http1.1和http2.0的区别

**二进制协议**
1.1 头信息:文本;数据体:文本、二进制
2.0 头信息/数据体:二进制 信息流统称为帧
**多路复用**
2.0中复用tcp连接的同时,也能同时发送多个请求和回应
**数据流**
2.0中引入了数据流的概念,并且以数据流id作为索引
**头信息压缩**
HPACK算法头部压缩,对头部进行字典化索引以及压缩
**服务端推送**
2.0允许服务端主动向客户端推送信息

10.http的keep-alive?建立过程和使用场景,优缺点

1.0 默认短链接的形式,keep-alive是默认关闭的
1.1 默认长链接的形式,connection:close会进行关闭

建立过程:
    1)客户端发送报文夹带keep-alive的头配置
    2)服务端接收并处理,并且返回keep-alive的返回头
    3)客户端维持当前长链接建立

服务端主动断开:
    1)等客户端请求
    2)服务端返回请求并且不带keep-alive
    3)关闭连接

客户端主动断开:
    1)客户端请求头带上close字段
    2)服务端接受后处理并断开连接
    3)客户端接收资源并关闭连接

好处:
    服务端 - CPU和内存占用下降
    请求和回复复用管道变少 - 降低拥塞
    减少了后续请求的延时
    无需每次异常都关闭TCP

缺点:
    长时间连接可能会导致无效占用

11.SSL/TLS是什么?作用和工作原理?

它是一层安全协议,主要依赖:散列函数,对称加密,非对称加密
     1)散列函数hash(MD5SHA1…… )
         => 单向不可逆,且输入敏感型,输出长度固定 
         => 任何对于数据的修改都会导致他值的变化
         => 验证信息的完整性

    2)对称加密
    特点是两者公用一种密钥,同时用其进行加解密
        => 存在问题:如何保证密钥的传输安全性

    3)非对称加密
    利用公钥和对应私钥的互相加解密能力进行加密
        => 存在问题:中间截取问题
        => 数字证书:可信度高的机构

12.websocket基础原理?使用方式特点?

全双工的网络技术 => 应用层
基于TCP传输协议,可以复用HTTP的通道
原理:
    请求 - 客户端向服务端发送notify => id + event
    推送 - 立即通知所有客户端,id满足的客户端,才会响应当前推送的反馈

13.OSI七层模型/TCP四层模型

image.png

14.TCP与UDP的区别

TCP:
面向连接:需要经历三次握手
可靠传播
一对一
面向字节流
提供拥塞控制:初始乘指数级增长,到达门限值之后,每步递增1增长,到达最高限定值之后,将门限值设置为最高值的1/2,然后初始从0开始增长(增上规律跟之前一致)
UDP:
无连接
多对多:存在单播、广播
面向报文
适用于视频会议,直播等通信