分类:
2009-01-13 20:48:41
超文本传输协议(Hypertext Transfer Protocol,HTTP)是万维网(World Wide Web,WWW,也简称为Web)的基础。
HTTP是一个属于应用层的面向对象协议,简捷,快速,适用于分布式超媒体信息系统。目前WWW中使用的是HTTP/1.1。
HTTP协议的特点:
<1>支持C/S模式。
<2>简单快速:Client向Server请求服务时,只需传递请求方法和路径。常用请求方法有GET,HEAD,POST。HTTP协议简单,因而HTTP Server程序规模小,通信速度很快。
<3>灵活:HTTP允许传输任意类型的数据对象,传输类型由Content-Type标记。
<4>无连接:每次连接只处理一个请求,Server处理完Client的请求,并收到客户的应答后,即断开连接。这种方式可以节省传输时间。
<5>无状态:HTTP协议是无状态协议。它指协议对事务处理没有记忆能力,这意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大,而在Server不需要先前信息时它的应答就较快。
HTTP协议的运作方式:
HTTP协议是基于请求/应答模式的。一个Client与Server建立连接以后,发送一个请求给Server,请求方式的格式为:统一资源标识符、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。服务器接到请求后,给予相应的响应信息,其格式为一个状态行包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。
在Internet上,HTTP通讯通常发生在TCP/IP连接之上。缺省端口是TCP80,但其它的端口也是可用的。但这并不预示着HTTP协议在Internet或其它网络的其它协议之上才能完成。HTTP只预示着一个可靠的传输。
基于HTTP协议的C/S模式的信息交换过程分四步:建立连接,发送请求信息,发送应答信息,关闭连接。
<1>建立连接 连接的建立是通过申请套接字(Socket)实现的。客户打开一个套接字并把它约束在一个端口上,如果成功,就相当于建立了一个虚拟文件。以后就可以在该虚拟文件上写数据并通过网络向外传送。
<2>发送请求 打开一个连接后,客户机把请求消息送到服务器的停留端口上,完成提出请求动作。
HTTP/1.0 请求消息的格式为:
请求消息=请求行(通用信息|请求头|实体头)CRLF[实体内容]
请求 行=方法 请求URL HTTP版本号 CRLF
方 法=GET|HEAD|POST|扩展方法
U R L=协议名称+宿主名+目录与文件名
请求行中的方法描述指定资源中应该执行的动作,常用的方法有GET、HEAD和POST。不同的请求对象对应GET的结果是不同的,对应关系如下:
对象 GET的结果
文件 文件的内容
程序 该程序的执行结果
数据库查询 查询结果
HEAD——要求服务器查找某对象的元信息,而不是对象本身。
POST——从客户机向服务器传送数据,在要求服务器和CGI做进一步处理时会用到POST方法。POST主要用于发送HTML文本中FORM的内容,让CGI程序处理。
一个请求的例子为:
GET HTTP/1.0
头信息又称为元信息,即信息的信息,利用元信息可以实现有条件的请求或应答。
请求头——告诉服务器怎样解释本次请求,主要包括用户可以接受的数据类型、压缩方法和语言等。
实体头——实体信息类型、长度、压缩方法、最后一次修改时间、数据有效期等。
实体——请求或应答对象本身。
<3>发送响应 服务器在处理完客户的请求之后,要向客户机发送响应消息。
HTTP/1.0的响应消息格式如下:
响应消息=状态行(通用信息头|响应头|实体头) CRLF 〔实体内容〕
状态行=HTTP版本号 状态码 原因叙述
状态码表示响应类型
1×× 保留
2×× 表示请求成功地接收
3×× 为完成请求客户需进一步细化请求
4×× 客户错误
5×× 服务器错误
响应头的信息包括:服务程序名,通知客户请求的URL需要认证,请求的资源何时能使用。
<4>关闭连接 客户和服务器双方都可以通过关闭套接字来结束TCP/IP对话