网络基础:HTTP(1):请求的组成及状态码

1.HTTP请求中的内容

1.HTTP请求由三部分构成,分别为:
——请求行
——首部
——实体
2.请求行由请求方法,URL,协议版本组成
3.首部分为请求首部和响应首部,其中部分首部通用
在这里插入图片描述

2.HTTP状态码

1.状态码区分:

—— 1**:服务器接受到请求

—— 2**:操作被成功接收

—— 3**:重定向

—— 4**:客户端错误

—— 5**:服务器错误

2.具体状态码:

—— 100:客户端应当继续发送请求。即服务器那边接受了部分请求,例如一些浏览器会将header跟body分开发送

—— 101:通过Upgrade字段通知客户端采用不同的协议来完成请求,比如切换websocket

—— 206:客户端通过发送范围请求头range抓取资源部分数据,例如大文件下载

—— 301:永久重定向

—— 302:临时重定向。例如用户未登录跳到登陆页

—— 304:客户端发送了一个带条件的get请求,如果文档的内容没有改变,则返回该状态码

—— 400:语义有误。比如请求参数错误

—— 403:对请求资源的访问被服务器拒绝

—— 404:请求失败,请求的资源未在服务器被发现

—— 500:服务器无法处理请求

3.HTTP/1.x的缺陷,以及HTTP/1.1,HTTP/2的特点

1.缓存处理,在HTTP1.0中主要使用header里的If-Modified-Since,Expires来作为缓存判断的标准,HTTP1.1则引入了更多的缓存控制策略例如Entity tag,If-Unmodified-Since, If-Match, If-None-Match等更多可供选择的缓存头来控制缓存策略。

  1. 带宽优化及网络连接的使用,HTTP1.1在请求头引入了range头域,它允许只请求资源的某个部分,即返回码是206,这样就方便了开发者自由的选择以便于充分利用带宽和连接。

  2. 长连接,HTTP 1.1支持长连接和请求的流水线处理,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟,在HTTP1.1中默认开启Connection: keep-alive,一定程度上弥补了HTTP1.0每次请求都要创建连接的缺点。

  3. 新的二进制格式,HTTP1.x的解析是基于文本。基于文本协议的格式解析存在天然缺陷,文本的表现形式有多样性,要做到健壮性考虑的场景必然很多,二进制则不同,只认0和1的组合。基于这种考虑HTTP2.0的协议解析决定采用二进制格式,实现方便且健壮。

  4. 多路复用,一个TCP连接存在多个流,即可以同时发送多个请求,对端可以通过帧首部的标识符知道属于哪个请求。在客户端,这些帧乱序发送,到对端后根据每个帧的标识符重新组装。该技术可以避免HTTP旧版本的队头阻塞问题,即哪个请求先组装完成就处理哪个

  5. header压缩,如上文中所言,对前面提到过HTTP1.x的header带有大量信息,而且每次都要重复发送,HTTP2.0使用encoder来减少需要传输的header大小,通讯双方各自cache一份header fields表,既避免了重复header的传输,又减小了需要传输的大小。

  6. 服务端推送,服务端推送能把客户端所需要的资源伴随着index.html一起发送到客户端,省去了客户端重复请求的步骤。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值