目录
常见术语
1.HTTP概况
2.HTTP连接
非持久HTTP流程
响应时间模型
持久HTTP
3.HTTP报文
3.1HTTP请求报文
3.2HTTP响应报文
HTTP响应状态码
4.Cookies(用户-服务器状态)
Cookies的作用
5.Web缓冲(代理服务器)
缓存示例
缓存示例:使用带宽更大的链路
缓存示例:安装本地缓存
条件GET方法
常见术语
- Web页面:由一些对象组成
- 对象可以是HTML文件、JPEG图像、Java小程序、声音剪辑文件等
- Web页面包括一个基本的HTML文件,该基本HTML文件又包括若干对象的引用(链接)
- 通过URL对每个对象进行引用
- 访问协议、用户名、口令字、端口等等
- URL格式
1.HTTP概况
HTTP:超文本传输协议(Hypertext Transfer Protocol)
- Web的应用层协议
- 客户/服务器模式
- 客户:请求、接收和显示Web对象的浏览器
- 服务器:对请求进行响应,发送对象的Web服务器
使用TCP协议
- 客户端发起一个与服务器的TCP连接(建立socket),端口号为80
- 服务器接收客户端的TCP连接
- 客户端与服务器交换HTTP报文(应用层协议报文)
- TCP连接关闭
HTTP是无状态的
- 服务器不维护关于客户端的任何信息
2.HTTP连接
非持久HTTP
- 只有一个对象在TCP连接上发送
- 下载多个对象需要多个TCP连接
- HTTP/1.0使用非持久连接
持久HTTP
- 多个对象可以在一个TCP连接是传输
- HTTP/1.1默认使用T持久连接
非持久HTTP流程
响应时间模型
持久HTTP
非持久HTTP的缺点
- 每个对象要2个RTT
- 操作系统必须为每个TCP连接分配资源
- 浏览器通常并行打开TCP连接(同一时间建立多个TCP连接),以获取引用对象
持久HTTP
- 服务器在发送响应之后,任然保持TCP连接
- 在相同客户端和服务器之间的后续请求和响应报文通过相同的连接进行传输
- 客户端在遇到一个引用对象的时候,就可以尽快发送该对象的请求
非流水方式的持久HTTP:
- 客户端只能在收到一个响应之后才可以发出新的请求
- 每个引用对象花费一个RTT
流水方式的持久RTT:
- HTTP/1.1的默认模式
- 客户端遇到一个引用对象就立即产生一个请求
- 所有引用对象只花费一个RTT是可能的
3.HTTP报文
3.1HTTP请求报文
- 两种类型的HTTP报文:请求、响应
HTTP请求报文:
- ASCII(人能阅读)
HTTP请求报文:通用格式
提交表单输入
方法类型
3.2HTTP响应报文
HTTP响应状态码
4.Cookies(用户-服务器状态)
大多数的门户网站主要使用的就是cookies。
cookies的4个组成部分:
- 在HTTP响应报文中有一个cookie的首部行
- 在HTTP请求报文中有一个cookie的首部行
- 在用户端系统中保留有cookie文件,由用户的浏览器管理
- 在Web站点有一个后端数据库
cookies:维护状态
Cookies的作用
cookies能带来什么:
- 用户验证
- 购物车
- 推荐
- 用户状态
cookies如何维护状态:
- 协议端节点:在多个事务上,发送端和接收端维持状态
- cookies:http报文携带状态信息
5.Web缓冲(代理服务器)
目标:不使用原始服务器,就满足客户的需求
- 用户设置浏览器:通过缓存访问Web
- 浏览器将所有的请求发给缓存
- 存在缓存中的对象,直接返回该对象
- 如果缓存中不存在该对象,缓存请求原始服务器,然后再将对象返回给客户端
- 缓存既是客户端又是服务器
- 通常缓存是由ISP按照(大学、公司、居民区ISP)
为什么要使用Web缓存?
- 降低客户端的请求响应时间
- 大大减少一个机构内部网络与Internet接入链路的流量
- 使用较弱的ICP也能够有效提供内容