http协议入门
超文本传输协议(英文缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。
设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。通过HTTP或者HTTPS协议请求的资源由统一资源标识符(Uniform Resource Identifiers,URI)来标识。
-
HTTP请求格式
客户端通过发送 HTTP 请求向服务器请求对资源的访问。它向服务器传递了一个数据块,即请求信息。Http请求由三部分组成,分别是:请求行、请求头、请求正文。
请求的第一行是“方法 URL 协议/版本”,并以回车换行作为结尾。请求行以空格分隔。格式如下:POST /index.php HTTP/1.1
其中“GET”代表请求方法,“//index.php”表示URI,“HTTP/1.1”代表协议和协议的版本。
HTTP1.1支持7种请求方法:GET、POST、HEAD、OPTIONS、PUT、DELETE和TARCE。在Internet应用中,最常用的方法是GET和POST。
URL完整地指定了要访问的网络资源,通常只要给出相对于服务器的根目录的相对目录即可,因此总是以“/”开头,最后,协议版本声明了通信过程中使用HTTP的版本。
请求头每个头域由一个域名,冒号(:)和域值三部分组成。域名是大小写无关的,域值前可以添加任何数量的空格符,头域可以被扩展为多行,在每行开始处,使用至少一个空格或制表符。HTTP最常见的请求头如下:Transport 头域(Connection、Host)、Client 头域(Accept)、Cookie/Login 头域、Entity头域、Miscellaneous 头域、Cache 头域。 -
HTTP响应格式
一个HTTP响应代表服务器向客户端回送的数据,包括:一个状态行、若干消息头、以及实体内容。
状态行由协议版本、数字形式的状态代码,及相应的状态描述组成,各元素之间以空格分隔,结尾时回车换行符,例如:HTTP/1.1 200 OK (CRLF)
HTTP最常见的响应头有Cache头域、Location头域、Entity实体头域等。
响应正文就是服务器返回的资源的内容,响应头和正文之间也必须用空行分隔。
HTTP是一个无状态的面向连接的协议。无状态是指协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。另一方面,开启了Connection: Keep-Alive后,服务器与客户端间保持连接,但这和无状态是两个概念,只是代表,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接。