HTTP 1.1状态代码及含义

HTTP 1.1状态代码及其含义

下表显示了常见的HTTP 1.1状态代码以及它们对应的状态信息和含义。

应当谨慎地使用那些只有HTTP 1.1支持的状态代码,因为许多浏览器还只能够支持HTTP 1.0。如果你使用了HTTP 1.1特有的状态代码,最好能够检查一下请求的HTTP 版本号。

HTTP 的早期版本为HTTP/0.9,它适用于各种数据信息的简洁快速协议,但是其远不能满足日益发展各种应用的需要。但HTTP/0.9作为HTTP 协议具有典型的无状态性:每个事务都是独立进行处理的,当一个事务开始就在客户与服务器之间建立一个连接,当事务结束时就释放这个连接。HTTP/0.9包含

Simple-Request&Simple-Responsed的报文结构。但是客户无法使用内容协商,所以服务器也无法返回实体的媒体类型。

1982年,Tim Berners-Lee提出了HTTP/1.0,在此后的不断丰富和发展中,HTTP/1.0成为最重要的面向事务的应用层协议。该协议对每一次请求/响应,建立并拆除一次连接。其特点是简单、易于管理,所以它符合了大家的需要,得到了广泛的应用。其缺点是仍会发生下列问题:对用户请求响应慢、网络拥塞严重、安全性等。

1997年形成的HTTP/1.1,也就是现在普遍使用的协议,在持续连接操作机制中实现流水方式,即客户端需要对同一服务器发出多个请求时,其实现在多数的网页都是有多部分组成(比如多张图片),可用流水线方式加快速度,流水机制就是指连续发出多个请求并等到这些请求发送完毕,再等待响应。这样就大大节省了单独请求对响应的等待时间,使我们得到更快速的浏览。

另外,HTTP/1.1服务器端处理请求时按照收到的顺序进行, 这就保证了传输的正确性。当然,服务器端在发生连接中断时,会自动的重传请求,保证数据的完整性。

HTTP/1.1还提供了身份认证、状态管理和Cache 缓存等机制。这里,我想特别提一下关于HTTP/1.1中的Cache 缓存机制对HTTP/1.0的不足之处的改进,它严格全面,既可以减少时间延迟、又节省了带宽。HTTP/1.1采用了内容协商机制,选择最合适的用户的内容表现形式。

现在,很多地方都有用到的虚拟主机技术在HTTP/1.1中也可以实现。所谓的虚拟主机技术,就是同一主机地址实际对应多台主机。通俗的讲,当你同时在一个网站申请两个主页时,用协议分析仪可以发现其实这两个主页对应的是同一个IP 地址。这样用多台完全相同的机器形成WWW 服务器就可以提高处理的吞吐量。

传统的解决方案是改造域名服务器使其可以根据一定的算法将同一域名解释成不同的IP 地址。分别对应虚拟主机的每台机器,其缺点是要求每台机器占用完全独立的IP 地址,这与IP 地址的缺乏是相矛盾的。

HTTP/1.1提供的解决方案在HTTP 协议自身中加入了指定不同主机的功能,从而多台主机可以共享一个IP 地址,既提高了性能又便于管理。

因为HTTP/1.1是Internet 现行的标准协议,这里详细介绍其相关语法。 首先,HTTP/1.1格式可写为:

[img:8d94cc43ef]http://www.china-pub.com/computers/emook/0472/1.gif[/img:8d94cc43ef]

其中请求方法是请求一定的Web 页面的程序或用于特定的URL 。可选用下列几种:

GET : 请求指定的页面信息,并返回实体主体。

HEAD : 只请求页面的首部。

POST : 请求服务器接受所指定的文档作为对所标识的URI 的新的从属实体。

PUT : 从客户端向服务器传送的数据取代指定的文档的内容。

DELETE : 请求服务器删除指定的页面。

OPTIONS : 允许客户端查看服务器的性能。

TRACE : 请求服务器在响应中的实体主体部分返回所得到的内容。

PATCH : 实体中包含一个表,表中说明与该URI 所表示的原内容的区别。 MOVE : 请求服务器将指定的页面移至另一个网络地址。

COPY : 请求服务器将指定的页面拷贝至另一个网络地址。

LINK : 请求服务器建立链接关系。

UNLINK : 断开链接关系。

WRAPPED : 允许客户端发送经过封装的请求。

Extension-mothed :在不改动协议的前提下,可增加另外的方法。 比如:

GET /index.html HTTP/1.1

Accept: text/plain /*纯ASCII 码文本文件*/

Accept: text/html /*HTML文本文件*/

User-Agent:Mozilla/4.5(WinNT)

说明浏览器使用Get 方法请求文档/index.html。浏览器则只允许接收纯

ASCII 码文本文件和HTML 文本文件,其使用的引擎是Mozilla/4.5(Netscape )。

当服务器响应时,其状态行的信息为HTTP 的版本号,状态码,及解释状态码的简单说明。现将5类状态码详细列出:

① 客户方错误

100 继续

101 交换协议

② 成功

200 OK

201 已创建

202 接收

203 非认证信息

204 无内容

205 重置内容

206 部分内容

③ 重定向

300 多路选择

301 永久转移

302 暂时转移

303 参见其它

304 未修改(Not Modified)

305 使用代理

④ 客户方错误

400 错误请求(Bad Request)

401 未认证

402 需要付费

403 禁止(Forbidden )

404 未找到(Not Found)

405 方法不允许

406 不接受

407 需要代理认证

408 请求超时

409 冲突

410 失败

411 需要长度

412 条件失败

413 请求实体太大

414 请求URI 太长

415 不支持媒体类型

⑤ 服务器错误

500 服务器内部错误

501 未实现(Not Implemented)

502 网关失败

504 网关超时

505 HTTP版本不支持

比如:(在《TELNET……》一文中用telnet 登陆80端口, 相同的方法用在HTTP/1.1中, 会发现没有显示,下面补充说明之)

telnet www.fudan.edu.cn 80

HEAD / HTTP/1.1

host:www.fudan.edu.cn /*本行为输入内容*/

HTTP/1.1 501 Method Not Implemented

Date: Web, 01 Nov 2000 07:12:29 GMT /*当前的日期/时间*/

Server: Apache/1.3.12 (Unix) /*Web服务器信息*/

Allow: GET, HEAD, OPTION, TRACE /*支持的方法类型*/

Connection: close

Connect-Type: Text/html; charset=iso-8859-1/*连接的媒体类型*/

501 Method

Not Implemented

Method Not Implemented

head to /inde

x.html not supported.

Invalid method in request head / htp/1.1



Apache/1.3.12 Server at www.fudan.edu.cn Port 80

关于实体头部的内容还可以有:

Last Modified :请求文档的最近修改时间。

Expires :请求文档的过期时间。

Connect-length :文档数据的长度。

WWW-authenricate :通知客户端需要的认证信息。

Connect-encoding :说明有无使用压缩技术。

Transfer-encoding :说明采用的编码变换类型。

随着Internet 的发展,下一代的HTTP 协议HTTP-ng 已经在酝酿之中,它将会提供更好的安全性、更快的速度,其改进要点为:模块化强、网络效率高、安全性更好、结构更简单。

HTTP 协议是我们网络中必不可少的重要协议。那么下面我们就来对这方面的问题进行一下深入讲解。那么我们就针对GET 方法实现HTTP 协议的具体操作进行一下分析。HTTP 协议用于在Internet 上发送和接收消息?HTTP 协议是一种请求-应答式的协议?? 客户端发送一个请求, 服务器返回该请求的应答, 所有的请求与应答都是HTTP 包?HTTP 协议使用可靠的TCP 连接, 默认端口是80?HTTP 的第一个版本是HTTP/0.9,后来发展到了HTTP/1.0,现在最新的版本是HTTP/1.1?HTTP/1.1由RFC 2616 定义?

在HTTP 中,Client/Server之间的会话总是由客户端通过建立连接和发送

HTTP 请求包初始化, 服务器不会主动联系客户端或要求与客户端建立连接? 浏览器和服务器都可以随时中断连接, 例如, 在浏览网页时你可以随时点击“停止" 按钮中断当前的文件下载过程, 关闭与Web 服务器的HTTP 连接?

1 HTTP请求包

HTTP 请求包(GET?POST等请求方法) 由三个部分构成, 分别是:方法-URI-协议/版本, 请求头, 请求正文? 下面是一个HTTP 协议请求包(GET)的例子:

1.GET /index.jsp HTTP/1.1

2.Accept-Language: zh-cn

3.Connection: Keep-Alive

4.Host: 192.168.0.106

5.Content-Length: 37

6.userName=new_andy&password=new_andy

请求包的第一行是方法-URI-协议/版本:

GET 就是请求方法, 根据HTTP 标准,HTTP 协议请求可以使用多种请求方法?HTTP 1.1支持七种请求方

法:GET?POST?HEAD?OPTIONS?PUT?DELETE和TRACE 等, 常用的为请求方法是GET 和POST?

/index.jsp表示URI?URI 指定了要访问的网络资源?HTTP/1.1是协议和协议的版本?

最后一行userName=new_andy&password=new_andy为正文, 正文与HTTP 头部有一个空行(rn)分隔? 这里需要说明的一点, 其中Content-Length 说明正文的长度, 有的正文长度没有在头部说明, 只是标明Transfer-Encoding: chunked?关于chunked 类型的长度计算方法, 见RFC 1626?

请求包的头部还会包含许多有关客户端环境和请求正文的有用信息, 这里不再描述?

2 HTTP协议应答包

和HTTP 请求包相似, 由三个部分构成, 分别是:协议-状态代码-描述, 应答头, 应答正文? 下面是一个HTTP 应答的例子:

1.HTTP/1.1 200 OK

2.Server: Microsoft-IIS/4.0

3.Date: Mon, 3 Jan 2005 13:13:33 GMT

4.Content-Type: text/html

5.Last-Modified: Mon, 11 Jan 2004 13:23:42 GMT

6.Content-Length: 90

7.

8.

9.解读HTTP 包示例

10.Hello WORLD!

11.

12.

HTTP 应答包的第一行类似于HTTP 协议请求的第一行, 表示所用的协议是

HTTP 1.1,服务器处理请求的状态码200?

应答头也和请求头一样包含许多有用的信息, 例如服务器类型? 日期时间? 内容类型和长度等? 应答的正文就是服务器返回的HTML 页面? 应答头和正文之间也用CRLF 分隔?


© 2024 实用范文网 | 联系我们: webmaster# 6400.net.cn