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细化派生除了303 和 307
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(MD5、SHA1…… )
=> 单向不可逆,且输入敏感型,输出长度固定
=> 任何对于数据的修改都会导致他值的变化
=> 验证信息的完整性
2)对称加密
特点是两者公用一种密钥,同时用其进行加解密
=> 存在问题:如何保证密钥的传输安全性
3)非对称加密
利用公钥和对应私钥的互相加解密能力进行加密
=> 存在问题:中间截取问题
=> 数字证书:可信度高的机构
12.websocket基础原理?使用方式特点?
全双工的网络技术 => 应用层
基于TCP传输协议,可以复用HTTP的通道
原理:
请求 - 客户端向服务端发送notify => id + event
推送 - 立即通知所有客户端,id满足的客户端,才会响应当前推送的反馈
13.OSI七层模型/TCP四层模型
14.TCP与UDP的区别
TCP:
面向连接:需要经历三次握手
可靠传播
一对一
面向字节流
提供拥塞控制:初始乘指数级增长,到达门限值之后,每步递增1增长,到达最高限定值之后,将门限值设置为最高值的1/2,然后初始从0开始增长(增上规律跟之前一致)
UDP:
无连接
多对多:存在单播、广播
面向报文
适用于视频会议,直播等通信