HTTP概述
一、什么是HTTP?
HTTP——因特网的多媒体信使。HTTP全名叫做“超文本传输协议”(Hyper Text Tranfer Protocol),是一个简单的请求—响应协议。它经常用于在HTTP客户端和HTTP服务器中传输信息。它是一个可靠的数据传输协议,因此即使数据来自地球的另一端,它也能够确保数据在传输的过程中不会被损坏或产生混乱。
什么是协议呢?
我个人理解:协议就是人们商量好,一起制定的一个标准,这个标准规定了一系列规范,其中包含了数据是如何传输的,数据应该从哪传输到哪等等。当我们在浏览器地址栏里写上http://这几个字母和符号后,浏览器就知道了它应该用http协议,并且之后都按照http协议规定的标准来进行工作。
二、Web客户端和服务器
web内容都是存储在web服务器上的,web服务器所使用的是HTTP协议,因此经常会被称为HTTP服务器。而最常见的HTTP客户端就是web浏览器。
三、HTTP的位置
我们都知道OSI七层模型和TCP/IP四层模型:
HTTP协议就处在应用层,其下层协议是TCP协议(TCP协议运行在传输层),TCP协议的下层协议是IP 协议(IP协议运行在网络层)。
四、什么是HTTP事务?
一个HTTP事务由一条(从客户端发往服务器的)请求命令和一个(从服务器发回客户端的)响应结果组成。这种通信是通过名为HTTP报文(HTTP message)的格式化数据块进行的。
- 方法
HTTP支持几种不同的请求命令,这些命令被称为HTTP方法。每条HTTP请求报文都包含一个方法,这个方法会告诉服务器要执行什么动作。常见的方法有:GET、PUT、DELETE、POST、HEAD、OPTION等。 - 状态码
每条HTTP响应报文返回时都会携带一个状态码,状态码是一个三位数字的代码,告知客户端请求是否成功,或者是否需要采取其他动作。例如:200(成功)、302(重定向)、404(找不到页面)等。 - 报文
HTTP报文是由一行一行的简单字符串组层的,HTTP报文都是纯文本,不是二进制代码,所以人们可以很方便地对其进行读写。
报文包含以下三个部分:- 起始行:报文的第一行,在请求报文中用来说明要做些什么,在响应报文中用来说明出现了什么情况。
- 首部字段:起始行后面又零个或多个首部字段。每个首部字段都包含一个名字和一个值,两者之间用冒号(:)来分隔。首部以一个空行结束。
- 主体:空行之后就是可选的报文主体了,其中包含了所有类型的数据。请求主体中包含了要发送给web服务器的数据,响应主体中装载了要返回给客户端的数据。
五、HTTP协议版本
- HTTP/0.9
HTTP的1991原型版本称为HTTP/0.9。这个版本有很多设计缺陷,它支持GET方法,不支持多媒体内容的MIME类型,各种HTTP首部或者版本号。它很快久呗HTTP/1.0取代了。 - HTTP/1.0
1.0是第一个得到广泛使用的HTTP版本,它添加了版本号,各种HTTP首部,一些额外的方法,以及对多媒体对象的处理。 - HTTP/1.0+
20世纪90年代中叶产生。许多商业中的特性,包括持久的keep-alive连接、虚拟主机支持,以及代理连接支持都被融入到了HTTP之中,并成为非官方的事实标准,这种非正式的HTTP扩展版本通常称为HTTP/1.0+。 - HTTP/1.1
HTTP/1.1重点关注的是校正HTTP设计中的结构性缺陷,并却于一,引入重要的性能优化措施,并删除一些不好的特性。 - HTTP-NG(又名HTTP/2.0)
HTTP-NG是HTTP/1.1后继结构的原型建议,它重点关注的是性能的大幅优化以及更强大的服务逻辑远程执行框架。