HTTP报文格式,HTTP1.0 1.1 2.0

目录

一、HTTP是什么?

二、HTTP报文格式

1.请求报文

1.1请求方法

1.2URL的组成部分

1.3版本号:描述协议所用版本。

1.4请求头

二.http1.0与http1.1的区别

三.http2.0


一、HTTP是什么?

http是一种超文本传输协议,可以传输文本,视频,图片,音频,超链接等,是一种应用层的传输数据的规范。

二、HTTP报文格式

1.请求报文

请求报文包括请求行,请求头,空行,请求主体

请求行包括请求方法,URL,协议版本

1.1请求方法

http1.0 请求方法常见的是get和post方法,get用于请求服务器数据(对服务器数据没影响的场景,比如请求页面),post会向服务端发送数据(会改变服务器数据的内容,比如注册)

http1.1又加入head,options,put等

put与post的区别:post会创建新的资源,而put是更新资源

get和post的区别:

1.get的请求信息写在URL中,没有请求体,而且URL的字数受限;post请求信息写在请求体中,请求不受限制。

2.get请求会被浏览器缓存,post一般不会。

3.post相较于get更安全,因为URL属于明文传输。

4.get会产生一个数据包直接把头部和数据一起发,post会产生两个数据包先发头部服务器响应100,再发data。

1.2URL的组成部分

例子:
https://learn.microsoft.com/zh-cn/dotnet/api/system.web.ui.webcontrols.treenode.target?redirectedfrom=MSDN&view=netframework-4.8#System_Web_UI_WebControls_TreeNode_Target

 

https :协议名;

learn.microsoft.com:域名;

端口:一般在域名后面用:连接(http默认为80端口,https为443,都省略);

/zh-cn/dotnet/api/system.web.ui.webcontrols.treenode.target服务器上的资源路径;

redirectedfrom=MSDN&view=netframework-4.8:查询条件(用&隔开的键值对,post请求一般不会带参数,get会);

#System_Web_UI_WebControls_TreeNode_Target:锚点;

1.3版本号:描述协议所用版本。

1.4请求头

携带一些可选项,类似于键值对;

比如  host:127....  指明服务器的域名

connect:keep-alive持久连接,等等

二.http1.0与http1.1的区别

1.头部加入了host,1.0认为一个服务器绑定一个ip,但是现在一台物理主机可以有多个虚拟机共享一个ip,因此加入host传递主机名。

2.头部加入keep-alive,1.0默认为短连接传输完成后自动断开,1.1默认开启keep-alive长连接避免多次连接带来的延时。

3.头部加入了range,允许请求资源的某个部分,返回码为206,1.0默认传递整个对象会造成资源浪费

4.1.1引入了更多的缓存控制策略。

三.http2.0

1.实现了请求的多路复用且采用流水线技术,1.0采用的是请求-应答的模式, 将请求放入队列中,先入先出处理,这会造成队头堵塞,而多路复用解决阻塞问题,每个tcp连接可处理多个请求和应答,http是基于tcp协议的,而tcp采用慢启动的方式逐步加大传输量,这让短时性和突发性的http变得很低效,多路复用可以更有效的使用tcp连接。

2.数据流:多路复用导致可以无序发送数据包,可能一个链接的连续数据包属于不同请求,因此http2.0将每个请求或相应的所有数据包称为一个数据流,每个数据流有一个ID便于区分;

3.优先级:提高重要请求的优先级,比如先加载浏览器首页,在加载其他静态资源;

4.header压缩机制:头部有一些信息每次请求都重复发送且内容重复,比如cookie,agent等,

客户端和服务器分别维护 静态索引字典,动态索引字典,静态哈夫曼编码

对于完全相同的就用索引代替

5.服务器推送:

服务器可以未经请求将一些静态资源同主页发送到客户端,提前推送一些必要的资源,减少延迟;

6.采用二进制格式,1.x解析基于文本,这需要考虑很多场景,二进制只有01组合增强程序健壮性且实现方便。


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BlackMonkeyHH

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值