释放双眼,带上耳机,听听看~!
Web与HTTP
网页(Web Page)包含多个对象(objects)
- 对象:HTML文件、JPEG图片、视频文件、动态脚本等
- 基本HTML文件:包含对其他对象引用的链接
对象的寻址(addressing)
- URL(Uniform Resoure Locator):统一资源定位器 RFC1738
- Scheme://host:port/path
HTTP协议
HTTP——HyperText Transfer Protocol(超文本传输协议)
使用TCP传输服务
- 服务器在80端口等待客户的请求
- 浏览器发起到服务器的TCP连接(创建套接字Socket)
- 服务器接受来自浏览器的TCP连接
- 浏览器(HTTP客户端)与Web服务器(HTTP服务器)交换HTTP消息
- 关闭TCP连接
无状态(stateless)
服务器不维护任何有关客户端过去所发请求的信息
HTTP连接
类型
非持久性连接(Nonpersistent HTTP)
- 每个TCP连接最多允许传输一个对象
- HTTP 1.0版本使用非持久性连接
持久性连接(Persistent HTTP)
- 每个TCP连接允许传输多个对象
- HTTP 1.1版本默认使用持久性连接
## 响应时间分析与建模
RTT(Round Trip Time)
从客户端发送一个很小的数据包到服务器并返回所经历的时间
响应时间(Response time)
- 发起、建立TCP连接:1个RTT
- 发送HTTP请求消息到HTTP响应消息的前几个字节到达:1个RTT
- 响应消息中所含的文件/对象传输时间
Total=2RTT +文件发送时间
## 持久性HTTP
非持久性连接的问题
- 每个对象需要2个RTT
- 操作系统需要为每个TCP连接开销资源(overhead)
- 浏览器会打开多个并行的TCP连接以获取网页打开所需的对象
持久性连接
- 发送响应后,服务器保持TCP连接的打开
- 后续的HTTP消息可以通过这个连接发送
无流水(pipelining)的持久性连接
- 客户端只有收到前一个响应后才发送新的请求
- 每个被引用的对象耗时1个RTT
带有流水机制的持久性连接
- HTTP 1.1的默认选项
- 客户端只要遇到一个引用对象就尽快发出请求
- 理想情况下,收到所有的引用对象只需耗时约1个RTT
HTTP消息格式
请求消息
一般是ASCII编码:可以直接阅读
### HTTP请求消息的通用格式
### 上传输入的方法
POST方法
- 网页经常需要填写表格(form)
- 在请求消息的消息体(entity body)中上传客户端的输入
GET方法
输入信息通过request行的URL字段上传
类型
HTTP/1.0
GET POST HEAD
HTTP/1.1
GET, POST, HEAD
PUT DELETE
### HTTP响应状态代码
- 200 OK
- 301 Moved Permanently
- 400 Bad Request
- 404 Not Found
- 505 HTTP Version Not Supported
- ……
Cookie技术
某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的(通常经过加密)数据
组成
- HTTP响应消息的cookie头部行
- HTTP请求消息的cookie头部行
- 保存在客户端主机上的cookie文件,由浏览器管理
- Web服务器端的后台数据库
## Web缓存/代理服务器技术
功能
在不访问服务器的前提下满足客户端的HTTP请求
用处
- 缩短客户请求的响应时间
- 减少机构/组织的流量
- 在大范围内(Internet)实现有效的内容分发
Web缓存/代理服务器技术
Web缓存/代理服务器
1,用户设定浏览器通过缓存进行Web访问
2,浏览器向缓存/代理服务器发送所有的HTTP请求,如果所请求对象在缓存中,缓存返回对象,否则,缓存服务器向原始服务器发送HTTP请求,获取对象,然后返回给客户端并保存该对象。
缓存既充当客户端,也充当服务器。一般由ISP(Internet服务提供商)架设