目录
介绍
HTTP的发展是万维网协会和Internet工作小组合作的结果,在一系列的RFC发布了最终的版本,其中最著名的是RFC2616。在RFC 2616中定义了HTTP 1.1这个今天普遍使用的版本。 HTTP是一个用于在客户端和 服务器间请求和应答的协议。一个HTTP的客户端,诸如一个 web 浏览器,通过建立一个到远程主机特殊 端口(默认端口为80)的连接,初始化一个请求。一个HTTP服务器通过监听特殊端口等待客户端发送一个请求序列,就像“GET /HTTP/1.1”(用来请求网页服务器的默认页面),有选择的接收像email一样的MIME消息,此消息中包含了大量用来 描述请求各个方面的信息头序列,响应一个选择的保留数据主体。接收到一个请求序列后(如果要的话,还有消息),服务器会发回一个 回复,如“200OK”,同时发回一个它本报的消息,此消息的主体可能是被请求的文件、错误消息或者其他的一些信息。 HTTP并不局限于使用 网络协议(TCP/IP)及其相关支持层,尽管这是它在互联网上最为流行的 应用程序。事实上,HTTP可以“在任何其他 互联网协议之上执行,或者在其他网络上执行。HTTP只认可可靠的传输,任何能够提供这种保证的协议都可以被其使用。 HTTP不同于其他基于 TCP的 协议,诸如 FTP。在HTTP中,一旦一个特殊的请求(或者请求的相关序列)完成,连接通常被中断。这个设计使得对于当前页面有规则连接到另一台服务器页面的 万维网来说,HTTP是完美的。当持久连接的缺乏成为保持用户状态的必需选择的方法时,对 网页设计者来说,会偶然产生一些问题。而大部分这些方法包括了对“cookies”的使用。 这里有一个HTTP的安全版本称为HTTPS,HTTPS支持任何的加密算法,只要此加密算法能被页面双方所理解。 HTTP(和 HTTPS)由 统一资源定位器或者简称URLs定位。创造这种地址定位的语法为了HTML的链接。请求信息
发出的请求信息包括以下几个* 请求行,例如GET /images/logo.gif HTTP/1.1,表示从/images 目录下请求logo.gif这个文件。
* 标题,例如Accept-Language: en
* 空行
* 可选信息
请求行和标题必须以<CR><LF>作为结尾(也就是,回车然后换行)。空行内必须只有<CR><LF>而无其他空格。在HTTP/1.1协议中,所有的标题除主机外都是可选的。
请求方法
HTTP 定义了八种方法来指示确认的资源执行所需的行为。HEAD 要求与 GET请求相应的回复一样的应答,但是没有回应的内容。这对找回写在回应标题中的meta-infomation有帮助,不需要传输整个内容。
GET 请求某个特殊的资源,是目前网上最通用的方法。不应该用于一些会造成副作用的操作中(在网络软件中使用是一个常见的错误用法)。参 看下个目录的安全方法。
POST 向确定的资源提交需要处理的数据。这些数据包括在请求的内容里。这可以造成新资源的产生和更新已有资源。
PUT 上传特定资源
DELETE 删除特定资源
TRACE 返回接收的请求,客户端可因此察看在请求过程中什么中间服务器被加进来或者有所改变。 OPTIONS 返回服务器支持的HTTP方法,这可以用来检查 网络服务器的功能。
CONNECT 将请求连接转换成透明的TCP/IP通道,通常通过非加密的HTTP代理利用SSL-加密通讯(HTTPS)。
编辑本段安全方法
有些方法(比如HEAD, GET, OPTIONS, and TRACE) 被定义为 安全方法,这些方法针对的只是信息的返回,并不会改变服务器的状态(换句话说就是这些方法不会产生副作用)。不安全的方法(例如POST, PUTand DELETE)应该用特殊的方式向用户展示,通常是按钮而不是链接,这样就可以使用户意识到可能要负的责任(例如一个按钮带来的资金交易。)超文本
超文本(Hypertext)是用超链结的方法,将各种不同空间的文字信息组织在一起的网状文本。超文本更是一种用户介面范式,用以显示文本及与文本之间相关的内容。现时超文本普遍以电子文档方式存在,其中的文字包含有可以链结到其他位置或者文档的连结,允许从当前阅读位置直接切换到超文本连结所指向的位置。超文本的格式有很多,目前最常使用的是 超文本标记语言(Hyper TextMarkup Language,HTML)及富文本格式 (Rich TextFormat,RTF)。我们日常浏览的网页上的链结都属于超文本。2、一种按信息之间关系非线性地存储、组织、管理和浏览信息的计算机技术。超文本技术将自然语言文本和计算机交互式地转移或动态显示线性文本的能力结合在一起,它的本质和基本特征就是在文档内部和文档之间建立关系,正是这种关系给了文本以非线性的组织。例子
下面是一个HTTP客户端与服务器之间会话的例子,运行于www.g o o g l e. c o m,端口80客户端请求:
GET / HTTP/1.1
Host:www.b a i d u.c o m
(紧跟着一个换行,通过敲入回车实现)
服务器应答:
HTTP/1.1 200 OK
Content-Length: 3059
Server: GWS/2.0
Date: Sat, 11 Jan 2003 02:44:04 GMT
Content-Type: text/html
Cache-control: private
Set-Cookie:PREF=ID=73d4aef52e57bae9:TM=1042253044:LM=1042253044:S=SMCc_HRPCQiqy X9j; expires=Sun, 17-Jan-2038 19:14:07 GMT; path=/; domain=.g o og l e. c o m
Connection: keep-alive
(紧跟着一个空行,并且由HTML格式的文本组成了Google的主页)
在HTTP1.0中,客户端发送一个请求至服务器,服务器发送一个应答至客户端。之后,连接将被释放。另一方面, HTTP1.1支持持久连接。这使得客户端可以发送请求并且接收应答,然后迅速的发送另一个请求和接收另一个应答。因为多个额外的请求,TCP连接并没有被释放,而每个请求中关于TCP的负载相对较少。同时,在得到上一个请求的应答之前发送多个请求(通常是两个)也成为可能。这个技术被称为“ 流水线”。