http笔记

结构图

在这里插入图片描述

HTTP1.0

  • 默认无连接,使用 keep-alive 参数建立长连接
  • 队头阻塞:前一个请求响应后才能发送下一个请求
  • 缓存:主要使用header里的协商缓存 last-modified\if-modified-since,强缓存 Expires来做为缓存判断的标准
  • 不支持断点续传:每次都会传送全部的页面和数据
  • 没有host域:认为每个服务器绑定唯一一个IP地址,因此在请求消息的URL中没有主机名

last-modified\if-modified-since:资源的更新时间。确认本地资源有效期。如果服务器端该时间更新则说明资源更新过,需要客户端重新获取。
Expires :缓存有效期。超过该时间,浏览器中一个网页或 URL 地址缓存失效,浏览器应联系原始服务器。
由于推断的失效时间也许会降低语义透明度,应该谨慎使用,原始服务器尽可能提供确切的失效时间。”

HTTP1.1

  • 长连接。减少了 TCP 连接的重复建立和断开所造成的额外开销,减轻了服务器端的负载。如果HTTP 长连接超过keep-alive没有任何数据交互,服务端就会主动断开这个连接。
  • 管道传输:在同一个 TCP 连接里面,客户端可以同时发起多个请求,可以减少整体的响应时间。不是默认开启,而且浏览器基本都没有支持
  • 队头堵塞:服务器必须按照接收请求的顺序处理,如果A 请求时耗时比较长,则后续请求阻塞。
    管道解决了请求的队头阻塞,但是没有解决响应的队头阻塞。

HTTP2.0

HTTP/2.0协议是基于HTTPS的,更加安全

  • 头部压缩:如果同时多个请求其头部一样或相似,则消除重复部分(HPAK算法)。
  • 二进制格式:HTTP/1.x中,报文以文本格式,简单易读;2.0中,头信息帧+数据帧=帧,数据以数据流的形式以字节单位发送,数据包乱序发送
    每个请求/响应的所有数据包,称为一个数据流
    客户端还可以指定数据流的优先级。服务器优先响应
  • 多路复用:可以在一个连接中并发多个请求或回应。解决「队头阻塞」问题,延迟↓,连接的利用率↑。
  • 服务端推送:服务端可以主动向客户端推送消息
  • TCP导致队头阻塞

HPAK算法:在客户端和服务器同时维护一张头信息表,所有字段都会存入这个表,生成一个索引号,就不用重复发送同样字段了,只发送索引号,减少数据量提高速度
每个数据流以消息的形式发送,而消息由一或多个帧组成。

http2

HTTP3.0

TCP导致队头阻塞,所以HTTP3.0使用UDP实现可靠传输(QUIC)

QUIC

  • 三次握手来建立连接:需要 1 RTT,确认双方的「连接 ID」
  • 无队头阻塞:在同一条连接上并发传输多个Stream。多个 Stream 之间独立,当某个流发生丢包时,只会阻塞这个流,其他流不会受到影响,
  • 连接迁移:各端选择一组 ID 来标记自己,通过连接ID建立QUIC。IP变化,只要有上下文信息(比如连接 ID、TLS 密钥等),即可复用原连接,达到连接迁移。

TCP建立连接,需要四元组: 源 IP、源端口、目的 IP、目的端口。ip变化则重新连接
QUIC 是一个在 UDP 之上的伪 TCP + TLS + HTTP/2 的多路复用的协议。

QUIC

HTTPS

httphttps
定义B/S 应用层通信协议。Web服务器上存放超文本信息,客户端通过HTTP协议传输所要访问的超文本信息。HTTP + SSL(加密),HTTPS不是一个新的协议。
特点简单,灵活,服务器不用额外资源记录,减轻服务器负担,提高CPU内存利用效率服务器需要购买ca申请证书,客户端先和第三方确认服务器身份,再与服务器通信
无连接,无状态,支持B/S C/S因加密,消耗资源且通信效率低,证书付费
问题明文通信,窃听通信加密
报文可能被篡改,无法确完整性(使用MD5/SHA-1检测,但MD5值本身可能被修改)完整性保护
通信双方的身份验证,伪装证书认证
每次都要通过Cookie验证用户
SSL

用于数据压缩,解压,加密,身份认证
独立于http协议,可用于其他协议加密

加密方式

共享密钥加密(对称密钥)

双方使用同一密钥对传输报文进行加密解密,保证报文的安全。
问题:需要将密钥传输给对方,传输过程中密钥不安全,则报文依旧不安全。

公开密钥加密(非对称密钥)

发送方用公钥对报文加密并传输,接收方使用私钥对报文解密。
问题:

  • 公钥的安全性? ==》 第三方机构证书认证

  • 公钥机制复杂,处理速度慢

混合加密(HTTPS的加密方式)

使用非对称密钥加密的方式对共享密钥加密,共享密钥安全后,使用共享密钥加密的方式传输报文。
在这里插入图片描述

暂未解决问题:

  • 因任何人都可以向服务器发送请求,服务器全盘接收,所以服务器容易被DOS攻击
  • SSL
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值