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 不适合游动用户(如:去网吧)

相关内容

热门资讯

实用的 PyYAML 使用技巧 AML 是一个被广泛使用的数据序列化和配置语言,作为一个开发者,总是不免...
C语言学习之路--指针篇 目录一、前言二、指针一、指针是什么1、指针的重要理解2、指针变量3、其他问题二、指针和指针类型1、指...
最牛,狂赚近70%! 最牛,狂... 【导读】前5月主动权益类基金平均净值增长率为2.43%,最牛业绩逼近70%中国基金报记者 方丽 曹雯...
电容笔和Apple penci... 跟Apple Pencil最主要不同,市场上大部分的电容笔都没有重力的压感࿰...
便携制氧机方案——PCBA/芯...   便携制氧机采用分子筛的吸附性能,通过物理原理,以无油压缩机为动力&#...
考研复试——离散数学 三年疫情都没有笔试,今年恢复,大概率会有笔试。 2023年3月19号&#...
分布式任务处理XXL-JOB 分布式任务处理XXL-JOB 什么是分布式任务调度 对一个视频的转码可以理解为一个任务的执行...
DirectX12(D3D12... 目录1、前言1.1、一些感慨1.2、运行效果展示1.3、示例简介1.4、示例操作说明1.5、本章内容...
小红书运营工具有哪些?新手运营...   很多人多多少少都会觉得小红书运营有一定的难度。但是其实在解决这些难题的时候,我们也...
Jetson NX 配置 py... Jetson NX 配置pytorch 参考文档 官方教程–还得是官方啊 参考博客1 参考博客...
c++ error:cross... 最近在写代码的时候,碰到了 crosses initialization of ......
XShell安装配置教程及云服... 目录一、 XShell的作用二、 下载XShell1.访问XShell官网,填写姓名和...
五年五任!道通科技任命90后董... 【高管动态】深圳市道通科技股份有限公司的董秘,也许是最不好干的岗位之一了。根据道通科技(600208...
C++初阶——前言 目录 1. 什么是C++ 2. C++的发展史 3. C+&...
每周股票复盘:西部矿业(601... 截至2025年5月30日收盘,西部矿业(601168)报收于15.8元,较上周的16.07元下跌1....
特朗普癫了?突然反咬中美贸易协... 知道他会反口,没想到这么快反口。不然为什么叫“疯王”呢?从昨晚到现在,特朗普又搞出三件大事:反咬中国...
DevOps是什么?DevOp... 目录专栏导读一、DevOps是什么?二、为什么会出现DevOps?1、容...
“石家庄富豪”要签50亿美元大... 频繁资产腾挪,收效如何? 作者 | 伍玥 编辑丨高岩 来源 | 野马财经 创新生物医药的出海热潮正在...
【零基础入门SpringBoo... 一、上手第一个程序 1、系统要求 此处以我自己使用的版本为例,在后期学习过程中遇到一...
马斯克黯然下课,临走前给特朗普... 黯然下课,马斯克要走了。5月底,马斯克正式宣布,即将卸任“政府效率部”部长职务,为其在特朗普政府的任...
Scala函数式编程 一、基本函数编程 在Scala 中函数式编程和面向对象编程完美融合在一起了 1 基础概念 1&#...
ChatGPT-4 前两天推出 ChatGPT-4,其创建者 OpenAI 展示了该机器人的增强功能——包...
UEFI 基础教程 (十三) ... 一、 修改UEFI UiApp源代码 修改 FrontPageStrings.uni 与 Front...
首进品牌超30%,餐饮选址新风... 总第4232期作者 |餐饮老板内参内参君逃离商场的餐饮人,正把店开到“高质价比商业体”“可能要撤店了...
94:二叉树的中序遍历 94:二叉树的中序遍历 总结 给定一个二叉树的根节点 root ,返...
03 - 初识Linux进程 ---- 整理自狄泰软件唐佐林老师课程 查看所有文章链接:(更新中&...
中年男人又一宝?新型护肝科技一... 凌晨一点的上海陆家嘴,写字楼里依然灯火通明。30岁互联网大厂产品经理张磊目不转睛盯着电脑屏幕,手机健...
零入门kubernetes网络... 《零入门kubernetes网络实战》视频专栏地址 https://www.ixigua.com/7...
“一部手机游景区”,带你玩转V... “一部手机游景区”已经不再是一个概念,现在各地纷纷大力发展VR智慧景区,...
Pytorch学习笔记--多G... 目录 1--前言 2--报错代码 3--解决方法 1--前言         最近在复现一篇 Pa...