学习目标:
Web客户端与服务器是如何通信的;
(表示Web内容的)资源来自何方;
Web事务是怎样工作的;
HTTP通信所使用的报文格式;
底层TCP网络传输;
不同的HTTP协议变体;
Internet上安装的大量HTTP架构中的一部分。
-
Web客户端与服务器是如何通信的:
HTTP底层使用的是可靠的数据传输协议,保证数据在传输的过程中不会被损坏或产生混乱。
Web内容存储在Web服务器上。由客户端向服务器发送HTTP请求,服务器会在HTTP响应中回送所请求的数据。 -
(表示Web内容的)资源来自何方:
Web资源是Web服务器上的文件,包括静态文件:例如文本文件、HTML文件、Word文件、JPEG图片文件灯等;也可以是根据需要由软件程序生成的动态内容。
Web使用MIME类型的数据格式标签表示不同的数据类型。大部分的MIME类型在HTTP MIME类型中给出。
Web资源以URI(统一资源标识符)在世界范围内唯一标识并定位信息资源。URI有URL(统一资源标识符)和URN(统一资源名)两种。但目前URN仍然处在实验阶段。 -
Web事务是怎样工作的:
一个HTTP事务由一条请求命令和一个响应结果组成。通过名为HTTP报文的格式化数据块进行。
HTTP支持几种不同的请求命令,称为HTTP方法。大部分的请求方法在HTTP请求方法中给出。
每条HTTP响应报文返回时都会携带一个状态码。状态码是3位十进制数,用于描述HTTP请求的结果。大部分的状态码在HTTP状态码中给出。 -
HTTP通信所使用的报文格式:
请求命令的报文格式:
请求行: 请求方法|空格|URL|空格|协议版本|回车换行
请求头部: 头字段|:|值|回车换行
…
头字段|:|值|回车换行
空行: 回车换行
请求数据: …实例: GET /hello.txt HTTP/1.1 User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3 Host: www.example.com Accept-Language: en, mi
响应结果的报文格式:
状态行: 协议版本|空格|响应状态码|空格|描述字符串|回车换行
消息报头: 头字段|:|值|回车换行
…
头字段|:|值|回车换行
空行: 回车换行
响应正文: …实例: HTTP/1.1 200 OK Date: Mon, 27 Jul 2009 12:28:53 GMT Server: Apache Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT ETag: "34aa387-d-1568eb00" Accept-Ranges: bytes Content-Length: 51 Vary: Accept-Encoding Content-Type: text/plain <HTML> Hello, World! </HTML>
-
底层TCP网络传输:
TCP提供了:1.无差错的数据传输;2.按序传输;3.未分段的数据流。
HTTP通过TCP/IP协议通信步骤如下:
1. 浏览器从URL中解析出服务器的主机名。
2. 浏览器将服务器的主机名转换成服务器的IP地址(通过DNS服务)。
3. 浏览器将端口号从URL中解析出来。
4. 浏览器建立一条与Web服务器的TCP连接。
5. 浏览器向服务器发送一条HTTP请求报文。
6. 服务器向浏览器回送一条HTTP响应报文。
7. 关闭连接,浏览器显示文档。 -
不同的HTTP协议变体:
目前仍在使用的HTTP版本如下:
1. HTTP/0.9:只支持GET方法,不支持多媒体内容的MIME类型、各种HTTP首部和版本号。
2. HTTP/1.0:支持GET、HEAD、POST等方法,添加了版本号、各种HTTP首部、以及对多媒体对象的处理。
3. HTTP/1.0+:对比纯粹的HTTP/1.0,HTTP/1.0+添加了各种特性,包括持久的keep-alive连接、虚拟主机支持,以及代理连接支持。
4. HTTP/1.1:重点关注的是校正HTTP设计中的结构性缺陷。HTTP/1.1是当前对流行的HTTP版本。
5. HTTP/2.0:又名为HTTP-NG。HTTP-NG是HTTP/1.1后继结构的原型建议,重点关注的是性能的大幅优化。 -
Internet上安装的大量HTTP架构中的一部分:
代理:位于客户端和服务器之间的HTTP中间实体。接收客户端的HTTP请求,将请求转发给服务器(可能修改请求)。
缓存:HTTP的仓库,保存有常用的HTTP文档的副本。
网关:连接其它应用程序的特殊Web服务器。通常用于将HTTP流量转换成其他的协议。
隧道:对HTTP通信报文进行盲转发的特殊代理。一种常见用途是通过HTTP连接承载加密的SSL(安全套接字层)流量,使其可以穿过只允许Web流量通过的防火墙。
Agent代理:发起自动HTTP请求的半智能Web客户端。最常见的Agent代理是Web浏览器。