&2应用层 - Web和HTTP

Web和HTTP

  • HTTP概况
    • Web常用语
    • 客户机和服务器之间交互的过程
  • HTTP连接
    • 非持续连接
      • **其工作过程**:
      • 请求一个HTML文件所需时间
      • 缺点
    • 持续连接
    • 持续连接两种方式(非/流水线)
  • HTTP请求报文通用格式
    • HTTP响应报文
    • HTTP响应状态码
  • 用户与服务器交互:Cookie
    • 工作过程
    • Cookie用途
    • Cookie缺陷
  • HTTP内容
  • Web缓存(Web缓存器 Web cache)
    • 使用Web缓存器
    • Web缓存优点
  • 条件GET方法
    • 条件GET方法使用

Web是World Wide Web的简称,中文称之为 万维网,是用于发布、浏览、查询信息的网络信息服务系统。
Web关键技术:

  • 用户超文本标记语言(HTML)实现信息与信息之间的链接
  • 用统一资源定位技术(URL)实现全球信息的精确定位。
  • 用超文本传输协议(HTTP)实现分布式信息共享。

产生于20实际90年代
影响:

  • 改变了人们与工作环境内外的交流方式;
  • 提升因特网地位
  • 生活和工作发生变化
  • 方便、快捷得到所需要的信息(按需操作)
  • 任何人可以在Web上发布信息
  • 超链接和搜索引擎帮助人们浏览Web站点。

HTTP概况

HTTP(超文本传输协议):
应用层协议,Web的核心
包括两部分:
客户机程序
服务器程序
分别运行在不同的端系统中,通过交换HTTP报文进行会话。
HTTP协议定义了报文的格式以及客户机和服务器交换报文的方式

Web常用语

  1. Web页(文档):由若干对象组成
    对象:是文件。通过一个URL地址来寻址。如HTML文件、JPEG图像文件、Java小程序等。
    Web页含有一个基本的HTML文件及几个引用对象。(例如:一个Web页包含HTML文本和5个JPEG图形文件,即有6个对象)
    在基本的HTML文件中,每个对象可由URL来寻址。
  2. URL:Uniform Resource Locator。统一资源定位符。标识万维网WWW上的各种文档,全网范围唯一。
    URL地址组成:
    存放对象的服务器主机名和对象的路径名。
    &2应用层 - Web和HTTP_第1张图片
  3. 浏览器(客户机):是Web应用的用户代理,用于显示所请求的Web页,提供导航功能和配置属性。
    实现了HTTP协议的客户机端。
  4. Web服务器:用于存贮Web对象(由URL寻址)
    实现HTTP协议的服务器端。

HTTP协定定义了Web客户机(浏览器)如何向Web站点请求Web页,以及服务器如何将Web页传送给客户机。

客户机和服务器之间交互的过程

  • 客户机:用户请求一个Web页(如点击一个超链接),浏览器向服务器发出对该页所含对象的“HTTP请求报文”。

  • 服务器:接受请求,回发包含请求对象的“HTTP响应报文”。
    &2应用层 - Web和HTTP_第2张图片
    HTTP协议使用的底层运输协议是TCP
    工作过程:
    创建TCP ——> 交换报文 ——> 关闭TCP连接

  • 客户机先与服务器建立TCP连接,然后,浏览器和服务器进行通过套接字访问TCP:
    &2应用层 - Web和HTTP_第3张图片

  • 客户机:从其套接字接口发送“HTTP请求报文”和接收“响应报文”。

  • 服务器:从其套接字口接收“HTTP请求报文”和发送“响应报文”

TCP提供可靠的数据传输服务:客户机进程和服务器进程发出的每个HTTP报文能完整地到达对方。
HTTP是无状态协议:服务器不保存关于客户机的任何信息
Web使用客户机/服务器结构,Web服务器总是打开,有一个固定IP地址,为多个浏览器服务。

HTTP连接

非持续HTTP连接:

  • 每个TCP连接上只传送一个Web对象
  • 只传送一个请求/响应对

持续HTTP连接:

  • 一个TCP连接上可以传送多个Web对象
  • 传送多个请求/响应对

默认方式下使用持续连接

非持续连接

例,客户机向服务器请求传送一个Web页

  • 含有一个基本HTML文件和10个JPEG图形,11个对象位于同一个服务器上。
  • HTML文件的URL为: http://www.someSchool.edu/someDepartment/home.index

其工作过程


说明:

  • 每个TCP连接在服务器返回对象后关闭(非持续)。
  • 每个TCP连接只传输一个请求报文和一个响应报文(上例中,要建立11个TCP连接)
  • 浏览器可同时打开多个连接
  • 并行的TCP连接:并行数大于1.默认打开5~10个。
  • 串行的TCP连接:最大并行数为1。

请求一个HTML文件所需时间

即从客户机请求基本HTML文件开始,到用户收 到整个文件为止所花时间。

往返时延RTT(Round Trip Time): 一个小分组从客户机到服务器,再回到客户机所花时间。
包括传播时延、排队时延以及处理时延。

建立TCP连接 ——> 交换报文

  • TCP连接的“三次握手”过程:
    • 客户机发送一个TCP连接请求报文
    • 服务器回送一个TCP确认响应报文
    • 客户机向服务器发送一个包含“TCP确认”和“HTTP请求“的报文。
  • 总响应时间:两个RTT时延加上服务器发送文件的时间
    • 总计 = 2RTT+文件传输时间

缺点

  • 服务器负担重:每一个请求对象需建立和维护一个新的连接。
  • 每一个对象的传输时延长:包含两个RTT时延,一个用于TCP建立,一个用户请求和接收对象。

持续连接

服务器在发送响应后保持该TCP连接:

  • 相同客户机与服务器之间的后续请求和响应报文通过 相同的连接进行传送。
    如,一个Web页 的所有对象可以通过一个持续TCP 连接传送。
  • 或同一服务器上的多个Web页也可以通过一个持续 TCP连接传送给同一个客户机。
  • 连接经一定时间间隔(超时间隔)未被使用,服务器就关 闭该连接。

持续连接两种方式(非/流水线)

非流水线方式:客户机只能在前一个响应接收到之后 才能发出新的请求。

  • 客户机为每一个引用对象的请求和接收都使用一个 RTT时延。
  • 会浪费一些服务器资源:服务器在发送完一个对象, 等待下一个请求时,会出现空闲状态。

流水线方式:客户机可一个接一个连续产生请求(只要有引用就产生),即在前一个请求接收到响应之前可以产生新的请求。
服务器一个接一个连续发送相应对象。

  • 特点:节省RTT时延,可能所有引用对象只需一个RTT时延。TCP连接空闲时间很短。
  • 默认方式:流水线方式的持续连接。

HTTP请求报文通用格式

“用表单生成的请求报文不是必须使用POST方法” GET+扩展URL
&2应用层 - Web和HTTP_第4张图片

HTTP响应报文

HTTP响应状态码

在服务器到客户机响应报文中的首行

  • 200 OK
    请求成功,请求的对象在这个报文后面
  • 301 Moved Permanently
    请求的对象已转移,新的URL在响应报文的Location:首部行中指定
  • 400 Bad Request
    请求报文不为服务器理解
  • 404 Not Found
    请求的文档没有在该服务器上发现
  • 505 HTTP Version Not Supported
    服务器不支持请求报文使用的HTTP版本

用户与服务器交互:Cookie

HTTP服务器是无状态的,不保存客户信息。

Cookie:允许Web站点跟踪、识别用户;服务器可以 限制用户访问,或把内容与用户身份关联。

包括四个部分:

  • 在HTTP响应报文中有一个cookie 首部行
  • 在HTTP请求报文中有一个cookie 首部行
  • 用户主机中保留有一个 cookie 文件并由浏览器管理
  • Web站点的后端数据库保存cookie

工作过程

Cookie用途

  • 身份认证
  • 虚拟购物车(跟踪用户购买的物品)
  • 推荐广告
  • 用户会话状态(Web e-mail)

Cookie缺陷

  • 站点可以知道用户许多信息
  • 不利于用户隐私保护

HTTP内容

  • 传输Web页面所含对象:如HTML文件、JPEG文件、 Java小应用程序等等。
  • 可以传输其他类型文件:如传输XML(可扩展标记 语言)文件。
  • P2P文件共享中:作为文件传输协议使用。
  • 用于流式存储的音频和视频

Web缓存(Web缓存器 Web cache)

Web缓存器(Web cache):也叫代理服务器
能够代表初始Web服务器来满足HTTP请求的网络实体

  • 保存最近请求过的对象的副本
  • 可在客户机或服务器工作,也可在中间系统工作

初始(原始)服务器(origin server):对象最初存放并始终保持其拷贝的服务器。

目标:代替初始服务器满足HTTP请求

使用Web缓存器

客户机通过Web缓存器请求对象。

  • 用户配置浏览器: 所有Web 访问经由Web缓存器
  • 浏览器向Web缓存器发送所有HTTP请求
    对象在缓存中:Web缓 存器返回对象
    对象不在缓存中:Web缓存器向初 始服务器发出请求,接 收对象后转发给客户机

&2应用层 - Web和HTTP_第5张图片
具体操作过程

例:假设浏览器请求对象 http://www.someschool.edu/campus.gif

  1. 浏览器:建立一个到Web 缓存器的TCP连接,并向 Web缓存器发送一个对该对象HTTP请求
  2. Web缓存器:检查本地是否有该对象的拷贝。
  3. 有:就用HTTP响应报文向 浏览器转发该对象
  4. 没有:与该对象的初始服务器打开一个TCP连接。 客户机 <——> Web缓存器 <—— >初始服务器
  5. Web缓存器在TCP连接上发 送获取该对象的请求。
  6. 初始服务器收到请求,向 Web缓存器发送该对象的 HTTP响应
  7. Web缓存器接收该对象,存 储一份在本地中,并通过 HTTP响应报文向浏览器转 发该对象(通过已经建立的 TCP连接)。

说明

  • Web缓存器既可以是服务器也可以是客户机
  • 当它接收浏览器请求并发回响应时,是服务器;
  • 当它向初始服务器发出请求并接收响应时,是客户机。

Web缓存优点

  • 减少客户机请求的响应时间:
    客户机 <——> Web缓存器 <—— >初始服务器
    高速链路
  • 减少机构内部网络与因特网连接链路上的通信量:
    降低开销,改善各种应用的性能。

条件GET方法

  • 高速缓存:减少响应时间;
    存放在缓存中的对象拷贝可能是旧的。即保存在初始 Web服务器中的对象可能已经被修改。
  • 条件GET方法:
    使缓存器能够证实其保存的对象是否为最新。
    如果缓存中是最新对象版本,可继续使用,初始Web 服务器就不需重新发送该对象。

条件GET方法使用

  1. Web服务器回发响应报文:包括对象的最后修改时间
    Last-modified:date1
  2. 缓存检查Web服务器中的该对象是否已被修改,发送 一个条件GET请求报文:
    If-modified-since: date1
  3. 告诉服务器,仅当自指定日期之后该对象被修改过, 才发送该对象。
  4. 若Web服务器中的该对象未被修改,则响应报文含有 304 Not Modified,并且实体为空。

例:

你可能感兴趣的:(计算机网络,前端,http,服务器)