HTTP概述

1 HTTP-因特网的多媒体信使

2 Web客户端和服务器

3 资源

3.1 媒体类型

MIME类型

全称Multipurpose Internet Mail Extension(多用途因特网邮件扩展)
历史:最初用来解决不同电子邮件系统之间搬移文档时存在的问题,后被 HTTP 采纳。
用途:WEB 浏览器通过查看获取的对象的 MIME 类型来确定如何处理这个对象。

MIME常见类型列表(总共有100多)

MIME类型 表示
text/html HTML格式的文本文档
text/plain 普通ASCLL文本文档
image/jpeg JPEG图片
image/gif GIF图片
video/quicktime Apple的QuickTime电影
application/vnd.ms-powerpoint 微软的PowerPoint演示文件

3.2 URI

URI

全称Uniform Resource Identifier(统一资源标识符)
用途:就像因特网上的邮政地址一样,在世界范围内唯一标识并定位信息资源。
分类:URL 和 URN

URL

全称:统一资源定位符
用途:描述了一台特定服务器上某资源的特定位置
格式

部分 表示 例如
方案(schema) 访问资源使用的协议类型 http://
因特网地址 服务器的地址 www.joes-hardware.com
资源 Web服务器上的某个资源 /specials/saaw-blade.gif

URN

全称:统一资源名
作用:作为特定内容的唯一名称使用,与目标资源所在地无关。
特别:仍处于试验阶段,还未大范围使用。

4 事务

是什么:由一条请求命令和响应结果组成。通过名为HTTP报文的格式化数据块进行。

4.1 方法

说明:HTTP 支持几种不同的请求命令,这些命令被称为 HTTP 方法(HTTP method)。
作用:告诉服务器要执行什么动作(获得一个Web页面、运行一个网关程序、删除一个文件等)。

常见 HTTP 方法 描述
GET 从服务器向客户端发送命名资源
PUT 将来自客户端的数据存储到一个命名的服务器资源中去
DELETE 从服务器中删除命名资源
POST 将客户端数据发送到一个服务器网管应用程序
HEAD 仅发送命名资源响应中的 HTTP 首部

4.2 状态码

属于:HTTP响应报文
作用:状态码是一个三位数字的代码,告知客户端请求是否成功,或者是否需要采取其他动作。

常见HTTP状态码 描述
200 OK.文档正确返回
302 Redirect(重定向)。到其它地方去获取资源。
404 Not Found(没找到)。无法找到这个资源

注意:伴随每个数字状态码,HTTP还会发送一条解释性的“原因短语”,以200为例

200 OK
200 Document attached
200 success
200 All’s cool, dude

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

5 报文

特点:HTTP 报文都是由一行行简单字符串组成,不是二进制,因此解析 HTTP 报文需要很多技巧。

报文类型 英文 说明
请求报文 request message 从Web端发往服务器端
响应报文 response message 从服务器端发往Web端

报文结构

简单的报文实例:

6 连接

6.1 TCP/IP

TCP

特点

  • 无差错的数据传输;
  • 按序传输(数据总是会按照发送的顺序到达);
  • 为分段的数据流(可以在任意时刻以任意尺寸将数据发送出去)。

6.2 连接、IP地址及端口号

基本的浏览器连接处理

  1. 浏览器从URL中解析出服务器的主机名;
  2. 浏览器将服务器的主机名转换成服务器的IP地址;
  3. 浏览器将端口号(如果有)从URL中解析出来;
  4. 浏览器建立一条与Web服务器的TCP连接;
  5. 浏览器向服务器发送一条HTTP请求报文;
  6. 服务器向浏览器会送一条HTTP响应报文;
  7. 关闭连接,浏览器显示文档。

6.3 使用Telnet实例

telnet模拟HTTP客户端

  1. 查找 www.baidu.com 的 IP 地址,打开一条到那台机器端口80的 TCP 连接;
  2. 输入 HTTP 请求;
  3. 服务器在一条 HTTP 响应中将内容回送并关闭连接。
1
2
3
telnet www.baidu.com 80
GET /tools.html HTTP/1.1
Host:www.joes-hardware.com

7 协议版本

协议版本 特性 缺点 时间 使用状态
HTTP/0.9 只支持GET方法,不支持多媒体内容的MIME类型、各种HTTP首部或者版本号 严重设计缺陷 1991 被HTTP/1.0取代
HTTP/1.0 支持版本号、各种HTTP首部、一些额外的方法,以及对多媒体的处理 未良好说明 HTTP协议的商业演进和学术研究都在快速演进 得到广泛使用
HTTP/1.0+ 持久的keep-alive连接、虚拟主机支持以及代理连接支持 非官方的事实HTTP扩展标准 20世纪90年代(万维网扩张) 十分成功
HTTP/1.1 矫正HTTP设计中的结构性缺陷,明确语义,引入重要的性能优化措施,删除了一些不好的特性。 20世纪90年代末 当前使用的HTTP版本
HTTP-NG(HTTP/2.0) 性能的大幅优化,以及更强大的服务逻辑远程执行框架 未推广 终止于1998 没有推广

8 Web的结构组件

常见WEB应用程序列表

web应用程序 用途
代理 位于客户端和服务器之间的 HTTP 中间实体
缓存 HTTP 的仓库,是常用页面的副本可以保存在理客户端更近的地方
网关 连接其它应用程序的特殊 Web 服务器
隧道 对 HTTP 通信报文进行盲转发的特殊代理
Agent 代理 发起自动 HTTP 请求的半智能客户端

8.1 代理

角色:WEB安全、应用集成以及性能优化的重要组成部分。
工作方式:位于客户端和浏览器之间,接收所有客户端的HTTP请求,并将这些请求转发给服务器。

用途举例

  • 作为转发所有Web流量的可信任节点;
  • 对请求和响应进行过滤。

8.2 缓存

角色:web缓存或代理缓存是一种特殊的 HTTP 代理服务器。
工作方式:保存常用文档本地副本以提高性能

8.3 网关

角色:一种特殊的服务,作为其它服务器的中间实体使用。
用途:通常用于将HTTP流量转换成其它的协议。

8.4 隧道

说明:建立起来之后,就会在两条链接之间对原始数据进行盲转发的HTTP应用程序。
用途:通常用来在一条或多条HTTP连接上转发非HTTP数据,转发时不会窥探数据。

8.5 Agent代理

说明:所有发布web请求的应用程序都是HTTP Agent代理,比如浏览器、爬虫程序。

9 起始部分的结束语

10 更多信息

10.1 HTTP协议信息

书籍

  • 《HTTP Pocket Reference(HTTP口袋书)》

网址

10.2 历史透视

10.3 其它万维网信息