0
点赞
收藏
分享

微信扫一扫

Web应用,HTTP协议

Web

World Wide Web: Tim Berners-Lee

网页包含多个对象:

        对象:HTML文件、JPEG图片、视频文件、动态脚本等

  •         基本HTML文件:包含对其他对象引用的链接

对象的寻址——URL:统一资源定位器

HTTP协议概述

  1. 万维网应用遵循什么协议:超文本传输协议HTTP
  2. C/S结构
    1. 客户——browser:请求、接收、展示Web对象
    2. 服务器——Web Server:响应客户的请求,发送对象
  3. HTTP版本:1.0、1.1
  4. 使用TCP传输服务

  • 无状态——服务器不维护任何有关客户端过去所发请求的信息(服务器端不记录历史信息)

为什么选用无状态机制?

有状态的协议更复杂:

  • 需维护状态(历史信息)
  • 如果客户或服务器失效,会产生状态不一致,解决这种不一致代价高

HTTP连接的两种类型

非持久性连接

每个TCP连接最多允许传输一个对象

RTT:从客户端发送一个很小的数据包到服务器并返回所经历的时间

响应时间:发起建立TCP连接(1个RTT)→发送HTTP请求消息到响应消息到达(1个RTT)→响应消息中所含文件/对象传输

total = 2RTT + 文件发送时间

持久性连接

非持久性连接的问题

  1. 每个对象需要2RTT
  2. 操作系统需要为每个TCP连接开销资源

发送响应后,服务器保持TCP连接的打开,后续的HTTP消息可以通过这个连接发送

分两类

  1. 无流水的持久性连接:
    1. 客户端只有收到前一个响应后才发送更新的请求
    2. 每个被引用的对象耗时1个RTT(不用发起、建立TCP连接)
  2. 带有流水机制的持久性连接
    1. 客户端只要遇到一个引用对象就尽快发出请求
    2. 理想情况下,收到所有的引用对象只需约1个RTT

HTTP消息格式

请求消息

  1. ASCII:人直接可读
  2. 格式:

请求行 request行

头部行(声明连接主机;浏览器类型;语言等

空行(表结束

请求消息还需要携带数据吗?

需要。登录账号密码等。上传输入方法:

  1. POST方法:网页需要填写表格;在请求消息的消息体中上传客户端的输入。
  2. URL方法(使用GET方法):输入信息通过request行的URL字段上传。

方法的类型

  1. HTTP/1.0
    1. GET
    2. POST
    3. HEAD:请server不要将所请求的对象放入响应消息中(用于测试)
  2. HTTP/1.1
    1. GET, POST , HEAD
    2. PUT:将消息体中的文件上传到URL字段所指定的路径
    3. DELETE:删除URL字段所指定的文件

响应消息

  1. ASCII:人直接可读
  2. 格式:

Status line

响应状态代码:

Header lines

Data

Cookie技术

为什么需要Cookie?

HTTP协议无状态,但是很多应用需要服务器掌握客户端的状态,如网上购物。

Cookie技术:某些网站为了辨别用户身份、进行session(会话)跟踪存储在用户本地终端上的数据(通常经过加密)。

Cookie组件:HTTP响应消息的cookie头部行;HTTP请求消息cookie头部行;客户端主机上的cookie文件,由浏览器管理;服务器端后台数据库。

Cookie的原理

发起普通的HTTP请求,server为新用户创建一个唯一的ID,存入数据库,响应消息中set-cookie,保存在客户端cookie文件中;

下次该用户再发起请求时,会进行特殊动作(cookie-specific action,针对特定用户)。

Cookie的作用

  1. 身份认证
  2. 购物车
  3. 推荐
  4. Web e-mail

存在隐私问题!!

Web缓存/代理服务器技术

功能:在不访问服务器的前提下满足客户端的HTTP请求。

为什么要这项技术?——性能优化技术,而不是为了扩展功能。

  1. 缩短客户请求响应时间
  2. 减少机构/组织的流量
  3. 在大范围内实现有效的内容分发

原理:

用户设定浏览器通过缓存进行Web访问,浏览器向缓存/代理服务器发送所有的HTTP请求;

如果所请求对象在缓存中,返回缓存对象;

否则,缓存服务器向原始服务器发送HTTP请求,获取对象,然后返回给客户端并保存该对象.

缓存既充当客户端,也充当服务器.

一般由ISP(Internet服务提供商)架设.

缓存服务器中的缓存如何确保与原始服务器一致?

条件性GET方法.(请求消息中上传输入的一种方法)

  • 目标:如果缓存有最新的版本,则不需要发送请求对象
  • 缓存:在HTTP请求消息中声明所持有版本的日期

                If-modified-since:<data>   (条件GET)

                从缓存日期以来是否有改变

  • 服务器:如果缓存的版本是最新的,则响应消息中不包含对象

                HTTP/1.0 304 Not Modified

                响应无改变,数据中没有对象传输

举报

相关推荐

0 条评论