文章目录
第一部分 HTTP: Web的基础
第1章 HTTP概述
-
HTTP使用的是可靠的数据传输协议;
-
因特网上有数千种不同的数据类型,HTTP仔细地给每种要通过Web传输的对象都打上了名为MIME类型(MIME type)的数据格式标签
- MIME类型是一种文本标记,表示一种主要的对象类型和一个特定的子类型,中间由一条斜杠来分隔。
- HTML格式的文本文档由text/html类型来标记。
- 普通的ASCII文本文档由text/plain类型来标记。
- JPEG格式的图片为image/jpeg类型
- GIF格式的图片为image/gif类型
- Apple的QuickTime电影为video/quicktime类型。
- 微软的PowerPoint演示文件为application/vnd.ms-powerpoint类型。
-
服务器资源名被称为统一资源标识符(Uniform Resource Identifier,URI)。URI就像因特网上的邮政地址一样,在世界范围内唯一标识并定位信息资源。
-
URI有两种形式,分别称为URL和URN
- 统一资源定位符(URL)是资源标识符最常见的形式。
- URL的第一部分被称为 方案(scheme),说明了访问资源所使用的协议类型。这部分通常就是HTTP协议(http://)。
- 第二部分给出了服务器的因特网地址(比如,www.joes-hardware.com)。
- 其余部分指定了Web服务器上的某个资源(比如,/specials/saw-blade.gif)。
- URI的第二种形式就是统一资源名(URN)。URN是作为特定内容的唯一名称使用的,与目前的资源所在地无关。使用这些与位置无关的URN,就可以将资源四处搬移。通过URN,还可以用同一个名字通过多种网络访问协议来访问资源。
- 统一资源定位符(URL)是资源标识符最常见的形式。
-
HTTP/1.1是当前使用的最广泛的HTTP版本。
事务
-
事务举例:包含请求与响应的事务
-
方法:HTTP支持几种不同的请求命令,这些命令被称为HTTP方法(HTTP method)
-
状态码:表名服务器响应状态
-
HTTP报文
- 起始行:报文的第一行就是起始行,在请求报文中用来说明要做些什么,在响应报文中说明出现了什么情况。
- 首部字段:起始行后面有零个或多个首部字段。每个首部字段都包含一个名字和一个值,为了便于解析,两者之间用冒号(:)来分隔。首部以一个空行结束。添加一个首部字段和添加新行一样简单。
- 主体:请求主体中包括了要发送给Web服务器的数据;响应主体中装载了要返回给客户端的数据。主体中可以包含任意的二进制数据(比如图片、视频、音轨、软件程序)
连接
- 浏览器从URL中解析出服务器的主机名;
- 浏览器将服务器的主机名转换成服务器的IP地址;
- 浏览器将端口号(如果有的话)从URL中解析出来;
- 浏览器建立一条与Web服务器的TCP连接;
- 浏览器向服务器发送一条HTTP请求报文;
- 服务器向浏览器回送一条HTTP响应报文;
- 关闭连接,浏览器显示文档。
Web的结构组件
-
代理:代理位于客户端和服务器之间,接收所有客户端的HTTP请求,并将这些请求转发给服务器(可能会对请求进行修改之后转发)。对用户来说,这些应用程序就是一个代理,代表用户访问服务器
-
缓存:Web缓存(Web cache)或代理缓存(proxy cache)是一种特殊的HTTP代理服务器,可以将经过代理传送的常用文档复制保存起来。
-
网关:网关(gateway)是一种特殊的服务器,作为其他服务器的中间实体使用。通常用于将HTTP流量转换成其他的协议。网关接受请求时就好像自己是资源的源端服务器一样。客户端可能并不知道自己正在与一个网关进行通信。
-
隧道:隧道(tunnel)是建立起来之后,就会在两条连接之间对原始数据进行盲转发的HTTP应用程序。HTTP隧道通常用来在一条或多条HTTP连接上转发非HTTP数据,转发时不会窥探数据。HTTP隧道的一种常见用途是通过HTTP连接承载加密的安全套接字层(SSL,Secure Sockets Layer)流量,这样SSL流量就可以穿过只允许Web流量通过的防火墙了
-
Agent代理:用户Agent代理(或者简称为Agent代理)是代表用户发起HTTP请求的客户端程序。所有发布Web请求的应用程序都是HTTP Agent代理。到目前为止,我们只提到过一种HTTP Agent代理:Web浏览器,但用户Agent代理还有很多其他类型。
第2章 URL与资源
2.1 URL组成
URL提供了一种统一的资源命名方式。大多数URL都有同样的:“方案://服务器位置/路径”结构。
2.2 URL语法
-
大多数URL方案的URL语法都建立在这个由9部分构成的通用格式上:
<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>
-
通用的URL组件
-
举个栗子:https://user:password@www.myinternet.com:8080/firstPath;firstN=1;type=d/index.xml;secondN=1;type=c?item=111&color=red#drills
- 方案:https协议
- 用户名:密码对:user:password
- 主机名:www.myinternet.com
- 端口号:8080
- 路径: firstPath/index.xml
- 参数: 路径firstPath的参数为firstN=1;type=d。路径/index.xml的参数为secondN=1;type=c
- 查询:item=111和color=red
- 分段:浏览器只显示整个资源drills的