目录
HTTP协议简介
HTTP(Hypertext transfer protocol)是指超文本传输协议,是用于从万维网服务器传送超文本到本地服务器的协议。 HTTP是基于TCP/IP通信协议来传递数据的。 HTTP基于客户端/服务端(C/S)架构模型,通过一个可靠的链接来交换信息,是一个无状态的请求/响应协议。
很明显,上面对HTTP协议的解释是来自网络的,很难理解,换点简单的方式来说,协议是拥有一系列规则的集合体,因此,就要有遵守的双方,即万维网服务器和本地服务器,超文本传输协议就是超文本在万维网服务器和本地服务器传输所遵守的规则(超文本指的是文本、图片、视频等)
工作方式
- 客户与服务器建立连接
客户输入URL地址,通过http协议中的域名或IP找到服务器
- 客户向服务器提出请求
客户发送一份请求(请求报文)给服务器,告诉服务器要做什么,而这份请求也是有规定的格式的--请求行+请求头+空行+请求体。在后面会讲到。
- 服务器处理请求
服务器收到请求后,会将获取过来的信息进行后端处理。如何处理在这里不细说
- 服务器响应请求
服务器处理完后,就会返回一份响应报文给客户,这份响应报文也有规定的格式--状态行+响应头+空行+响应体。在后面也会讲到
- 客户与服务器关闭连接 以上就是HTTP协议的工作方式了,概括地说,就是客户发送请求,服务器返回响应
请求报文
请求行
第一行,说明请求方法(后面会列出),要访问的资源,所使用的http版本。
请求头
紧接第一行,请求行后面,其包含若干个属性,格式为属性名:属性值。服务器据此获取客户信息,而这个属性名所指代的意思在这里不再一一介绍。
空行
请求头和请求体之间需有一行空行。
请求体
请求体包括POST传递数据的相关信息,Get方式传值时,请求体为空。
下面看一个例子来理解:
- 第一行即请求行,请求方法为post url没写,http协议版本为HTTP1.1
- 2~7行为请求头,有host属性,user-agent属性等等
- 第八行为空行
- 最后一行是请求体
最后是一些请求方法的介绍:
响应报文
状态行
第一行,报文协议(http)/版本 状态码 状态描述,状态码和状态描述在最后会讲
响应头
和请求头差不多,也是由多个属性组成,格式为属性名:属性值,属性名的相关知识在这也不介绍
空行
响应头和响应体之间也要有一个空行
响应体
简单地说就是一个html文件
这里也用一个例子来看:
- 第一行为状态行,其说明了使用http协议的1.1版本,状态码为200,状态描述是OK
- 2~3行是响应头,有date属性和content-type属性
- 第四行为空行
- 5~10行是响应体,是一个html文件
最后是一些状态码的描述:
若文章有误请帮忙指出。