您的位置:首页 > 理论基础 > 计算机网络

HTTP协议之简介

2013-04-30 21:54 387 查看

HTTP协议之简介



[title2]1 定义[/title2]

[title2]1.1 超文本传输协议[/title2]

超文本传输协议 (HTTP-Hypertext transfer protocol)是分布式、协作式,超媒体系统应用之间的通信协议。是万维网交换信息的基础。它允许将超文本标记语言(HTML)文档从Web服务器传送到Web浏览器。HTML是一种用于创建文档的标记语言,这些文档包含相关信息的链接。我们可以单击一个链接来访问其它文档、图像或多媒体对象,并获得关于链接项的附加信息。

[title2]1.2 统一资源定位符[/title2]

统一资源定位符URL(Uniform Resource Locator) 地址用于描述一个网络上的资源, 它包含了用于查找某个资源的足够信息。基本格式如下:schema://host[:port#]/path/./[;url-params][?query-string][#anchor]。

名称

内容

scheme

指定低层使用的协议(例如:http, https, ftp)

host

HTTP服务器的IP地址或者域名

port#

HTTP服务器的默认端口是80,这种情况下端口号可以省略。如果使用了别的端口,必须指明,例如 http://www.cnblogs.com:8080/
path

访问资源的路径

url-params

query-string

发送给http服务器的数据

anchor-



URL 的一个例子:

http://www.mywebsite.com/sj/test;id=8079?name=sviergn&x=true#stuff

名称

内容

scheme

http

host

www.mywebsite.com

port#

80

path

/sj/test

url-params

id=8079

query-string

Query String: name=sviergn&x=true

anchor-

stuff

[title2]1.3 术语(Terminology)[/title2]

1.3.1 请求(request)

HTTP的请求消息。

1.3.2 响应(response)

HTTP的响应消息。

1.3.3 资源(resource)

网络上可以用URI来标识的数据对象或服务。

1.3.4 实体(entity)

可被附在请求或回应消息中的特殊的表示法、数据资源的表示、服务资源的回应等,由实体标题(entity header)或实体主体(entity body)内容形式存在的元信息组成。

1.3.5 客户端(client)

指以发出请求为目的而建立连接的应用程序。

1.3.6 用户代理(user agent)

指初始化请求的客户端,如浏览器、编辑器、蜘蛛(web爬行机器人)或其它终端用户工具。

1.3.7 服务器(server)

指接受连接,并通过发送回应来响应服务请求的应用程序。

1.3.8 原始服务器(origin server)

存放资源或产生资源的服务器。

1.3.9 代理(proxy)

同时扮演服务器及客户端角色的中间程序,用来为其它客户产生请求。请求经过变换,被传递到最终的目的服务器,在代理程序内部,请求或被处理,或被传递。代理必须在消息转发前对消息进行解释,而且如有必要还得重写消息。代理通常被用作经过防火墙的客户端出口,用以辅助处理用户代理所没实现的请求。

1.3.10 网关(gateway)

服务器之间的服务器。与代理不同,网关接受请求就好象它就是被请求资源所在的原始服务器,发出请求的客户端可能并没有意识到它在与网关进行通讯。网关是网络防火墙服务器端的门户。对非HTTP系统资源进行访问时,网关做为中间的协议翻译者。

1.3.11 隧道(tunnel)

隧道就好象连接两端看不见的中继器。处于激活状态时,它虽然是由HTTP请求来初始化的,但它并不参与HTTP通讯。当需要中继连接的两端关闭后,隧道也自然终止。在入口有需求及中间程序无法或不该解释要中继的通讯时,通常要用到隧道技术。

1.3.12 缓存(cache)

指程序本地存储的回应消息和用来控制消息存储、重获、删除的子系统。缓存回应的目的是为减少请求回应时间,以及未来一段时间对网络带宽的消耗。任何客户端及服务端都可以包含缓存。服务器在以隧道方式工作时不能使用缓存。任何指定的程序都有能力同时做为客户端和服务器。我们在使用这个概念时,不是看程序功能上是否能实现客户及服务器,而是看程序在特定连接时段上扮演何种角色(客户或服务器)。同样,任何服务器可以扮演原始服务器、代理、网关、隧道等角色,行为的切换取决于每次请求的内容。

2 HTTP特点

(1)支持客户/服务器模式。

(2)简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而[b]通信速度很快


(3)灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。

(4)无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间

(5)无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。为了解决这个问题, Web程序引入了Cookie机制来维护状态。

3 HTTP的请求响应模型

HTTP协议永远都是客户端发起请求,服务器回送响应。见下图:



这样就限制了使用HTTP协议,无法实现在客户端没有发起请求的时候,服务器将消息推送给客户端。

HTTP协议是一个无状态的协议,同一个客户端的这次请求和上次请求是没有对应关系。

4 HTTP工作流程

一次HTTP操作称为一个事务,其工作过程可分为四步:

(1)首先客户机与服务器需要建立连接。只要单击某个超级链接,HTTP的工作开始。

(2)建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。

(3)服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。

(4)客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。

如果在以上过程中的某一步出现错误,那么产生错误的信息将返回到客户端,有显示屏输出。对于用户来说,这些过程是由HTTP自己完成的,用户只要用鼠标点击,等待信息显示就可以了。

[/b]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: