HTTP图解

1 Web 客户端和服务器

Web内容:存储在 Web服务器上的。

Web服务器:使用的是 HTTP协议,因此经常会被称为 HTTP 服务器, 存储了因特网中的数据。

图示:

 

 

图示解读:客户端向服务器发送 HTTP 请求,服务器会在HTTP响应中回送所请求的数据。HTTP 客户端和 HTTP 服务器共同构成了万维网的基本组件。

2资源

Web服务器:Web 资源(Web resource)的宿主

Web资源:Web内容的源头

图示:

 

 

图示解读:所有类型的内容来源都是资源。包含公司销售预测电子表格的 文件是一种资源。扫描本地公共图书馆书架的 Web 网关是一种资源。 因特网搜索引擎也是一种资源等等。

2媒体类型

因特网上有数千种不同的数据类型,HTTP 仔细地给每种要通 过 Web 传输的对象都打上了名为 MIME 类型(MIME type)的 数据格式标签。

MIME 类型:一种文本标记,表示一种主要的对象类型和一个特定的 子类型,中间由一条斜杠来分隔。例如:HTML 格式的文本文档由 text/html 类型来标记。

图示:

 

 

图示解读:

当 Web 浏览器从服务器中取回一个对象时,会去查看相关的 MIME类型,看看它是否知道应该如何处理这个对象。

4 URI

服务器资源名被称为统一资源标识符(Uniform Resource Identifier,URI)。

URI在世界范围内唯一标识并定位信息资源。

例如:http://www.joes-hardware.com/specials/saw-blade.gif

 

 

5 URL

统一资源定位符(URL)是资源标识符最常见的形式。

URL 描述了一台特定服务器上某个资源的特定位置。它们可以明确说明如何从一个精确、固定的位置获取资源。

大部分 URL 都遵循一种标准格式,这种格式包含三个部分。

l  方案(scheme):说明了访问资源所使用的协议类型。这部分通常就是HTTP协议(http://)

l  服务器的因特网地址(比如,www.joes-hardware.com)

l  指定了 Web 服务器上的某个资源(比如,/specials/saw-blade.gif)

几乎所有的 URI 都是 URL

6 URN

URI 的第二种形式就是统一资源名(URN)。 URN 是作为特定内容的唯一名称使用的,与目前的资源所在地无关。使用这些与位置无关的URN,就可以将资源四处搬移。通过URN,还可以用同一个名字通过多种网络访问协议来访问资源。URN 仍然处于试验阶段,还未大范围使用。

7 事务

图示

 

 

8 方法

 

 

9 状态码

 

 

伴随着每个数字状态码,HTTP 还会发送一条解释性的“原因短语” 文本。

 

 

10 Web页面中可以包含多个对象

图示

 

 

11 报文

图示:

 

 

图示解读:

起始行: 报文的第一行就是起始行,在请求报文中用来说明要做些什么,在响应报文中说明 出现了什么情况。

首部字段:起始行后面有零个或多个首部字段。每个首部字段都包含一个名字和一个值,为了 便于解析,两者之间用冒号(:)来分隔。首部以一个空行结束。添加一个首部字段和添加新行一样简单。

主体:空行之后就是可选的报文主体了,其中包含了所有类型的数据。请求主体中包括了要发送给 Web 服务器的数据;响应主体中装载了要返回给客户端的数据。起始行和首部都是文本形式且都是结构化的,而主体则不同,主体中可以包含任意的二进制数据(比如图片、视频、音轨、软件程序)。 当然,主体中也可以包含文本。

实例图示:

 

 

12 连接

12.1 TCP/IP

HTTP 是个应用层协议。HTTP 无需操心网络通信的具体细节;它把联网的细节都交给了通用、可靠的因特网传输协议TCP/IP。

TCP 提供了:

• 无差错的数据传输;

• 按序传输(数据总是会按照发送的顺序到达);

• 未分段的数据流(可以在任意时刻以任意尺寸将数据发送出去)。

图示:

 

 

12.2 连接、IP地址及端口号

在HTTP客户端向服务器发送报文之前,需要用网际协议(Internet Protocol,IP)地址和端口号在客户端和服务器之间建立一条TCP/ IP连接。在TCP中,你需要知道服务器的IP地址,以及与服务器上运行的特定软件相关的 TCP 端口号。

举例,给出以下几个URL:

http://207.200.83.29:80/index.html

http://www.netscape.com:80/index.html

http://www.netscape.com/index.html

第一个URL使用了机器的IP地址,207.200.83.29 以及端口号 80;

第二个URL没有使用数字形式的IP地址,它使用的是文本形式的域名,或者称为主机名(www.netscape.com)。

备注:主机名就是IP地址比较人性化的别称。可以通过一种称为域名服务(Domain Name Service,DNS)的机制方便地将主机名转换为IP地址,这样所有问题就都解决了。

最后一个 URL 没有端口号。HTTP的URL中没有端口号时,可以假设默认端口号是 80。有了IP地址和端口号,客户端就可以很方便地通过TCP/IP进行通信了。下图显示了浏览器是怎样通过 HTTP 显示位于远端服务器中的某个简单HTML资源的。

图示:

 

 

图示解读

(a)      浏览器从 URL 中解析出服务器的主机名;

(b)      浏览器将服务器的主机名转换成服务器的 IP 地址

(c)      浏览器将端口号(如果有的话)从 URL 中解析出来;

(d)      浏览器建立一条与 Web 服务器的 TCP 连接;

(e)      浏览器向服务器发送一条 HTTP 请求报文;

(f)       服务器向浏览器回送一条 HTTP 响应报文;

(g)      关闭连接,浏览器显示文档。

 

13 Web 的结构组件

13.1  代理

位于客户端和服务器之间的 HTTP中间实体。Web安全、应用集成以及性能优化的重要组成模块。

 

 

出于安全考虑,通常会将代理作为转发所有 Web 流量的可信任中间节点使用。代理还可以对请求和响应进行过滤。比如,在企业中对下载的应用程序进行病毒检测。

13.2  缓存

HTTP的仓库,使常用页面的副本可以保存在离客户端更近的地方。Web 缓存(Web cache)或代理缓存(proxy cache)是一种特殊的 HTTP 代理服务器,可以将经过代理传送的常用文档复制保存起来。 下一个请求同一文档的客户端就可以享受缓存的私有副本所提供的服务了。

图示:

 

 

13.3  网关

连接其他应用程序的特殊Web服务器。通常用于将 HTTP 流量转换成其他的协议。网关接受请求时就好像自己是资源的源端服务器一样。客户端可能并不知道自己正在与 一个网关进行通信。

图示:

 

 

图示解读:

一个 HTTP/FTP 网关会通过 HTTP请求接收对 FTP URI 的请求,但通过 FTP协议来获取文档得到的文档会被封 装成一条 HTTP 报文,发送给客户端。

 

13.4 隧道

对 HTTP 通信报文进行盲转发的特殊代理。HTTP 隧道通常用来在一条或多条 HTTP 连接上转发非 HTTP 数据,转发时不会窥探数据。HTTP 隧道的一种常见用途是通过 HTTP 连接承载加密的安全套接字层(SSL, Secure Sockets Layer)流量,这样 SSL 流量就可以穿过只允许 Web 流量通过的防火墙了。

图示:

 

 

图示解读:

HTTP/SSL 隧道收到一条HTTP请求,要求建立一条到目的地址和端口的输出连接,然后在 HTTP 信道上通过隧道传输加密的SSL流量,这样就可以将其盲转发到目的服务器上去了。

13.5 Agent 代理

发起自动HTTP请求的半智能Web客户端。所有发布Web请求的应用程序都是 HTTP Agent 代理。到目前为止,我们只提到过一种HTTP Agent代理: Web 浏览器,但用户 Agent 代理还有很多其他类型,比如,“网络蜘蛛”( spiders)或者“Web 机器人”(Web robots)如下图:网络蜘蛛会在 Web 上闲逛,搜集信息以构建有效的 Web 内容档案,比如一个搜索引擎的数据库或者为比较购物机器人生成的产品目录。

 

posted @ 2018-05-23 15:05  努力的喵喵喵  阅读(969)  评论(1编辑  收藏  举报