• http进一步认识


    好久不见各位,今天为大家带来http协议的进一步认识

    👀http协议的认识

    http协议经历了三个版本的演化,HTTP0.9是第一个版本的协议,它的组成极其简单,只涉及到简单的发送get请求,只允许客户端发送get请求,且不支持请求头,由于没有协议头,造车了http0.9协议只支持一种内容,即纯文本,但是网页仍然支持html语言格式化,同时无法插入图片。
    http具有典型的无状态性,每一个事务都是独立处理的,什么是无状态呢? 无状态是指协议对于事务处理没有记忆功能。 缺少状态意味着,假如后面的处理需要前面的信息,则前面的信息必须重传,这样可能导致每次连接传送的数据量增大。 另一方面,在服务器不需要前面信息时,应答就较快。它的请求和连接过程如下
    一次HTTP0.9的传输首先要建立一个由客户端到web服务器的tcp连接,由客户端发起一个请求,然后由web服务器返回页面内容,然后连接会关闭。如果请求的页面不存在,也不会返回任何错误

    2、HTTP 1.0

    HTTP协议的第二个版本,第一个在通讯中指定版本号的HTTP协议版本,至今仍被广泛采用。相对于HTTP 0.9 增加了如下主要特性:
    请求与响应支持头域
    响应对象以一个响应状态行开始
    响应对象不只限于超文本
    开始支持客户端通过POST方法向Web服务器提交数据,支持GET、HEAD、POST方法
    支持长连接(但默认还是使用短连接),缓存机制,以及身份认证,

    3.HTTP 1.1
    这个是http协议的第三个版本,是目前使用的最广泛的协议版本 ,HTTP 1.1引入了许多关键性能优化:keepalive连接,chunked编码传输,字节范围请求,请求流水线等

    • Persistent Connection(keepalive连接)
      允许HTTP设备在事务处理结束之后将TCP连接保持在打开的状态,一遍未来的HTTP请求重用现在的连接,直到客户端或服务器端决定将其关闭为止。

    在HTTP1.0中使用长连接需要添加请求头 Connection: Keep-Alive,而在HTTP 1.1 所有的连接默认都是长连接,除非特殊声明不支持( HTTP请求报文首部加上Connection: close )

    • chunked编码传输
      该编码将实体分块传送并逐块标明长度,直到长度为0块表示传输结束, 这在实体长度未知时特别有用(比如由数据库动态产生的数据)

    • 字节范围请求
      HTTP1.1支持传送内容的一部分。比方说,当客户端已经有内容的一部分,为了节省带宽,可以只向服务器请求一部分。该功能通过在请求消息中引入了range头域来实现,它允许只请求资源的某个部分。在响应消息中Content-Range头域声明了返回的这部分对象的偏移值和长度。如果服务器相应地返回了对象所请求范围的内容,则响应码206(Partial Content)

    • Pipelining(请求流水线)

    👀新的改变

    HTTP 1.1还新增了如下特性:
    1.请求消息和响应消息都应支持Host头域
    2.新增了一批Request method,增加了OPTIONS,PUT, DELETE, TRACE, CONNECT方法,引入了实体标签,一般被称为e-tags,新增更为强大的Cache-Control头。

    HTTP 2.0是下一代HTTP协议,目前应用还非常少,这里就不做介绍了~

  • 相关阅读:
    Ps 在用鼠标滚轮缩放图片时,速度太快?
    java计算机毕业设计高校校园社交网络源程序+mysql+系统+lw文档+远程调试
    etcd MVCC 存储结构及流程
    matlab simulink 电网扫频仿真和分析
    ASP.Net Core异步编程
    基于属性词补全的武器装备属性抽取研究
    软件之间沟通的大喇叭:Android四大组件之广播机制
    每条你收藏的资讯背后,都离不开TA
    认识C语言函数
    ceph分布式存储系统
  • 原文地址:https://blog.csdn.net/weixin_61436104/article/details/134178847