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

这里写图片描述

原创粉丝点击