HTTP协议之简介

1 定义

1.1 超文本传输协议

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

1.2 统一资源定位符

统一资源定位符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

1.3 术语(Terminology

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)简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GETHEADPOST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快

   (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自己完成的,用户只要用鼠标点击,等待信息显示就可以了。

1 定义

1.1 超文本传输协议

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

1.2 统一资源定位符

统一资源定位符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

1.3 术语(Terminology

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)简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GETHEADPOST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快

   (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自己完成的,用户只要用鼠标点击,等待信息显示就可以了。

猜你喜欢

转载自fackyou200.iteye.com/blog/1858494