1、HTTP 协议概述web
HTTP协议历史与标准编程
- HTTP/1.0: 1996年制定,支持多种请求方法,支持多媒体对象,获得普遍应用缓存
- HTTP/1.0+: 支持持久链接、虚拟主机、代理链接等新特性,成为非官方的事实标准性能优化
- HTTP/1.1: 1999年定制,校订HTTP中的设计缺陷,性能优化,删除一些很差的特性服务器
- HTTP-NG(或者HTTP/2.0):关注HTTP协议的性能优化以及更强大的服务逻辑远程执行框架,研究工做仍在进行中框架
请求与响应流程编程语言
- Message,消息/报文,是在HTTP客户端与服务器间传递的数据块ide
- HTTP协议规定,消息必须符合特定的格式才能被彼此理解。性能
- Request Message: 客户端向服务器发送的请求消息优化
- Response Message: 服务器端根据客户端的请求消息,返回给客户端的响应消息
2、HTTP消息
HTTP消息结构概述
- HTTP 消息是简单的格式化数据块
- 每一个消息都由三部分组成
- Start Line: 消息起始行,必需,消息基本描述信息
- Header: 消息头部/报头,可能有0-N个,消息详细属性
- Body: 消息主体,可选,包含数据的主体
- 起始行和消息头是纯ASCII字符,每行以CRLF结束
- 消息主体是一个可选的数据块,其中的数据能够为空,或者是字符数据(如HTML、CSS、JavaScript等字符数据),或者二进制数据(如图片、音频、视频等字节数据)
请求消息结构
- 客户端发起的一个请求消息应符合以下格式要求
- 请求行:请求方法 空格 请求URL 空格 协议版本CRLF
- 请求头部:可能包含0-N个请求头(名/值对)CRLF
- 一个空白行CRLF
- 请求主体:可选,提交给服务器的请求数据
请求行与请求方法
- 请求消息请求服务器对资源进行一些操做
- 请求消息的起始行称为"请求行",包含以下三部分:
- 请求方法包括以下几种
请求头
- 请求头可用于描述请求自己、客户端、请求体的特征
- 请求头能够分为以下四种:
- 通用头部:在请求消息或响应消息中均可以使用
- 请求专用头部:只能出如今请求消息中
- 实体头部:描述消息主体特征
请求主体
- 请求主体中保存着客户端提交给服务器,须要服务器加以处理(POST)或者保存(PUT)的数据
- 请求主体中可能包含字符数据,也可能包含字节数据
响应消息结构
- 服务器发返回给客户端的一个响应消息应符合以下格式要求:
- 响应行:协议版本 空格 状态码 空格 缘由短语CRLF
- 响应头部:可能包含0-N个响应头CRLF
- 一个空白行CRLF
- 响应主体: 可选,返回给客户端的响应数据,多是字符数据,也多是字节数据
响应状态行与响应状态码
- 响应消息是服务器返回给客户端的数据块
- 响应消息的起始行称为"响应行",包含以下三部分:
响应头
- 响应头可用于描述响应自己、服务器、响应主体的特征。
- 响应头部分为以下四种:
- 通用头部: 在请求消息或响应消息中均可以使用
- 响应专用头部: 只能出如今响应消息中
- 实体头部:描述消息主体特征
响应主体
- 响应主体中包含着服务器返回给客户端的数据主体(GET/POST)
- 根据请求URL的不一样,响应主体中多是字符数据(如HTML、CSS、JavaScript、JSON等字符),或者字节数据(图片、音频、视频等各类字节数据)
内容类型与经常使用内容类型
- 实体头部中的Content-Type头可用于指定消息主体中数据的内容类型(MIME类型)
- 常见的MIME类型:
3、缓存控制相关头部
缓存工做原理
- 客户端能够自动保存已经访问过的文档的副本,这些副本就称为"文档缓存"
- 当客户端再次发送针对同一个URL的请求时,若是本地有"已缓存的副本",就能够直接从本地存储设备而不是远程服务器提取该文档了
- 数据缓存有下列优势:
- 减小了冗余的数据传输,节省客户端流量费用
- 缓解服务器贷款瓶颈的问题,服务器能够节省出更多的带宽
- 下降了对服务器的资源消耗和运行要求
- 下降了因为远距离儿形成的加载延时
- 缓存可否命中的完整流程:
Cache-Control头
- Cache-Control:max-age头部表示从服务器将文档传来之时起,能够认为此文档处于新鲜状态的秒数
- 服务器能够请求客户端不要缓存文档,或者将最大使用期设置为零,从而在每次访问的时候都进行刷新
- 客户端在事先没有跟原始服务器进行再验证的状况下,不能提供对应数据的陈旧副本。但缓存仍然能够提供新鲜的副本
Expires头
- Expires头部指定缓存的过时时间。HTTP设计者认为,因为不少服务器的时钟都不一样步,因此推荐最好用剩余秒数来代替过时的绝对时间
- 若但愿客户端不要缓存资源,能够将过时时间设置为一个过去的时间,如:
控制HTTP头部方法
- 能够修改Web服务器的配置文件,设置默认响应头部:
- 还能够配置每一个HTML文件的HTTP-EQUIV标签控制缓存:
- 除了上述两种方法,还能够在服务器端执行编程语言(如JSP、PHP、ASPX等)
4、Cookie相关头部
Cookie工做原理
总结:本章内容主要介绍了 HTTP协议(HTTP协议概述、HTTP消息、缓存控制相关头部、Cookie相关头部)