1.0 概述

当你在浏览器里打开网页,就是一个http请示,这就是一个HTTP请求. #

http 译为超文本传输协议。

产生

http协议最初诞生于CERN(欧洲核子研究机构)的蒂姆 • 伯纳斯 - 李(Tim BernersLee)博士,他提出了一种让远隔两地的研究者们共享知识的构想,连成一个可相互参阅的www(world wide web 万维网)。

现在已经诞生了三项www构建技术,分别是把SGML(StandardGeneralized Markup Language,标准通用标记语言)作为页面的文本标记语言的 HTML(HyperText Markup Language,超文本标记语言);作为文档传递协议的 HTTP ;指定文档所在地址的URL(UniformResource Locator,统一资源定位符)。

http/0.9版本诞生于1990年,但那时候没有还没有作为标准被建立。正式公布标准是在1996年的5月,版本命名为http/1.0。

并记载于RFC1945,虽说是初期标准,但至今仍被服务器广泛采用。1997年1月公布了http/1.1版本。

HTTP/2是HTTP协议自1999年HTTP 1.1发布后的首个更新,主要基于SPDY协议。于2015年5月以RFC 7540正式发表。

HTTP/2的标准化工作由Chrome、Opera、Firefox、Internet Explorer 11、Safari、Amazon Silk及Edge等浏览器提供支持。

http协议常用的有HTTP1.0和HTTP1.1. 在HTTP1.0中每个命令都会触发一次TCP连接的建立和断开. HTTP1.1中可以在一个CTP连接上发送多个命令和应答,这样可以大量减少TCP连接的建立和断开操作,从而提高效率.

命令

http的主要命令

  1. OPTIONS 设置选择
  2. GET 获取指定URL的数据
  3. HEAD 仅获取文档首部
  4. POST 请求服务器接收URL指定文档作为可执行信息
  5. PUT 请求服务器保存客户端传送的数据到URL指定文档
  6. DELETE 请求服务器删除URL指定页面
  7. TRACE 请求消息返回客户端

http实际访问流程

#

特征

http协议的特征

无状态

使用http协议通信时,每当有新的请求发送时,就会有新的响应产生。协议本身不保留之前通信的信息。这是为了能够更快的处理大量事务,确保协议的可伸缩性。特意设计的。

Cookie的会话管理

由于http协议本身无状态,但是有时候又需要保持通讯的状态或者通讯的信息,Cookie应运而生。会根据从服务器端返回的响应中有个set-cookie的首部字段来通知客户端保存Cookie。当下次发送请求时,客户端会自动带上Cookie信息供服务器识别。

持久通信

早期的网络通信包含的信息量较少,每次通讯时建立新的连接,不需要时断开连接,是能够接受的。随着互联网的发展,信息量越来越大,频繁的建立连接,断开连接是很大的开销,尤其是随着社交网络的发展,动辄成百上千万人同时在线,频繁的断开,建立连接对于网站来说是不可接受的。所以在http/1.1和一部分http/1.0想出了持久连接的方法。特点是只要任意一端没有明确提出要断开链接,则保持tcp链接状态。不但减少了tcp连接的重复建立和断开带来的额外开销,减轻了服务器端的负载压力。另外节省出的那部分时间能够让http请求和响应更快的结束,提高了web页面的显示速度。

管线化

能够做到并行发送多个请求,而不需要等待响应。