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地址及端口号
基本的浏览器连接处理
- 浏览器从URL中解析出服务器的主机名;
- 浏览器将服务器的主机名转换成服务器的IP地址;
- 浏览器将端口号(如果有)从URL中解析出来;
- 浏览器建立一条与Web服务器的TCP连接;
- 浏览器向服务器发送一条HTTP请求报文;
- 服务器向浏览器会送一条HTTP响应报文;
- 关闭连接,浏览器显示文档。
6.3 使用Telnet实例
telnet模拟HTTP客户端
- 查找 www.baidu.com 的 IP 地址,打开一条到那台机器端口80的 TCP 连接;
- 输入 HTTP 请求;
- 服务器在一条 HTTP 响应中将内容回送并关闭连接。
1 | telnet www.baidu.com 80 |
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口袋书)》
网址