【计算机网络】【应用层】【WEB应用】【HTTP协议】

WEB应用

Web与HTTP

  • World Wide Web: Tim Berners-Lee
  • 只有二十多年的历史
  • 依靠HTTP协议

构成

  • 网页(Web Page)
    • 包含多个对象(Objects)
      • HTML、JPEG、视频文件、动态脚本等
      • 基本HTML文件:包含对其他对象引用的链接
    • 对象的寻址(addressing)
      • URL(Uniform Resource Locator): 统一资源定位器 RFC1738
      • Scheme://host:port/path
  • 网页互相链接

HTTP协议概述

  • 超文本传输协议 HyperTExt Transfer Protocol
  • C/S结构
    • 客户 - Browser:请求、接收、展示Web对象
    • 服务器 - Web Server:响应客户请求,发送请求
  • Web应用进程与TCP连接之间的门
    • 套接字
  • 使用TCP传输服务
    • Server port 80 等待请求
    • 浏览器i发送TCP连接(创建socket)
    • 服务器接收TCP连接
    • 浏览器(HTTP客户端)与Web服务器(HTTP服务器)交换消息
    • 关闭TCP连接
  • 无状态
    • 服务器不维护任何有关客户端过去所发请求的信息

在这里插入图片描述

  • 解释服务器响应
    • HTTP只负责传输文件
    • 对接收页面的解释由客户端应用(浏览器)进行
  • 可扩展!

HTTP连接的两种类型

  • 非持久性连接(Nonpersistent Http)
    • 每个TCP连接最多允许传输一个对象
    • HTTP 1.0 version
  • 持久性连接(Persistent HTTP)
    • 每个TCP连接允许传输多个对象
    • HTTP 1.1 version 默认使用

非持久性连接

在这里插入图片描述

在这里插入图片描述

响应时间分析与建模

  • RTT(Round Trip Time)

    • 从客户端发送一个很小的数据包到服务器并返回所经历的时间
  • 响应时间(Response Time)

    • 发起、建立TCP:1 RTT
    • 发送HTTP请求到HTTP响应消息的前几个字节到达:1 RTT
    • 响应消息所含文件/对象的传输时间
    • Total = 2 * RTT + 文件发送时间

在这里插入图片描述

问题

  • 每个对象需要2个RTT
  • 操作系统需要为每个TCP连接开销资源(overhead)
  • 浏览器
    • 打开多个并行的TCP连接获取网页对象
    • 增加服务器负担

持久性连接

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

分类

  • 无流水(pipelining)的持久性连接
    • 客户但只有收到前一个响应后才发送新的请求
    • 每个被引用的对象耗时1个RTT
  • 带流水机制的持久性连接
    • HTTP 1.1默认选项
    • 客户端只要遇到一个引用对象就尽快发出请求
    • 理想情况下,收到所有的引用对象只需耗时约1个RTT
    • 可以通过配置浏览器控制并行度

HTTP消息格式

两类消息

  • 请求消息
  • 响应消息

请求消息

格式

  • 请求行
    • 请求方法
    • URL
    • HTTP版本
  • 头部行
    • Host:有代理/缓存服务器时才有意义
    • User-agent:浏览器类型
    • Connection:是否关闭连接
    • Accept-language:语言
      • 内容协商头部
      • 如果无法满足则发送默认版本
  • 空行
    • 表示头部结束
  • 消息体
    • 使用GET时为空
    • POST时使用

上传输入的方法

  • POST
    • 填写表单(form)
    • 在请求消息的消息体(entity body)中上传
  • GET
    • 输入信息通过request行的URL字段上传

方法类型

  • HTTP/1.0
    • GET
    • POST
    • HEAD
      • 请Server不要将请求的对象放入响应消息中
  • HTTP/1.1 增加
    • PUT
      • 将消息体中的文件上传到URL字段指定的路径
    • DELETE
      • 删除URL字段所指定的文件

HTTP响应消息

组成

  • 状态行
    • version
    • status code
    • status
  • 头部行
    • Connection:TCP连接关闭或保持
    • Date:生成响应消息的时间
    • Server:Web服务器类型
    • Last-Modified:网页上一次修改的时间
    • Content-Length
    • Content-Type
      • 对象类型由Content-Tyep而不是文件扩展名指示
  • 请求对象

状态码

  • 200 OK
  • 301 Moved Permanently
    • 对象已被转移
    • 新的URL定义在:头部Location中
  • 400 Bad Request
    • 服务器无法理解请求
  • 404 Not Found
    • 请求对象不在服务器上
  • 505 Http Version Not Supported
    • 不支持请求使用的HTTP协议版本

换一种方式体验HTTP

  • telnet

在这里插入图片描述

COOKIE技术

为什么需要Cookie?

  • HTTP协议无状态的
  • 网上购物一类的应用需要记录客户端状态

概述

  • 为了辨别用户身份、进行session跟踪而存储在用户本地终端上的数据(通常经过加密)
  • RFC6265

组件

  • HTTP响应消息的cookie头部行
  • HTTP请求消息的cookie头部行
  • 保存在客户端主机上的cookie文件。由浏览器管理
  • Web服务器端的后台数据库

原理

在这里插入图片描述

  • Set-cookie: 1678

作用

  • 身份认证
  • 购物车
  • 个性化推荐
  • Web Email

隐私问题

  • 你在网络上的举动都被记录了

Web缓存/代理服务器技术

  • 功能
    • 在不访问服务器的前提下满足客户端的HTTP请求
    • 提升性能
  • 作用
    • 缩短客户请求的响应时间
    • 减少机构/组织的流量
    • 在大范围内(Internet)实现有效的内容分发
  • 原理
    • 用户设定浏览器通过缓存进行Web访问
    • 浏览器向缓存/代理服务器发送所有的HTTP请求
      • 请求对象已缓存,返回对象
      • 未缓存,代理请求对象,返回客户端并保存该对象
  • 即充当客户端、也充当服务器
  • 一般由ISP架设

例子

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

问题

  • 对象在缓存服务器中,但是是否和远程服务器一致?

解决

  • 条件性GET
    • 缓存
      • 在HTTP请求消息中声明所持有版本的日期
      • 包含首部行:if-modified-since:
    • 服务器
      • 如果是最新的,响应中不包括对象
      • HTTp/1.0 304 Not Modified

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_39578432/article/details/120389623