HTTP流程的基本原理
HTTP协议是一种请求/应答协议。与主机建立连接后,客户以请求方法,URI和协议版本的形式向服务器发送请求,其中包括请求修改、客户信息和可能的正文内容。
服务器用包括消息协议版本和成功或错误代码的状态进行应答,包括服务器信息,实体维护信息和可能的实体内容的类MIME消息。
大部分的HTTP通信由用户代理引发,由发送到一些原服务器上资源的请求构成。最简单的情形,可以经用户代理(UA,User Agent)和原服务器之间的单一连接完成。
在HTTP中,客户端总是通过建立一个连接与发送一个HTTP请求来发起一个事务。服务器不能主动去与客户端联系,也不能给客户端发出一个回叫连接。客户端与服务器端都可以提前中断一个连接。例如,当用一个浏览器下载一个文件时,用户可以通过单击"停止"键来中断文件的下载,关闭与服务器的HTTP连接。
HTTP协议的工作原理主要包括四个步骤(如图所示)。
(1)连接:Web浏览器与Web服务器建立连接,打开一个称为socket(套接字)的虚拟文件,此文件的建立标志着连接建立成功。
(2)请求:Web浏览器通过socket向Web服务器提交请求。HTTP的请求一般是GET或POST命令(POST用于FORM参数的传递)。GET命令的格式为:GET 路径/文件名 HTTP/1。其中,文件名指出所访问的文件,HTTP/1.0指出Web浏览器使用的HTTP版本。
(3)应答:Web浏览器提交请求后,通过HTTP协议传送给Web服务器。Web服务器接到后,进行事务处理,处理结果又通过HTTP传回给Web浏览器,从而在Web浏览器上显示出所请求的页面。例:假设客户机与www.mycompany.com:8080/mydir/index.html建立了连接,就会发送GET命令:GET /mydir/index.html HTTP/1.0。主机名为www.mycompany.com的Web服务器从它的文档空间中搜索子目录mydir的文件index.html。如果找到该文件,Web服务器把该文件内容传送给相应的Web浏览器。为了告知 Web浏览器传送内容的类型,Web服务器首先传送一些HTTP头信息,然后传送具体内容(即HTTP体信息),HTTP头信息和HTTP体信息之间用一个空行分开。其中,常用的HTTP头信息如下。
HTTP 1.0 200 Ok:这是Web服务器应答的第一行,列出服务器正在运行的HTTP版本号和应答代码。代码"200 OK"表示请求完成。
MIME_Version:1.0:它指示MIME类型的版本。
content_type:类型:这个头信息非常重要,它指示HTTP体信息的MIME类型。如:content_type:text/html指示传送的数据是HTML文档。
content_length:长度值:它指示HTTP体信息的长度(以字节为单位)。
(4)关闭连接:当应答结束后,Web浏览器与Web服务器必须断开,以保证其他Web浏览器能够与Web服务器建立连接。
实际上,目前万维网上有多种结构和配置的高速缓存和代理被实验或使用。这些系统包括节省越洋带宽的全国代理层,广播或多点通信缓存接口,通过CD-ROM分配子缓存数据的机构,等等。HTTP系统应用在宽频带连接的企业局域网中,通过PDA(Personal Digital Assistant,掌上电脑)的低耗无线连接和断续连接的访问。HTTP/1.1的目标是支持各种各样的应用配置,引进协议结构满足那些需要较高可靠性、可以排除故障或至少指示故障的网络应用的要求。
HTTP通信通常发生在TCP/IP连接上。默认端口是TCP 80,不过其他端口也可以使用。在互联网或其他网络上,这并不妨碍HTTP应用在其他协议的顶端。HTTP仅仅期望可靠的传输;任何提供这种保证的协议都可以使用。
在HTTP/1.0中,大部分的实现为每个请求/应答交换使用了新连接。而HTTP/1.1中,一个连接可以用于一个或更多请求/应答交换,虽然连接可能会因为各种原因中断。
《网络协议本质论》第10章HTTP/HTTPS协议原理及应用精解,本章将对HTTP协议的原理进行详细的介绍,并对其应用编程进行举例说明。本节为大家介绍HTTP流程的基本原理。