DJ2-2 Web应用和HTTP协议
创始人
2025-05-29 20:17:25

目录

1. Web 和 HTTP 常用术语

2. HTTP 概述

3. TCP 和 HTTP

4. HTTP 连接

非持久 HTTP 连接

响应时间模型

持久 HTTP 连接

计算 TCP 和 RTT 举例

5. HTTP 请求报文格式

方法类型

上载表单的方法

6. HTTP 响应报文格式

HTTP 响应的状态码

7. Cookies:跟踪用户


1. Web 和 HTTP 常用术语

 

1)网页(Web页,或称文档)由许多对象组成。

2)对象就是文件,可以是 HTML 文件、JPEG 图像、Java applet、音频文件等。

HTML 文件是最基本的对象,是一个网页的框架。

3)多数网页由单个基本 HTML 文件和若干个所引用的对象构成。

4)每个对象被一个 URL(Uniform Resource Locator,统一资源定位符)寻址。

URL 是唯一的文件定位方式;网址(URL)指向的是 HTML 文件,HTML 文件里又有各个对象的 URL 。

5)举例 URL:

默认的端口号是 80,若想更改则可写成:主机名:端口号。

Web 服务器监听的是 80 端口。

主机名和 IP 地址之间是互为映射的关系。

路径名用于指示文件是在主机的哪个目录下。这并不是真实的 OS 管理目录,而是由服务器管理的一个相对路径。假设服务器设置的根目录为 C:\root\,则路径为 C:\root\item\IZ*ONE\22884952 。

2. HTTP 概述

HTTP:hypertext transfer protocol,超文本传输协议。

1)是 Web 的应用层协议

  • 浏览器一般都默认使用 http 协议

2)采用 client/server 模式

  • client:浏览器请求,接收,“解释显示” Web 对象。
  • server:Web 服务器响应请求,发送 Web 对象。

3)具体协议

  • HTTP 1.0: RFC 1945
  • HTTP 1.1: RFC 2616

3. TCP 和 HTTP

1)HTTP 使用 TCP 服务

Browser(HTTP client,HTTP 客户)和 Web 服务器(HTTP server,HTTP 服务器)

  1. 客户初始化一个与 HTTP 服务器 80 端口的 TCP 连接(创建套接字)
  2. HTTP 服务器接收来自客户的 TCP 连接请求,建立连接
  3. Browser 和 Web 服务器交换 HTTP 消息(应用层协议消息),包括 HTTP 请求和响应消息
  4. 最后结束(或叫关闭)TCP 连接

2)HTTP 是无状态协议

HTTP 服务器不维护客户先前的状态信息。

即,每一对请求和响应之间都是相互独立的。

维护状态的协议非常复杂!

1)必须维护过去历史(状态信息)。

2)如果 server/client 崩溃,它们各自的状态视图可能不一致,因此必须保持协调一致。

4. HTTP 连接

非持久 HTTP 连接持久 HTTP 连接
特点

每个 TCP 连接上只传送一个对象,下载多个对象需要建立多个 TCP 连接。

一个 TCP 连接上可以传送多个对象。

应用HTTP/1.0 使用非持久 HTTP 连接。HTTP/1.1 默认使用持久 HTTP 连接。

非持久 HTTP 连接

假设用户输入 URL:http://www.someSchool.edu/someDepartment/home.index

1a)HTTP 客户初始化 1 个与服务器主机 www.someSchool.edu 中 HTTP 服务器的 TCP 连接。

1b)www.someSchool.edu 服务器主机中的 HTTP 服务器在 80 端口监听来自 HTTP 客户的 TCP 连接请求:收到连接请求,接受,建立连接,通知客户。

在客户和服务器上分别有一个套接字与该 TCP 连接相关联。

2)HTTP 客户发送 1 个 HTTP 请求消息(request message)包含 URL 到自身 TCP 连接套接字。消息指出客户需要的 Web 对象:someDepartment/home.index 。

3)HTTP 服务器接收请求消息,产生 1 个响应消息(response message)包含被请求对象,并发送这个消息到自身 TCP 连接套接字。

4)HTTP 服务器结束 TCP 连接。(但是直到 TCP 确认客户已经完整地收到响应报文为止,它才会实际中断连接。)

5)HTTP 客户接收包含 HTML 文件的响应消息:显示 HTML,解析 HTML 文件,找出 10 个引用 JPEG 对象。

6)分别对 10 个引用 JPEG 对象重复步骤 1~5 。即,立即建立 10 个 TCP 连接,发送请求,等待响应。这是一个并发的过程。

响应时间模型

定义往返时间 RTT(Round-Trip Time):1 个小分组从客户主机到服务器再到客户主机所花费的时间。

响应时间 total = 2RTT + transmit time:

  1. 1 个 RTT 用于建立 TCP 连接
  2. 1 个 RTT 用于 HTTP 请求/响应消息的交互
  3. HTML 文件传输时间

我们暂且忽略文件分组的大小,即以文件的第一个 bit 的到达时刻为传输完毕时刻。那么,从建立 TCP 连接到获得包含 HTML 文件的响应信息,一共需要:2 个 RTT 。

随后,我们需要分别对 10 个引用 JPEG 对象重复步骤 1~5 :建立 TCP 连接 + HTTP 请求/响应。由于是并发执行的,因此需要花费时间:2 个 RTT 。

最终,我们一共需要花费时间:4 个 RTT 。

持久 HTTP 连接

  • 服务器发送响应消息后保持连接。
  • 同一客户/服务器的后续 HTTP 消息继续在该连接上传送。

不带流水线的持久 HTTP 连接

  • 客户收到上一个请求消息的响应消息后才发出新的请求消息。
  • 每个引用对象经历 1 个 RTT。

带流水线的持久 HTTP 连接

  • HTTP/1.1 默认使用。
  • 客户只要遇到引用对象就发送请求消息。
  • 所有引用对象只经历 1 个 RTT 。

计算 TCP 和 RTT 举例

假设需要 1 个 HTML + 5 个 OBJs,且均在一个服务器上。

需要的 TCP 个数需要的 RTT 个数
非持久 HTTP 连接64
不带流水线的持久 HTTP 连接17
带流水线的持久 HTTP 连接13

假设需要 1 个 HTML + 3 个 OBJs,且均不在一个服务器上。

需要的 TCP 个数需要的 RTT 个数
非持久 HTTP 连接44
不带流水线的持久 HTTP 连接44
带流水线的持久 HTTP 连接44

5. HTTP 请求报文格式

1)有两类 HTTP 报文:请求报文(request),响应报文(response)

2)HTTP 请求报文采用 ASCII 文本,方便人们阅读。

GET /somedir/page.html HTTP/1.1
Host: www.someschool.edu 
User-agent: Mozilla/4.0      //该代理类型的对象版本
Connection: Close            //不使用持久连接
Accept-language:zh-cn        //中文版本(额外的 回车换行)

格式如下:

设计特点:

  • 以行为单位,回车和换行为终止标志
  • 请求行为 1 行,首部行为 n 行
  • 空行为 1 行,实现了变长的首部行的终止

cr 为回车,lf 为换行。

方法类型

HTTP/1.0HTTP/1.1
  • GET
  • POST
  • HEAD:服务器收到请求时,用 HTTP 报文进行响应,但不返回请求对象
  • GET,POST,HEAD
  • PUT:文件在实体主体中被上载到 URL 字段指定的路径
  • DELETE:删除 URL 字段指定的文件

上载表单的方法

1)Post 方法

网页时常包含表单输入

针对大量的表单输入

输入值在请求报文的实体主体中被上载到服务器

2)URL 方法

使用 GET 方法

针对少量的表单输入

表单(各字段)输入值作为 URL 请求行的字段被上载:

www.somesite.com/animalsearch?monkeys&banana

6. HTTP 响应报文格式

HTTP/1.1 200 OK
Connection:close
Date: Sat, 06 Aug 2011 12:00:15 GMT    //服务器产生响应报文的时间
Server: Apache/1.3.0 (Unix)            //Web服务引擎
Last-Modified: Thu, 22 Jun 2011 ...     //文件最后被修改时间
Content-Length: 6821 
Content-Type: text/html                //浏览器据此解析数据内容data data data data data ...

格式如下:

HTTP 响应的状态码

位于服务器响应客户的响应消息的第一行,几个常见的样本状态码如下。

状态码含义
200 OK

请求成功,所请求信息在响应消息中返回。

301 Moved Permanently

所请求的对象已永久迁移,新的 URL 在本响应消息的(location:)头部指出。

400 Bad Request

该请求不能被服务器解读。

404 Not Found

服务器上不存在所请求文档。

505 HTTP Version Not Supported

7. Cookies:跟踪用户

让无状态技术 HTTP 拥有有状态能力。

1)味噌丸总是使用同一台 PC 访问 Internet;

2)TA 首次访问 1 个电子商务网站;

3)当 TA 最初发出 HTTP 请求访问该站点时,该站点为 TA 创建一个唯一的 ID,并在后端数据库创建一个响应于该 ID 的表项。

key word:唯一性标识;自我声明。

Cookies 的 4  个重要方面

  1. Cookie 头部行在 HTTP 响应消息中
  2. Cookie 头部行在 HTTP 请求消息中
  3. Cookie 文件保存在用户主机中并被用户浏览器管理
  4. Cookie 也保存在 Web 站点的后端数据库

Cookies 和隐私

  • Cookies 允许网站更加了解你
  • 你可以提供名字和 e-mail 给网站
  • 广告公司通过网站获得信息
  • Cookies 不适合游动用户(如:去网吧)

相关内容

热门资讯

白俄罗斯向乌克兰移交114人 当地时间13日,白俄罗斯向乌克兰移交114人。乌克兰国防部情报总局局长布达诺夫到场,迎接被移交人员。...
高峰对话:Agent能走多快,... 要让Agent成为工作助手,需要破解哪些环节?文|《中国企业家》记者 闫俊文编辑|何伊凡见习编辑|李...
马竞2:1险胜瓦伦西亚!主场1... 在西甲联赛第16轮的焦点对决中,马德里竞技坐镇主场迎战瓦伦西亚。最终,凭借科克和格列兹曼的进球,马竞...
如何重构新消费?5位消费公司掌... 好产品才能赢得消费者的心。文|《中国企业家》记者 胡楠楠编辑|米娜图片来源|中企图库12月6~7日,...
12亿存款“失踪”案,最新进展 昨天(12月12日),据证监会发布,经查,浙江优策投资管理有限公司(以下简称优策投资)及实际控制人存...