计算机网络——应用层-Web&HTTP

计算机网络系列博文——目录

Web(World Wide Web)

20世纪90年代初
因特网应用

Web应用的组成

  • 文档格式标准 HTML
  • Web浏览器
  • Web服务器
  • 应用层协议HTTP

网页(Web Page)

由对象组成。对象是一个文件,如HTML文件,JPEG图像,Java程序,视频片段等。
对象可通过一个URL地址寻址。
Web页面常由一个HTML基本文件和多个引用对象构成。

URL地址

URL(Uniform Resoure Locator):统一资源定位器 RFC1738

Scheme://host:port/path

用以寻址Web对象
由一个存放对象的服务器主机名和对象路径名构成。

超文本传输协议(HyperText Transfer Protocol,HTTP)

HTTP 由客户端程序和服务端程序实现,二者通过交换HTTP报文会话。
HTTP规范定义了HTTP客户端和服务端之间的通信协议。

Web浏览器实现HTTP客户端,请求、接收、展示Web对象
Web服务器实现HTTP服务端,响应客户的请求,发送对象

HTTP使用TCP作为支撑运输层协议。

端口:80

无状态协议 服务器不保存关于客户的任何信息
服务器向客户发送被请求的文件,而不存储任何关于客户的状态信息。

往返时间(Round-Trip Time,RTT)
一个短分组从客户到服务器然后再返回客户所花费的时间。

非持续连接

某客户和服务器的一次会话中,每个请求/响应对通过一个单独的TCP连接传输

HTTP 1.0版本使用非持续性连接

串行非持续连接

对多个待获得的web对象,客户端一次只请求一个对象,待前一个对象接收完毕后再发送对下一个对象的请求。

时间分析

  • 为请求一个小web对象(对象传输时间可忽略),需要消耗两个RTT时间。第一个RTT执行TCP握手的前两部分,第二个RTT结合TCP握手的第三部分发送请求报文,接收响应报文。
  • 请求一个引用a个小web对象的小基本web对象需要耗时个RTT

并行非持续连接

浏览器通常支持并行的TCP连接。并行TCP连接数通常为5~10个。
对多个待获得的web对象,客户端一次可同时建立多个TCP连接,以同时请求多个web对象。
时间分析

  • 建立TCP连接并获得小基本web文档需要两个RTT。若在浏览器并行能力之内,被引用的多个小web对象可同时获得,需要两个RTT。共4个RTT。

持续连接

某客户和服务器的一次会话中,所有请求/响应对经同一TCP连接传输

HTTP 1.1版本在默认方式下采用持续连接,但也可由客户端/服务器配置为非持续连接。

无流水(pipelining)的持久性连接

客户端只有收到前一个响应后才发送新的请求
可理解为同个TCP内的串行

时间分析

  • 建立TCP连接并获得小基本web文档需要两个RTT。每个被引用的小web对象耗时1个RTT。
  • 请求一个引用a个小web对象的小基本web对象需要耗时个RTT

带有流水机制的持久性连接

客户端只要遇到一个引用对象就尽快发出请求
可理解为同个TCP内的并行
HTTP 1.1的默认选项

时间分析

  • 理想情况下,收到所有的引用对象只需耗时约1个RTT
  • 请求一个引用a个小web对象的小基本web对象需要耗时个RTT

TCP 三次握手
1.客户向服务器发送一个小TCP报文段;
2.服务器用一个小TCP报文段做出确认和响应;
3.客户向服务器返回确认和一个HTTP请求报文;
4.服务器返回相应HTML文件;

HTTP报文格式

HTTP规范
RFC 1945 , RFC 2616

用ASCII文本书写
HTTP协议有两类消息,请求消息(request)和响应消息(response)

HTTP 请求报文

请求行 HTTP请求报文的第一行

  • 方法字段 值可用为:GET POST HEAD PUT DELETE ; 绝大多数HTTP请求报文使用GET方法
  • URL字段 请求对象的标识
  • HTTP版本字段

方法

  • GET方法 请求一个对象
  • POST方法 提交表单
  • HEAD方法 类GET,但返回特殊的响应报文(无实体体),而非所请求的对象,常用于调试
  • PUT方法 用户上传对象到指定Web服务器的指定目录
  • DELETE方法 允许用户删除Web服务器上的对象

首部行 请求行后继的其它行,包含一些会话信息

空行 回车换行,分隔首部行和实体体

实体体(entity body)
GET方法下实体体为空
POST方法下实体体包含表单信息

HTTP 响应报文

状态行

  • 协议版本字段
  • 状态码
  • 状态信息

常见状态码

  • 200 OK
  • 301 Moved Permanently
  • 400 Bad Request
  • 404 Not Found
  • 505 HTTP Version Not Supported

首部行

空行

实体体
包含了所请求的对象

cookie

HTTP是无状态协议,但cookie技术允许服务器识别用户
cookie在无状态的HTTP之上建立一个用户会话层

参见 [RFC 6265]

cookie组件

  • HTTP响应报文中的cookie首部行
  • HTTP请求报文中的cookie首部行
  • 用户端系统中保留一个cookie文件,由浏览器管理
  • Web站点中的后台数据库

cookie技术的争议在于它可能泄露用户的隐私

Web缓存器(代理服务器)

代表原Web服务器来响应HTTP请求的网络实体

  • Web缓冲器的存储空间保存最近请求过的对象的副本
  • 可以配置用户浏览器,使得HTTP请求首先指向Web缓冲器

Web缓冲器通常由ISP购买并安装

条件GET方法

允许缓存器证实其缓存的副本是新的。
如果缓存器有web对象最新的版本,则初始服务器不需要向缓存器发送该web对象

在HTTP请求消息中声明所持有版本的日期
If-modified-since:

如果缓存的版本是最新的,则响应消息中不包含对象
HTTP/1.0 304 Not Modified

web缓存工作机制

  1. 浏览器向web缓存器请求web对象A,若该请求缓存未命中,则缓存器向存放A的初始服务器请求web对象A并缓存之,而后将对象A发送给浏览器。
    注意初始服务器给缓存器的响应报文中包括首部行:Last-Modified:date 1,该行说明了对象A上次被修改的时间。
  2. 一定时间后,浏览器再次向web缓存器请求web对象A,该请求缓存命中,且浏览器注意到A的上次修改时间为date 1。
    缓存器向初始服务器发送条件GET请求,该请求在对web对象A的普通请求基础上添加了首部行:If-Modified-Since:date 1。
  3. 初始服务器收到缓存器的条件GET请求,检查在date 1后该对象有无修改,若有修改,发送新的对象A并附上最近一次修改的时间。若未修改,发送带有 304 Not Modified 状态行的响应报文,且该报文实体体为空。
  4. 缓存器接收到初始服务器响应后,给浏览器发送相应对象A。

缓存机制优点

  1. web缓存器可大大减少对客户请求的响应时间,特别是当客户与初始服务器间的瓶颈带宽远低于客户与web缓存器间的瓶颈带宽时。
  2. 大大减少一个机构的接入链路到因特网的通信流量以降低费用
  3. 从整体上,大大减小因特网上的Web流量,实现有效的内容分发

内容分发网络(Content Distribution Network,CDN)
基于缓存器技术,CDN公司在因特网上安装许多地理上分散的缓存器,使得大流量本地化。
有共享CDN(Akamai,Limelight),专用CDN(谷歌,微软)

你可能感兴趣的:(计算机网络——应用层-Web&HTTP)