1.2 Web客户端和服务器
1、Web服务器所使用的是HTTP协议,因此经常会被称为HTTP服务器。
1.3 资源
1、Web服务器是Web资源(Web resource)的宿主。 2、Web资源是Web内容的源头。 3、最简单的Web资源就是Web服务器文件系统中的静态文件。 4、资源不一定非得是静态文件。资源还可以是根据需要生成内容的软件程序。总之,所有类型的内容来源都是资源。
1.3.1 媒体类型
MIME(Multipurpose Internet MailExtension,多用途因特网邮件扩展)
MIME类型是一种文本标记,表示一种主要的对象类型和一个特定的子类型,中间由一条斜杠来分隔。
- HTML文本文档:text/html
- 普通的ASCII文本文档:text/plain
- JPEG图片:image/jpeg
- GIF图片:image/gif
- Apple的QuickTime电影:video/quicktime
- 微软PPT:application/vnd.ms-powerpoint
1.3.2 URI
服务器资源名被称为统一资源标识符(Uniform ResourceIdentifier, URI)
URI:唯一标识,定位信息资源
给定了URI, HTTP就可以解析出对象。
URI有两种形式,分别称为URL和URN。
1.3.3 URL
统一资源定位符(URL)是资源标识符最常见的形式。
URL描述了一台特定服务器上某资源的特定位置。它们可以明确说明如何从一个精确、固定的位置获取资源。
URL标准格式(现在几乎所有URI都是URL)
- URL描述了一台特定服务器上某资源的特定位置。
- 第二部分给出了服务器的因特网地址(比如,www.joes-hardware.com)。
- 其余部分指定了Web服务器上的某个资源(比如,/specials/saw-blade.gif)。
1.3.4 URN
URI的第二种形式就是统一资源名(URN)
URN是作为特定内容的唯一名称使用的,与目前的资源所在地无关。 使用这些与位置无关的URN,就可以将资源四处搬移。通过URN,还可以用同一个名字通过多种网络访问协议来访问资源。
1.4 事务
1.4.1 方法
HTTP支持几种不同的请求命令,这些命令被称为HTTP方法(HTTP method)。每条HTTP请求报文都包含一个方法。这个方法会告诉服务器要执行什么动作(获取一个Web页面、运行一个网关程序、删除一个文件等)。
常见的HTTP方法: GET、PUT、DELET、POST、HEAD
1.4.2 状态码
状态码是一个三位数字的代码,告知客户端请求是否成功,或者是否需要采取其他动作。
每条HTTP响应报文返回时都会携带一个状态码。
伴随着每个数字状态码,HTTP还会发送一条解释性的“原因短语”文本
包含文本短语主要是为了进行描述,所有的处理过程使用的都是数字码。例:
- 200 OK
- 200 Document attached
- 200 Success
- 200 All‘s cool,dude
1.4.3 Web页面中可以包含多个对象
应用程序完成一项任务时通常会发布多个HTTP事务。
一个“Web页面”通常并不是单个资源,而是一组资源的集合。
1.5 报文
HTTP报文是由一行一行的简单字符串组成的。HTTP报文都是纯文本,不是二进制代码。
从Web客户端发往Web服务器的HTTP报文称为请求报文(request message)
从服务器发往客户端的报文称为响应报文(response message)
此外没有其他类型的HTTP报文。
HTTP报文包括以下三个部分:
-
起始行
报文的第一行就是起始行,在请求报文中用来说明要做些什么,在响应报文中说明出现了什么情况。
-
首部字段
起始行后面有零个或多个首部字段。每个首部字段都包含一个名字和一个值,为了便于解析,两者之间用冒号(:) 来分隔。首部以一个空行结束。添加一个首部字段和添加新行一样简单。
-
主体
空行之后就是可选的报文主体了,其中包含了所有类型的数据。请求主体中包括了要发送给Web服务器的数据;响应主体中装载了要返回给客户端的数据。起始行和首部都是文本形式且都是结构化的,而主体则不同,主体中可以包含任意的二进制数据(比如图片、视频、音轨、软件程序)。当然,主体中也可以包含文本。
1.6.1 TCP/IP
HTTP是个应用层协议。HTTP无需操心网络通信的具体细节
把联网的细节都交给了通用、可靠的因特网传输协议TCP/IP
TCP提供了:
- 无差错的数据传输
- 按序传输(数据总是会按照发送的顺序到达)
- 未分段的数据流(可以在任意时刻以任意尺寸将数据发送出去)
1.6.2 连接、IP地址及端口号
基本的浏览器连接处理步骤如下:
- 浏览器从URL中解析出服务器的主机名
- 浏览器将服务器的主机名转换成服务器的IP地址
- 浏览器将端口号(如果有的话)从URL中解析出来
- 浏览器建立一条与Web服务器的TCP连接
- 浏览器向服务器发送一条HTTP请求报文
- 服务器向浏览器回送一条HTTP响应报文
- 关闭连接,浏览器显示文档
1.8 Web的结构组件
-
代理
位于客户端和服务器之间的HTTP中间实体。
-
缓存
HTTP的仓库,使常用页面的副本可以保存在离客户端更近的地方。
-
网关
连接其他应用程序的特殊Web服务器。
-
隧道
对HTTP通信报文进行盲转发的特殊代理。
-
Agent代理
发起自动HTTP请求的半智能Web客户端。
\