## 2.2 Web 和 HTTP
20世纪90年代以前,互联网主要是研究人员、学者和大学生在使用,他们登录远程主机,在本地主机和远程主机之间传输文件,尽管这些应用非常有用和高效,但是并不被学术界和研究界以外的人知道。
20世纪90年代初,万维网(World Wide Web,1994)出现,将很多数据网上升为一个数据网,并被大众所熟知。
互联网最具有吸引力的是按需操作,当用户有需求时,可以得到想要的信息。
### 2.2.1 HTTP 概况
超文本传输协议(HypeText Transfer Protocol,HTTP)是Web的应用层协议。网络应用的客户端、服务器端运行在不同的端系统上,通过交换HTTP报文进行会话,HTTP定了报文的结构和交换方式。
Web页面(Web Page)是由对象组成的,一个对象只是一个文件(HTML文件、JPEG图形、JAVA程序),且可通过URL寻址。多数Web页面包含一个HTML基本文件(Base HTML file)。
* Web浏览器(Web Browser)实现了HTTP的客户端
* Web服务器(Web Server)实现了HTTP的服务器端,用与储存Web对象以及对象URL寻址
HTTP使用了TCP作为运输协议,TCP保证了数据的传输。
HTTP是一种无状态协议(Stateless Protocol),即服务器不保存客户状态。
### 2.2.2 非持续连接和持续连接
* 非持续连接(Non-persistent Connection):每个请求/响应对是经过单独的TCP连接发送
* 持续连接(Persistent Connection):所有请求/响应对是经过相同的TCP连接发送
非持续连接需要对每个请求的对象建立一个新的TCP连接,增大了服务器的压力。
### 2.2.3 HTTP报文格式
#### 请求报文
报文为普通ASCII文本,方便人为识别。
> GET /somedir/page.html HTTP/1.1
>
> Host: www.someschool.edu
>
> Connection: close
>
> User-agent: Mozilla/5.0
>
> Accept-language: fr
Line 1 为请求行(Request Line):方法字段、URL字段、HTTP版本字段
* 方法字段:GET、POST、HEAD、PUT、DELETE
Line 2-5 为首部行(Header Line)
* 主机地址:Host
* 连接方式:Connection(非持续连接、持续连接),close指不希望使用持续连接
* 用户类型:User-agent
* 语言版本:Accept-language
实体部分
* GET方法:实体部分为空,并且参数拼在URL中
* POST方法:信息写入实体部分
* HEAD方法:类似GET方法,只是服务器响应时用HTTP报文响应,而不是对象
#### 响应报文
> HTTP/1.1 200 OK
>
> Connection: close
>
> Date: Tue, 09 Aug 2011 15:44:04 GMT
>
> Server: Apache/2.2.3 \(CentOS\)
>
> Last-Modified: Tue, 09 Aug 2011 15:11:03 GMT
>
> Content-Length: 6821
>
> Content-Type: text/html
Line 1 为状态行(Status Line)
* 200 OK:请求成功
* 301 Moved Permanently:请求对象已经永久转移,新的URL在响应报文的Location字段中
* 400 Bad Request:一个通用差错代理,表示请求不能被服务器所理解
* 404 Not Found:被请求文档不在服务器上
* 505 HTTP Version Not Supported:服务器不支持HTTP协议版本
### 2.2.4 用户与服务器交互:Cookie
HTTP服务器是无状态的,这样允许工程师们开发可以同时处理数以千计的TCP连接的服务器。
HTTP通过Cookie识别用户,Cookie包含4部分:
* HTTP响应报文中的一个Cookie首部
* HTTP请求报文中的一个Cookie首部
* 客户端系统保留的Cookie,由浏览器管理
* 位于Web站点的一个后端数据库

### 2.2.5 Web 缓存
Web缓存器(Web Cache)也称代理服务器(Proxy Server),它有自己的储存空间,可以保存最近请求过的对象副本。
Web缓存的作用:
* 减少客户请求的响应时间
* 减少接入一个机构的接入链路通信量
Web缓存构成内容分发网络(Content Distribution Network,CDN),CDN公司在地理上部署了许多缓存器,因此使得大量流量实现本地化。
### 2.2.6 条件GET方法
高速缓存可以使得用户的请求响应时间降低,但是缓存器中的对象副本可能过于陈旧。条件GET(Conditional GET)方法允许缓存器证实对象副本是否最新。
* 请求报文使用GET方法
* 请求报文中包含一个‘If-Modified-Since’的首部字段
- 介绍
- 第一章 计算机网络和因特网
- 1.1 什么是因特网
- 1.2 网络边缘
- 1.3 网络核心
- 1.4 分组交换网中的时延、丢包和吞吐量
- 1 .5 协议层次及其服务模型
- 1.6 面对网络攻击
- 1 .7 计算机网络和因特网的历史
- 第二章 应用层
- 2.1 应用层协议原理
- 2.2 Web 和 HTTP
- 2.3 文本传输协议:FTP
- 2.4 因特网中的电子邮件
- 2.5 DNS:因特网的目录服务
- 2.6 P2P应用
- 2.7 套接字编程
- 第三章 运输层
- 3.1 概述和运输层服务
- 3.2 多路复用与多路分解
- 3.3 无连接运输:UDP
- 3.4 可靠数据传输原理
- 3.5 面向连接的运输:TCP
- 3.6 拥塞控制原理
- 3.7 TCP拥塞控制
- 第四章 网络层
- 4.1 概述
- 4.2 虚电路和数据报网络
- 4.3 路由器工作原理
- 4.4 网际协议:因特网的转发和编址
- 4.5 路由选择算法
- 4.6 因特网中的路由选择
- 4.7 广播和多播路由选择
- 第五章 链路层:链路、接入网和局域网
- 5.1 链路层概述
- 5.2 差错检测和纠正技术
- 5.3 多路访问链路和协议
- 5.4 交换局域网
- 5.5 链路虚拟地址:网络作为链路层
- 5.6 数据中心网络
- 5.7 回顾:WEB页面请求的历程
- 第六章 无线网络和移动网络
- 6.1 概述
- 6.2 无线链路和网络特征
- 6.3 WiFi:802.11 无线LAN
- 6.4 蜂窝因特网接入
- 6.5 移动管理:原理
- 6.6 移动IP
- 6.7 蜂窝网中的移动性管理
- 第七章 多媒体网络
- 7.1 多媒体网络应用
- 7.2 流式储存视频
- 7.3 IP语音
- 7.4 实时会话式应用的协议
- 7.5 支持多媒体的网络
- 第八章 计算机网络中的安全
- 8.1 什么是网络安全
- 8.2 密码学的原则
- 8.3 报文完整性和数字签名
- 8.4 端点鉴别
- 8.5 安全电子邮件
- 8.6 使用TCP连接安全:SSL
- 8.7 网络层安全性:IPsec和虚拟专用网
- 8.8 使无线LAN安全
- 8.9 运行安全性:防火墙和入侵检测系统
- 第九章 网络管理
- 9.1 什么是网络管理
- 9.2 网络管理的基础设施
- 9.3 因特网标准管理框架
- 9.4 ASN.1
- 总结
- c.1 第一章小结
- c.2 第二章小结
- c.3 第三章小结
- c.4 第四章小结
- c.5 第五章小结
