Web应用
来源:互联网 发布:date函数的使用方法php 编辑:程序博客网 时间:2024/05/21 06:53
1 Web与HTTP
World Wide Web: Tim Berners-Lee
- 网页
- 网页互相链接
网页(Web Page)包含多个对象(objects)
- 对象:HTML文件、JPEG图片、视频文件、动态脚本等
- 基本HTML文件:包含对其他对象引用的链接
对象的寻址(addressing)
- URL(Uniform Resoure Locator):统一资源定位器 RFC1738
- Scheme://host:port/path
2 HTTP协议概述
万维网应用遵循什么协议?
- 超文本传输协议:HyperText Transfer Protocol
C/S结构
- 客户—Browser:请求、接收、展示Web对象
- 服务器—Web Server:响应客户的请求,发送对象
HTTP版本:
- 1.0: RFC 1945
- 1.1: RFC 2068
使用TCP传输服务
- 服务器在80端口等待客户的请求
- 浏览器发起到服务器的TCP连接(创建套接字Socket)
- 服务器接受来自浏览器的TCP连接
- 浏览器(HTTP客户端)与Web服务器(HTTP服务器)交
换HTTP消息 - 关闭TCP连接
无状态(stateless)
- 服务器不维护任何有关客户端过去所发请求的信息
有状态的协议更复杂:需维护状态(历史信息);如果客户或服务器失效,会产生状态的不一致,解决这种不一致代价高。
3 HTTP连接类型
3.1 非持久性连接和持久性连接
非持久性连接(NonpersistentHTTP)
- 每个TCP连接最多允许传输一个对象
- HTTP 1.0版本使用非持久性连接
持久性连接(Persistent HTTP)
- 每个TCP连接允许传输多个对象
- HTTP 1.1版本默认使用持久性连接
3.2 响应时间分析与建模
RTT(Round Trip Time):从客户端发送一个很小的数据包到服务器
并返回所经历的时间。
非持久性连接响应时间(Response time):
- 发起、建立TCP连接: 1个RTT
- 发送HTTP请求消息到HTTP响应消息的前几个字节到达: 1个RTT
- 响应消息中所含的文件/对象传输时间
- Total=2RTT +文件发送时间
非持久性连接的问题:每个对象需要2个RTT,操作系统需要为每个TCP连接开销资源(overhead)。
浏览器会怎么做?打开多个并行的TCP连接以获取网页所需对象给服务器端造成什么影响?
持久性连接响应时间(Response time):
发送响应后,服务器保持TCP连接的打开,后续的HTTP消息可以通过这个连接发送。
无流水(pipelining)的持久性连接:客户端只有收到前一个响应后才发送新的请求,每个被引用的对象耗时1个RTT。
带有流水机制的持久性连接:HTTP 1.1的默认选项,客户端只要遇到一个引用对象就尽快发出请求。理想情况下,收到所有的引用对象只需耗时约1个RTT。
4 HTTP消息格式
HTTP协议有两类消息
- 请求消息(request)
- 响应消息(response)
请求消息
请求消息:ASCII,人直接可读。
HTTP请求消息通用格式
上传输入的方法
POST方法:网页经常需要填写表格(form),在请求消息的消息体(entity body)中上传客户端的输入。
URL方法:使用GET方法。输入信息通过request行的URL字段上传。例如www.somesite.com/animalsearch?monkeys&banana。
方法的类型
HTTP/1.0:GET、POST、HEAD(请Server不要将所请求的对象放入响应消息中,主要用来进行测试)。
HTTP/1.1:GET、POST、HEAD、PUT(将消息体中的文件上传到URL字段所指定的路径)、DELETE(删除URL字段所指定的文件)。
HTTP响应消息
HTTP响应 状态码
- 响应消息的第一行
- 示例
- 200 OK
- 301 Moved Permanently
- 400 Bad Request
- 404 Not Found
- 505 HTTP Version Not Supported
5 Cookie技术
为什么需要Cookie?
HTTP协议无状态,很多应用需要服务器掌握客户端的状态,如网上购物,如何实现?
Cookie技术
- 某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。
- RFC6265
Cookie的组件
- HTTP响应消息的cookie头部行
- HTTP请求消息的cookie头部行
- 保存在客户端主机上的cookie文件,由浏览器管理
- Web服务器端的后台数据库
Cookie的原理
Cookie的作用
Cookie能够用于:身份认证、购物车、推荐、Web e-mail…….
不过也存在很严重的隐私问题。
6 Web缓存/代理技术
功能:在不访问服务器的前提下满足客户端的HTTP请求。
为什么要发明这种技术?
- 缩短客户请求的响应时间。
- 减少机构/组织的流量。
- 在大范围内(Internet)实现有效的内容分发。
Web缓存/代理服务器
- 用户设定浏览器通过缓存进行Web访问
- 浏览器向缓存/代理服务器发送所有的HTTP请求
- 如果所请求对象在缓存中,缓存返回对象
- 否则,缓存服务器向原始服务器发送HTTP请求,获取对象,然后返回给客户端并保存该对象
- 缓存既充当客户端,也充当服务器
- 一般由ISP(Internet服务提供商)架设
Web缓存示例
假定:
- 对象的平均大小=100,000比特。
- 机构网络中的浏览器平均每秒有15个到原始服务器的请求。
- 从机构路由器到原始服务器的往返延迟=2秒。
网络性能分析:
- 局域网(LAN)的利用率=15%
- 接入互联网的链路的利用率=100%
- 总的延迟=互联网上的延迟+访问延迟+局域网
- 延迟=2秒+几分钟+几微秒
解决方案1:
提升互联网接入带宽=10Mbps
网络性能分析:
- 局域网(LAN)的利用率=15%。
- 接入互联网的链路的利用率=15%。
- 总的延迟=互联网上的延迟+访问延迟+局域网。
- 延迟=2秒+几微秒+几微秒。
问题:成本太高。
解决方案2:
安装Web缓存,假定缓存命中率是0.4(一般在0.2~0.7之间)。
网络性能分析:
- 40%的请求立刻得到满足
- 60%的请求通过原始服务器满足
- 接入互联网的链路的利用率下降到60%,从而其延迟可以忽略不计,例如10微秒。
- 总的平均延迟=互联网上的延迟+访问延迟+局域网延迟=0.6× 2.01秒+0.4× n微秒<1.4秒
条件性GET方法
目标:如果缓存有最新的版本,则不需要发送请求对象。
缓存:
- 在HTTP请求消息中声明所持有版本的日期
- If-modified-since:
服务器:
- 如果缓存的版本是最新的,则响应消息中
不包含对象 - HTTP/1.0 304 Not Modified
- web应用
- Web 应用
- Web 应用
- Web 应用
- Web 应用
- Web 应用
- 、web应用
- WEB应用
- Web应用
- [Java Web]Web应用基本概念
- web应用和web.xml
- Web初学-Web应用细节
- 专题 - Web应用->调试Web应用
- Web应用创建动态应用
- web应用正确处理中文
- web应用分页技术
- Web应用开发方式
- EJB 与 WEB应用
- 【堆+贪心】BZOJ1150 [CTSC2007]数据备份Backup
- App测试方法总结
- android6.0权限封装及全局捕获异常
- Kafka文件存储机制那些事
- spring data jpa
- Web应用
- Linux中的GPIO口使用方法
- bzoj 1997: [Hnoi2010]Planar 2-SAT+平面图
- “双鸭山大学”的来源
- 35. 数据结构笔记之三十五遍历二叉树
- MySQL:实现cumsum(累加)的功能
- 【noip2014】解方程(模意义下的哈希)
- 几种常见的排序算法分析学习
- hdu 4300 很好的hash字符串题