HTTP之1 HTTP协议(HTTP协议概述、HTTP消息、缓存控制相关头部、Cookie相关头部)

1、HTTP 协议概述web


HTTP协议历史与标准编程

  - HTTP/1.0:  1996年制定,支持多种请求方法,支持多媒体对象,获得普遍应用缓存

  - HTTP/1.0+: 支持持久链接、虚拟主机、代理链接等新特性,成为非官方的事实标准性能优化

  - HTTP/1.1:  1999年定制,校订HTTP中的设计缺陷,性能优化,删除一些很差的特性服务器

  - HTTP-NG(或者HTTP/2.0):关注HTTP协议的性能优化以及更强大的服务逻辑远程执行框架,研究工做仍在进行中框架


请求与响应流程编程语言

wKiom1cDUgzSbpH_AAGrlg-08E0303.png

  - Message,消息/报文,是在HTTP客户端与服务器间传递的数据块ide

  - HTTP协议规定,消息必须符合特定的格式才能被彼此理解。性能

  - Request Message: 客户端向服务器发送的请求消息优化

  - Response Message: 服务器端根据客户端的请求消息,返回给客户端的响应消息

wKiom1cDU4zwTFG6AAEWuK807ng709.png


2、HTTP消息


HTTP消息结构概述

  - HTTP 消息是简单的格式化数据块

  - 每一个消息都由三部分组成

      - Start Line: 消息起始行,必需,消息基本描述信息

      - Header: 消息头部/报头,可能有0-N个,消息详细属性

      - Body: 消息主体,可选,包含数据的主体

  - 起始行和消息头是纯ASCII字符,每行以CRLF结束

  - 消息主体是一个可选的数据块,其中的数据能够为空,或者是字符数据(如HTML、CSS、JavaScript等字符数据),或者二进制数据(如图片、音频、视频等字节数据)


请求消息结构

  - 客户端发起的一个请求消息应符合以下格式要求

wKioL1cDV4-A3biGAABckpyiHoQ755.png

  - 请求行:请求方法 空格 请求URL 空格 协议版本CRLF

  - 请求头部:可能包含0-N个请求头(名/值对)CRLF

  - 一个空白行CRLF

  - 请求主体:可选,提交给服务器的请求数据


请求行与请求方法

  - 请求消息请求服务器对资源进行一些操做

  - 请求消息的起始行称为"请求行",包含以下三部分:

wKiom1cDV1XBLcTIAAAxwIS78_4285.png

  - 请求方法包括以下几种

wKiom1cDVzzSq***AAKC_JJGwAA332.png


请求头

  - 请求头可用于描述请求自己、客户端、请求体的特征

  - 请求头能够分为以下四种:

      - 通用头部:在请求消息或响应消息中均可以使用

wKioL1cDWQzjgilZAAA4oq5OJoY753.png

      - 请求专用头部:只能出如今请求消息中

wKiom1cDWQzBI4E9AABxBHNo4nw882.png

      - 实体头部:描述消息主体特征

wKioL1cDWcrwJG20AABe1EeoQbg393.png      - 扩展头部: 自定义的头部


请求主体

  - 请求主体中保存着客户端提交给服务器,须要服务器加以处理(POST)或者保存(PUT)的数据

  - 请求主体中可能包含字符数据,也可能包含字节数据


响应消息结构

  - 服务器发返回给客户端的一个响应消息应符合以下格式要求:

wKioL1cDWonw10S7AABcfyWI9e8845.png

  - 响应行:协议版本 空格 状态码 空格 缘由短语CRLF

  - 响应头部:可能包含0-N个响应头CRLF

  - 一个空白行CRLF

  - 响应主体: 可选,返回给客户端的响应数据,多是字符数据,也多是字节数据


响应状态行与响应状态码

  - 响应消息是服务器返回给客户端的数据块

  - 响应消息的起始行称为"响应行",包含以下三部分:

wKiom1cDWu2D2-HrAAAvTXMdxwM643.png

wKioL1cDW7uDDqe5AAKuNLI_M6k606.pngwKiom1cDW5vT1eiCAAJIjQRM3hg456.png



响应头

  - 响应头可用于描述响应自己、服务器、响应主体的特征。

  - 响应头部分为以下四种:

      - 通用头部: 在请求消息或响应消息中均可以使用

wKioL1cDXQvhMfyqAAA5LzggnoU278.png

      - 响应专用头部: 只能出如今响应消息中

wKiom1cDXHexOiwIAAAYQxT1Zf0991.png

      - 实体头部:描述消息主体特征

wKiom1cDXIvjFZciAABvmhcynok405.png      - 扩展头部: 自定义的头部



响应主体

  - 响应主体中包含着服务器返回给客户端的数据主体(GET/POST)

  - 根据请求URL的不一样,响应主体中多是字符数据(如HTML、CSS、JavaScript、JSON等字符),或者字节数据(图片、音频、视频等各类字节数据)



内容类型与经常使用内容类型

  - 实体头部中的Content-Type头可用于指定消息主体中数据的内容类型(MIME类型)

  - 常见的MIME类型:

wKiom1cDXkHSrvQGAAE9lE_fMXY391.png



3、缓存控制相关头部


缓存工做原理

  - 客户端能够自动保存已经访问过的文档的副本,这些副本就称为"文档缓存"

  - 当客户端再次发送针对同一个URL的请求时,若是本地有"已缓存的副本",就能够直接从本地存储设备而不是远程服务器提取该文档了

  - 数据缓存有下列优势:

      - 减小了冗余的数据传输,节省客户端流量费用

      - 缓解服务器贷款瓶颈的问题,服务器能够节省出更多的带宽

      - 下降了对服务器的资源消耗和运行要求

      - 下降了因为远距离儿形成的加载延时 

  - 缓存可否命中的完整流程:

wKioL1cDYNLg4QtXAAE_KdYZi1Q294.png


Cache-Control头

  - Cache-Control:max-age头部表示从服务器将文档传来之时起,能够认为此文档处于新鲜状态的秒数

wKiom1cDYe7TG1b3AAAs0ICZJsU748.png

  - 服务器能够请求客户端不要缓存文档,或者将最大使用期设置为零,从而在每次访问的时候都进行刷新

wKiom1cDYgDT9TVDAAAmrzE3Dow886.png

  - 客户端在事先没有跟原始服务器进行再验证的状况下,不能提供对应数据的陈旧副本。但缓存仍然能够提供新鲜的副本

wKioL1cDYrzhXPy3AAApETUlZNE407.png


Expires头

  - Expires头部指定缓存的过时时间。HTTP设计者认为,因为不少服务器的时钟都不一样步,因此推荐最好用剩余秒数来代替过时的绝对时间

wKiom1cDY2fTJ6VpAAA3x_skF3A173.png

  - 若但愿客户端不要缓存资源,能够将过时时间设置为一个过去的时间,如:

 wKioL1cDZbrB0KzpAACtFEVqtEY173.png


控制HTTP头部方法

  - 能够修改Web服务器的配置文件,设置默认响应头部:

wKiom1cDZeXyOr8YAAEAXf-OZ3M898.png  - 还能够配置每一个HTML文件的HTTP-EQUIV标签控制缓存:

wKioL1cDZtyw4QYyAABRhSkFjsA699.png  - 除了上述两种方法,还能够在服务器端执行编程语言(如JSP、PHP、ASPX等)

wKiom1cDZ2aw7UWHAABYyjjPDGY422.pngwKioL1cDaCKQbLBFAABfRWW3yUU413.pngwKioL1cDaDSQJkVIAABjiCIerFc366.pngwKioL1cDaEbjskAyAACrXn8OeAw943.png


4、Cookie相关头部


Cookie工做原理

wKiom1cDZ7nR6nX7AAICDKdP8xs270.png


总结:本章内容主要介绍了 HTTP协议(HTTP协议概述、HTTP消息、缓存控制相关头部、Cookie相关头部)

相关文章
相关标签/搜索