首页 > 代码库 > HTTP概述

HTTP概述

1.1 基本概念

因特网上有数千种数据类型,HTTP为每种数据都打上叫做MIME类型的tag。MIME=Multipupose Internet Mail Extension,它最初设计被用来解决在不同电子邮件系统中搬移报文存在的问题。

它在电子邮件中工作的很好,因此HTTP采纳了它,用来为web各种数据类型做标记。当Web浏览器从服务器中取回一个对象,会看相关的MIME类型,以此来决定采取什么样的方式打开它。 比如img的会调用图片管理器,

avi会调用视频播放器打开等。

 

MIME是一种文本标记,表示主要的对象类型和一个特定的字类型,中间以斜杠分开,如img/jpeg,img/gif,text/html,text/plain,video/quicktime,application/vnd.ms-powerpoint等。

 

URI, Uniform Resource Identifier。用来标识Web资源。大部分URL都遵循一种标准格式。包含三个部分:

URI = schema + 服务器因特网地址 + Web上的具体资源。

 

URI 包括URL 和URN两种常见形式。

URL比较常见,不多说。URN用的比较少,比如RFC 2142文档的地址为:urn:ietf:rfc:2142,目前在实验阶段。

 

大部分情况下,都说url。而URI是url的超集。

HTTP事务:包含请求命令和响应结果两部分。

HTTP的5中方法:

GET: 从服务器向客户端发送资源

PUT: 将客户端资源存储到命名服务器中去。

DELETE: 从服务器中删除资源

POST: 将客户端数据发送到一个服务器网关程序。

HEAD: 仅仅发送资源相应的HTTP 首部。

 

每条HTTP报文的相应都会有状态码,三位数字。常见的有:

200: OK,正确返回

302: Redirect(重定向)到其他地方获取资源

404:这个不用多说,天朝特色。(not found,无法找到资源)

在包含多资源的复合页面上请求,要为每个嵌入资源发送HTTP事务。

 

1.2 Web的结构组件

主要包括一下几种。

代理: 位于client与服务器之间的HTTP实体。

缓存:HTTP 仓库,保存副本在客户端更近地方。

网关:连接其他应用程序的Web服务器

隧道:对HTTP报文进行盲转发的特殊代理。

Agent代理: 发起自动HTTP请求的智能代理。

 

对网关的理解不清晰,Gateway是一种特殊的服务器,作为其他服务器的中间实体使用。通常用于将HTTP协议流量转换成其他协议。

网关接受请求时候,就好像自己是资源的服务器一样,客户端可能不知道自己正与一个网关进行通信。

 

如下图中HTTP/FTP网关接受客户端的HTTP请求后,向服务器发起FTP请求,获取文档,然后打包文档以HTTP协议的形式响应给客户端。

整个过程中,客户端并不知晓中间网关的存在。

 

 image

 

 

 

 

 

隧道(tunnel): 建立起来之后,就会在两条对接之间对原始数据进行转发。HTTP隧道通常用来在一条或多条HTTP连接上转发飞HTTP数据,转发时不会窥探数据。

一种常见的用途是SSL。(secure sockets layer)。这样SSL流量就可以穿过只允许Web流量的防火墙。在HTTP通道上传输SSL流量。

 

Agent: Web浏览器/spiders/crowlers等会自动发起HTTP事务的实体。