zoukankan      html  css  js  c++  java
  • HTTP协议

    一、HTTP请求报文与响应报文格式

    请求报文包含三部分:

    1、请求行:包含请求方法、URI、HTTP版本信息
    2、请求首部字段
    3、请求内容实体

    响应报文包含三部分:

    1、状态行:包含HTTP版本、状态码、状态码的原因短语
    2、响应首部字段
    3、响应内容实体

    二、HTTP1.1新特性

    1、默认持久连接节省通信量,只要客户端服务端任意一端没有明确提出断开TCP连接,就一直保持连接,可以发送多次HTTP请求

    2、管线化,客户端可以同时发出多个HTTP请求,而不用一个个等待响应

    3、断点续传原理

    三、断点续传

    HTTP1.1协议中定义了断点续传相关的HTTP头 Range和Content-Range字段,一个最简单的断点续传实现大概如下: 
    1、客户端下载一个1024K的文件,已经下载了其中512K 
    2、网络中断,客户端请求续传,因此需要在HTTP头中申明本次需要续传的片段:Range:bytes=512000- 这个头通知服务端从文件的512K位置开始传输文件 
    3、服务端收到断点续传请求,从文件的512K位置开始传输,并且在HTTP头中增加:Content-Range:bytes 512000-/1024000,并且此时服务端返回的HTTP状态码应该是206,而不是200。 

    现实中,如果在发起续传请求时,URL对应的内容发生了变化,解决方式为:Last-Modified来标识文件的最后修改时间。

    四、URI与URL

    URI是uniform resource identifier,统一资源标识符,用来唯一的标识一个资源。

    URL是uniform resource locator,统一资源定位器,它是一种具体的URI,即URL可以用来标识一个资源,而且还指明了如何locate这个资源。

    五、常用的HTTP方法

    GET: 用于请求访问已经被URI(统一资源标识符)识别的资源,可以通过URL传参给服务器

    POST:用于传输信息给服务器,主要功能与GET方法类似,但一般推荐使用POST方式。

    PUT: 传输文件,报文主体中包含文件内容,保存到对应URI位置。

    HEAD: 获得报文首部,与GET方法类似,只是不返回报文主体,一般用于验证URI是否有效。

    DELETE:删除文件,与PUT方法相反,删除对应URI位置的文件。

    OPTIONS:查询相应URI支持的HTTP方法。

    六、HTTPS工作原理

    1、首先HTTP请求服务端生成证书,客户端对证书的有效期、合法性、域名是否与请求的域名一致、证书的公钥(RSA加密)等进行校验;

    2、客户端如果校验通过后,就根据证书的公钥的有效, 生成随机数,随机数使用公钥进行加密(RSA加密);

    3、消息体产生的后,对它的摘要进行MD5(或者SHA1)算法加密,此时就得到了RSA签名;

    4、发送给服务端,此时只有服务端(RSA私钥)能解密。

    5、解密得到的随机数,再用AES加密,作为密钥(此时的密钥只有客户端和服务端知道)。

    七、一次完整的HTTP请求过程

    1、建立TCP连接

    2、浏览器向Web服务器发送请求行

    3、浏览器发送请求头

    4、服务器应答。HTTP/1.1 200 OK ,应答的第一部分是协议的版本号和应答状态码。

    5、服务器发送应答头

    6、服务器向浏览器发送数据。发送一个空白行来表示头信息的发送已结束,然后以Content-Type应答头信息所描述的格式发送用户所请求的实际数据。

    7、服务器关闭TCP连接

    八、常见HTTP状态码

    2XX:请求正常处理

    3XX:重定向

    4XX:请求问题

    5XX:服务器问题

    九、HTTP优化方案

    1、TCP复用

    TCP连接复用是将多个客户端的HTTP请求复用到一个服务器端TCP连接上,而HTTP复用则是一个客户端的多个HTTP请求通过一个TCP连接进行处理。前者是负载均衡设备的独特功能;而后者是HTTP 1.1协议所支持的新功能,目前被大多数浏览器所支持。

    2、内容缓存

    将经常用到的内容进行缓存起来,那么客户端就可以直接在内存中获取相应的数据了。

    3、压缩

    将文本数据进行压缩,减少带宽

    4、SSL加速

    使用SSL协议对HTTP协议进行加密,在通道内加密并加速

    5、TCP缓冲

    通过采用TCP缓冲技术,可以提高服务器端响应时间和处理效率,减少由于通信链路问题给服务器造成的连接负担。

    十、HTTP2.0和HTTP1.X相比新特性

    1、新的二进制格式

    HTTP1.x的解析是基于文本,HTTP2.0的协议采用二进制格式,实现方便且健壮。

    2、多路复用

    即连接共享,即每一个request都是用作连接共享机制的。一个request对应一个id,这样一个连接上可以有多个request,每个连接的request可以随机的混杂在一起,接收方可以根据request的 id将request再归属到各自不同的服务端请求里面。

    3、header压缩

    HTTP1.x的header带有大量信息,而且每次都要重复发送,HTTP2.0使用encoder来减少需要传输的header大小,通讯双方各自cache一份header fields表,既避免了重复header的传输,又减小了需要传输的大小。

    4、服务端推送

    HTTP2.0也具有server push功能。

  • 相关阅读:
    seata 1.3.0 seata Global lock wait timeout
    Tika解析word文件
    我的第一款微信小程序:iteye附件下载器,希望大家好好爱惜
    读书《尸检报告》 [英]卡拉·瓦伦丁 / 中信出版集团2019-08
    读书《另一种选择》 [美] 谢丽尔·桑德伯格 / 中信出版集团2017-08
    读书《不朽的失眠》 张晓风 / 四川人民出版社2018-09
    Uniapp 修改内置组件样式无效解决方法
    Android studio中.9图片的含义及制作教程
    Diff算法
    js new一个对象的过程,实现一个简单的new方法
  • 原文地址:https://www.cnblogs.com/kingshine007/p/11585485.html
Copyright © 2011-2022 走看看