2.3 Web应用
Web与HTTP
网页(Web Page)包含多个对象(objects)
对象: HTML文件、JPEG图片、视频文件、动态脚本等
基本HTML文件: 包含对其他对象引用的链接URL(UniformResoureLocator):统一资源定位器 RFC1738
Scheme://host:port/path
HTTP连接
- 非持久性连接(Nonpersistent HTTP)
- 每个TCP连接最多允许传输一个对象
- HTTP 1.0版本使用非持久性连接
- 持久性连接(Persistent HTTP)
- 每个TCP连接允许传输多个对象
- HTTP 1.1版本默认使用持久性连接
响应时间分析与建模
RTT(Round Trip Time)
从客户端发送一个很小的数据包到服务器Web服务器并 返回所经历的时间-
响应时间(Response time)
- 发起、建立TCP连接: 1个RTT
- 发送HTTP请求消息到HTTP响应消息的前几个字节到达: 1个RTT
- 响应消息中所含的文件/对象传输时间
- Total=2RTT +文件发送时间
非持久性连接的问题
- 每个对象需要2个RTT
- 操作系统需要为每个TCP连接开销资源(overhead)
假定用户在浏览器中输入URLwww.someSchool.edu/someDepartment/home.index,里面包含文本和指向10个jpeg图片的链接。
则本次传输需要22(11*2)个RTT+文件发送时间
持久性连接
- 发送响应后,服务器保持TCP连接的打开
- 后续的HTTP消息可以通过这个连接发送
无流水(pipelining)的持久性连
- 客户端只有收到前一个响应后才 发送新的请求
- 每个被引用的对象耗时1个RTT
带有流水机制的持久性连接
- 客户端只要遇到一个引用对象就 尽快发出请求
- 理想情况下,收到所有的引用对象只需耗时约1个RTT
同上例,[(1(建立链接) + 11 * 1)个RTT + 文件发送时间]
HTTP消息格式
HTTP协议有两类消息
- 请求消息(request)
- 响应消息(response)
请求消息
HTTP请求消息的通用格式
响应消息
Cookie技术
Web缓存/代理服务器技术
用户设定浏览器通过缓存进行Web访问
浏览器向缓存/代理服务器发送所有的 HTTP请求
• 如果所请求对象在缓存中,缓存返回对象
• 否则,缓存服务器向原始服务器发送HTTP 请求,获取对象,然后返回给客户端并保存 该对象
Web缓存示例(1)
假定:
- 对象的平均大小=100,000bit
- 机构网络中的浏览器平均每秒有15个到原始服务器的请求
- 从机构路由器到原始服务器的往返延迟=2秒
网络性能分析:
- 局域网(LAN)的利用率=15%(100kb*15=1.5Mb/10=15%)
- 接入互联网的链路的利用率=100%(100kb*15=1.5Mb/1.5=100%)(拥塞)
- 总的延迟=互联网上的延迟+访问延迟+局域网
- 延迟=2秒+几分钟+几微秒
Web缓存示例(2)
解决方案1:
- 提升互联网接入带宽=10Mbps
网络性能分析:
- 局域网(LAN)的利用率=15%(100kb*15=1.5Mb/10=15%)
- 接入互联网的链路的利用率=15%(100kb*15=1.5Mb/10=100%)
- 总的延迟=互联网上的延迟+访问延迟+局域网
- 延迟=2秒+几微秒+几微秒
问题:
- 成本太高
Web缓存示例(3)
解决方案2:
- 安装web缓存
- 假定缓存命中率0.4
网络性能分析:
- 40%的请求立刻得到满足
- 60%的请求通过原始服务器满足
- 接入互联网的链路的利用率下降到60%,从而其延迟可以忽略不计,例如10微秒
- 总的平均延迟=互联网上的延迟+访问延迟+局域网延迟=0.6×2.01秒+0.4×n微秒<1.4秒
条件性GET方法
目标
如果缓存有最新的版本,则不需要发送请HTTP request msg求对象。
缓存
- 在HTTP请求消息中声明所持有版本的日期
- If-modified-since:
服务器
如果缓存的版本是最新的,则响应消息中不包含对象(HTTP/1.0 304 Not Modified)
即客户端每次请求,
先发送至缓存服务器,
缓存服务器接收到请求,(有些请求不需要)并向原始服务器请求,
通过(If-modified-since)来判断缓存服务器是否是最新的。
如果是最新的,则响应消息中不包含对象,否则返回最新对象。