目录
http协议1.1和2的区别
介绍
1.x的设计基于早期的互联网
- 早期互联网带宽有限+信道质量差(需要让tcp协议保证数据传输的正确性)
而http/2 -- 管道化
- 它的优化目标就是让每一个tcp连接可以被多个http会话复用 -- 减少服务端需要轮询的句柄数量,减轻服务端压力
数据传输格式
HTTP/1.1
使用纯文本格式传输数据
-
头部信息以文本形式表示,数据部分可以是文本/二进制
HTTP/2:
采用二进制分帧层
- 将所有传输的信息分割为更小的帧,并以二进制格式编码
- 这些帧按序列号发送和接收,并在接收端重新组装成完整的消息
- 这种方式提高了数据传输的灵活性和效率
文本协议和二进制协议的区别
二者间区别在于,协议是以文本字符串为导向,还是以数据结构为导向
文本协议请求
- 内容由文字构成
二进制请求
- 排列会比文本协议更加紧凑
- 不需要添加特殊字符来辅助解析一段文字
- 数字占用空间更小:比如http中状态码200,在文本协议中, "2" "0" "0"这三个数字需要分别用编码表示 ; 但是在二进制协议中,直接用二进制11001000表示数字
二进制分帧层
引入
- http/2中的二进制分帧层给一个tcp链接同时发送多个请求提供了可能
- 二进制分帧层可以解决 -- 当一次发送多个请求/响应时,如何找到对应的请求和响应? 的问题
- 为什么要解决这个问题?
- 因为请求和响应本身拥有的字段无法一一对应
那在HTTP/1中,请求和响应为什么可以对应起来?
- 因为在HTTP/1中,一个tcp请求只能同时完成一个请求响应过程
- 所以请求以及响应天生一一对应,不存在响应和请求无法匹配的问题
介绍
首部信息被封装成Headers帧,主体部分被封装成