目录:
一.HTTP
1.超文本传输协议
2.常见的状态码
3.常见的字段
4.GET和POST的区别
5.HTTP的特性
6.HTTP性能
7.HTTP的演变
二.HTTPS
1.对称加密和非对称加密
2.http的ssl握手
一.HTTP
1.超文本传输协议
HTTP是用于两点之间的传输协议。不止局限于互联网服务器到本地浏览器,也可以是服务器发送到另一台服务器
2.常见的状态码
- 1xx Informational(信息状态码)接受请求正在处理
- 2xx Success(成功状态码) 请求正常处理完毕
- 3xx Redirection(重定向状态码) 需要附加操作已完成请求
- 4xx Client Error(客户端错误状态码) 服务器无法处理请求
- 5xx Server Error(服务器错误状态码) 服务器处理请求出错
304: 不具有跳转的含义,表示资源未修改,重定向已存在的缓冲文件,也称缓存重定向,用于缓存控制。
3.常见的字段
(1)host:
host文件一个没有扩展名的系统文件,其作用就是用来存储一些常用的网络域名和与其对应的ip地址,当用户输入一个需要登录的网址时,系统就会先去host文件中查找,如果找到了就立即打开该网址,如果找不到就去DNS域名解析服务器中查找。(可以理解为缓存)
(2)Content-Type
字段:字段用于服务器回应时,告诉客户端,本次数据是什么格式。
(3)Content-Encoding 字段
字段说明数据的压缩方法。表示服务器返回的数据使用了什么压缩格式
4.GET和POST的区别
(1)GET是请求资源
(2)POST是提交资源
(3)安全幂等;安全幂等是多次请求之后,请求方的资源会不会发生变化,可想而知,POST是不安全幂等的。
(4)get没有请求体body
问:为什么head和body之间要加空行?
这是一道开放题,可以畅所欲言。
http是超文本传输协议,协议就是大家规定好的一个规范,这里加一个空行也是一个规范,它表示空行后面的就是实体。
5.HTTP的特性
优点:
(1)简单
(2)易扩展
(3)应用广泛和跨平台
缺点:
明文传输和无状态
无状态的双刃剑:这里用cookie解决问题
无状态是指的,无登录状态,即服务器不知道某个用户是否已登录过了。因为愚蠢的服务器不知道客户端是否已登录过了,
所以每次都要在交互场景(会话)中请求中带上上一次的请求信息,如账号、密码。明明只需要在/login接口中,才需要对
比数据库中的账号密码和客户端传的是否一致来确定合法性。这下在添加购物车中也需要再一次的进行同样的重复且没有必
要的操作,即降低了响应速度,又对用户不友好(因为每次都需要填账号,密码)。
缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另外人们常说的
“会话”概念则是上面的交互行为的另一种表述方式。
6.HTTP的性能
(1)长链接
没发送一次请求都需要经过三次握手,. HTTP/1.1 提出了长连接的通信方式,也叫持久连接。这种方式的好处在于减少了 TCP 连接的重复建立和断开所造成的额外开销,减轻了服务器端的负载。
持久连接的特点是,只要任意一端没有明确提出断开连接,则保持 TCP 连接状态。
(2)管道网络传输
HTTP/1.1 采用了长连接的方式,这使得管道(pipeline)网络传输成为了可能。即可在同一个 TCP 连接里面,客户端可以发起多个请求,只要第一个请求发出去了,不必等其回来,就可以发第二个请求出去,可以减少整体的响应时间。
(3)队头阻塞
因为当顺序发送的请求序列中的一个请求因为某种原因被阻塞时,在后面排队的所有请求也一同被阻塞了,会招致客户端一直请求不到数据,这也就是「队头阻塞」。好比上班的路上塞车。
7.HTTP的演变
(1).http1.0 -->http1.1
长连接和管道通信(但会有队头阻塞)
(2)http1.1 -->http 2.0
头部压缩
不是按顺序发送
指定数据流的优先级,先响应优先级高的请求
增加了服务器推送(但丢包会导致重传)
(3)http2.0 --> http3.0
把 HTTP 下层的 TCP 协议改成了 UDP
UDP 发生是不管顺序,也不管丢包的,但是UDP是不可靠传输,但基于 UDP 的 QUIC 协议 可以实现类似 TCP 的可靠性传输。
二.HTTPS
1.对称加密和非对称加密
其实对称加密就是,用什么锁去加密,就用什么锁去解密,是比较单纯的形式,而非对称就是,公钥是去加密,而私钥是用来解密的。
但是权威证书机构是反着来的,私钥是用来加密,公钥是用来解密。
(各大浏览器和操作系统已经维护了所有权威证书机构的名称和公钥
在这里有一点不一样,证书颁发机构是用私钥去给客户端的钥匙加密,用公钥给证书解密)
2.https的ssl握手