超文本传输协议(HTTP,Hyper Text Transfer Protocol)定义了浏览器向服务器请求文档、服务器将文档传送给浏览器的通信规则。HTTP 允许将超文本标记语言(HTML,Hyper Text Markup Language)文档从服务器端传送到客户端,是万维网上能够可靠地交换文件(包括文本、声音、图像等各种多媒体文件)的重要基础。
HTTP主要由请求和响应构成,如图1-2所示。客户端在和服务器建立连接后可以发起请求,请求通常会包含请求方式和资源路径,每种请求方式都规定了客户端与服务器联系的具体形式。服务器接收到请求后会做出响应,可以根据请求找到相应的资源进行处理:若为静态资源,则直接将资源的内容发送给客户端;若为动态内容和程序,则进行执行,把处理后的结果以HTML的形式发送给客户端。
图1-2 HTTP的请求-响应模型
本书中使用的是HTTP 1.1版本。
提示
HTTP与TCP/IP
TCP/IP(传输控制协议/互联网协议)是不同的通信协议的大集合,浏览器和服务器均使用其来连接因特网。TCP/IP自下而上将整个通信网络的功能分成7层。
HTTP是基于TCP/IP的应用层协议,它的实现建立在下层协议的服务之上。
HTTP的请求/响应过程如图1-3所示。
图1-3 HTTP请求/响应过程
(1)客户端连接到Web服务器
一个HTTP客户端通常是网页浏览器,可以与Web服务器的HTTP端口(默认为80)建立一个TCP连接。
(2)通过建立起的连接向服务器发送HTTP请求
通过TCP连接,客户端向Web服务器发送一个文本的请求报文,请求获取某个Web页面。
(3)服务器接收请求并返回HTTP响应
Web服务器解析请求,定位请求资源,将资源复本通过该连接发送给客户端。
(4)客户端解析HTML内容
客户端解析返回的响应报文。首先解析状态行,通过状态码查看请求是否成功。然后解析响应消息头,响应消息头包含服务器名称、页面资源的内容长度等信息。最后读取响应数据,根据HTML的语法对其进行格式化,在浏览器窗口中显示资源页面。
(5)释放TCP连接,通信的双方断开所建立的连接
在传输若干个请求/响应后,当客户端发出关闭连接的请求时,TCP连接关闭。