二、HTTP篇

一、HTTP基本概念

超文本传输协议、两点之间传输超文本数据的约定和规范。

200:OK成功状态码
204:和200基本相同,响应头无body数据
301 永久重定向 表示请求的资源被分配了新的URL,并在之后使用该URL
302 临时重定向	表示请求的资源不在本地而在另一个URL处,被分配了新的URL,希望在本次使用该URL
303 临时重定向	表示请求的资源被分配了新的URL  但会使用GET方式获取请求的资源
307 遵照浏览器标准严格不会从post变为get
400 请求报文中存在语法错误(getmapping 用post访问)
403 服务器拒绝访问(访问权限出现问题)
404 服务器没有找到资源
405 HTTP请求的方式不对,浏览器是get请求,后端写的是只支持post请求会报此错
500 服务器在执行时发生错误

HTTP由:

请求行 请求头 请求体组成
状态行 响应报头 响应正文
**常见字段**
host:域名 
Content-length:本次回应的数据长度
connection:keep-alive
content-type:响应的数据格式
Content-Encoding:服务器返回的数据采用什么格式压缩,告知客户端怎么解压
accept-encoding:客户端接受的压缩方式

无状态的好处:不需要额外资源来记录状态信息,减轻服务器负担
坏处:	完成一些有关联性的操作会非常麻烦

HTTP不安全,通信使用明文,内容可能被窃听,不验证通信方的身份(假淘宝)、无法证明报文的完整性。

HTTP1.0/1.1:

长连接:1.1默认了 
1.1支持管道网络传输,就是不必等待第一个请求的响应就可以发送第二个请求,减少整体的响应时间。

HTTP2 /1.1:

2会压缩头部,如果同时发送多个请求,头部是一样或相似,就会帮你消除重复的部分,HPACK算法
(客户端和服务端维护一张头信息表,所有字段都会存入这个表,生成索引,这样以后只发送索引,提高了速度)

2的报文是二进制格式(头部信息帧、数据帧) 这样做对计算机友好,直接二进制传输,增加了数据传输效率

2实现了多路复用,一个连接中并发多个请求或响应,不用按顺序一一对应着处理,避免了1的队头阻塞问题。

2支持服务器推送,主动向客户端发消息

HTTP3 VS 2

2的问题:一旦发生丢包,就会触发TCP重传机制,这样所有的HTTP请求都必须等待这个丢了的包被重传回来
3把HTTP下层的TCP改成了UDP,UDP结合QUIC(某个流丢包时,会阻塞这个流,其他流不受影响)
可实现类似的TCP可靠性传输

HTTP VS HTTPS

1、HTTP信息明文传输,存在安全风险。HTTPS解决HTTP不安全的缺陷,
在TCP和HTTP网络层之间加入了SSL/TLS安全协议,使得报文能够加密传输
2、HTTP连接建立的相对简单,TCP三次握手即可,
而HTTPS还需要进行SSL/TLS的握手过程,才可以进入加密报文传输
3、HTTP端口号80,HTTPS端口443
4、HTTPs协议需要向CA(证书权威机构)申请数字证书,来保证服务器的身份是可信的

HTTPS的加密方式

混合加密:通信建立前采用非对称加密方式交换会话密钥,后序就不用非对称加密
通信过程中采用对称加密,加密明文数据

HTTPS为啥这样子加密

对称加密只使用一个密钥,运算速度快,密钥必须保密,无法做到安全的密钥交换
非对称加密有公钥和私钥,公钥可任意分发而私钥保密,解决了密钥交换的问题,但是速度慢

HTTPS保证数据完整性

摘要算法:通过该算法算出明文的指纹,发送到服务器后通过对指纹的对比判断数据完整否?

CA数字证书

服务器的公钥保存在数字证书,因证书可信,所以公钥可信。
客户端拿公钥加密报文,服务端拿私钥解密报文

服务器把公钥注册到CA,CA用自己的私钥将服务器的公钥加密并颁发数组证书,
客户端拿CA的公钥确认证书的真实性,获取服务器公钥,加密发送给服务器,
服务器用私钥解密

SSL/TLS协议建立详细流程

1首先客户端向服务器发起加密通信请求,ClientHello请求,客户端向服务器发:
支持的SSLTLS版本,客户端生产的随机数,支持的密码套件列表,如RSA加密算法

2服务器收到客户端请求,发出响应,ServerHello:
确认SSL版本,如果浏览器不支持,则关闭加密通信
服务器产生随机数,确认密码套件,rsa密码,服务器CA

3客户端回应:会通过浏览器或操作系统中的CA公钥,确认服务器CA的真实性,若真,
客户端会从CA中取出服务器公钥,然后用它加密报文,向服务器发送如下:
被公钥加密的随机数、通知客户端接下来用什么会话密钥方式通信(会话密钥由三个随机数),FINISH(客户端握手结束通知,同时把之前所有内容做个摘要,供服务端校验)

4服务器最后回应:通过密钥解哪个会话密钥,然后做出回应:
接下来会用什么会话密钥方式通信、握手结束,并把内容做摘要,供客户端检验。

HTTP1.1优化思路:

1、避免发送HTTP请求(通过缓存)
2、减少HTTP请求次数(小资源合并一个大资源再去传输)
3、压缩响应资源,降低传输资源的大小
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值