Advertisement

HTTP相关知识点集合

阅读量:

HTTP介绍

HTTP是用于实现网络通信的一种标准协议。
网页中的非文字元素包括图片、超链接等。
存储为电子文件的信息会被解码成二进制数据包,并通过媒体(如同轴电缆)将电子文件的信息传递至接收端设备。

综上所述:HTTP 协议是网络连接中用于传输各种媒体文件和超文本信息的一个约定标准。

HTTP优缺点

特点:

  1. 具有高度的灵活性和适应性。该系统架构主要由头部字段(Header)和正文部分(Body)构成,在这一架构下,HTTP协议确实允许通过统一的方式实现对各种数据类型的传输,并且正在传输的具体数据类型则由Content-Type头字段加以明确标识。
  2. 采用客户端-服务器端交互机制。
  3. 确保数据传输的可靠性,在基于TCP/IP协议族的基础上实现了对网络中断的自动检测与恢复。
  4. 采用无状态设计以减少网络开销,并特别适用于在线直播等实时性要求较高的应用场景中

缺点:
1、无持久性 。在某些应用场景中需要存储数据信息时(例如在线购物网站),现有方案无法实现这一点。
2、明码传输 。协议中的报文(具体而言是header字段)采用的是明码形式而非压缩编码方式。
3、在采用HTTP长时间连接机制时会出现队列阻塞现象:当其中一个请求长时间处理完成后(例如发起一个大文件上传),其余等待连接的请求就会处于等待处理的状态。

解决队头阻塞:

对于一个域名而言,在允许分配多个长连接的情况下

2、域名分片
基于名称原则,在一个主域名下划分多个二级域名,并使它们最终指向同一台服务器。这种方式能够显著提高并行处理的任务数量,并有效缓解队列头部阻塞问题。例如,在baidu.com下设置如Day1.baidu.com、Day2.baidu.com等多级子域名就能实现这一目标。

HTTP请求方式

HTTP 1.1 规定了以下几种常见的HTTP方法:
GET 用于获取特定资源的数据获取方式;
HEAD 用来返回服务器关于资源的基本描述;
POST 用来提交应用程序请求所需的数据;
PUT 实现了对目标资源内容的具体更新操作;
DELETE 完成了对指定资源内容的删除操作;
CONNECT 创建了一个专门通道以实现远程连接,并在代理服务器上建立了一个虚拟通道;
OPTIONS 提供了多种可用的操作指令,并在跨域通信场景中使用;
TRACE 记录了整个通信过程中的各个交互步骤。

GET和POST区别:

从缓存机制的角度来看,在处理GET请求时后端浏览器会主动保存响应内容;而对于POST请求则默认情况下不会进行自动保存,默认行为是与服务器交互以获取响应信息。在参数传递方式上,则呈现出明显的区别:GET方法将参数嵌入URL路径中便于后续解析;而POST方法则将参数以数据体形式附加在HTTP报文中实现更安全的数据传输方式。就字符编码层面而言,则显示出显著差异:GET操作仅支持传统的ASCII编码;而POST操作则支持更为复杂的字符集编码方案,并且对于数据类型的限制更为宽松。此外在处理多次请求的一致性方面也存在明显差异:GET方法的操作具有强一致性特征;而POST操作不具备这种特性其一致性依赖于客户端重传机制来保证数据完整性。

在应用层面考虑,GET主要用于无副作用作用且支持重复请求但结果一致的场景,如搜索关键字。而POST则具有副作用且不适用于幂等场景的情形,在实际应用中通常用于涉及状态修改的操作如注册、登录等操作。

options作用:

1、OPTIONS 查询类似于HEAD查询,在客户端可用来评估服务器性能。
2、此方法将向服务器提交一个OPTIONS请求以获取该资源支持的所有HTTP方法信息,并采用星号代替资源名;通过这种方式可测试服务器功能是否正常运行。
3、在跨域资源共享时, 当处理复杂请求时, web应用将使用OPTIONS方法发起嗅探查询, 以便确认是否存在针对特定资源的访问权限。

HTTP状态码

1xx:标识当前处于协议通信阶段,并尚未完成请求流程
2xx:标志位设置为成功状态
3xx:标识当前正处于重定向流程中,请重新发起请求
4xx:数据包内容出现传输错误(客户端问题)
5xx:服务器端发生了故障或异常情况

常用状态码:

  1. 协议转换操作将从 HTTP 协议转换为 WebSocket 协议进行
  2. 成功的状态指示会返回相应的响应
  3. 永久性重定向操作会将浏览器引导至缓存数据
  4. 临时性重定向操作不会触发缓存机制
  5. 缓存协商状态指示着缓存命中状态
  6. 服务器返回禁止访问的状态代码
  7. 资源不存在的状态指示着资源未找到的状态
  8. 返回一般性的错误信息表示存在请求错误
  9. 表示服务器端出现故障或无法执行请求的状态代码
  10. 表示当前服务过于忙碌而无法处理更多请求的状态代码

URL

组成

`
该系统支持多种协议连接(如http、https等),连接至特定的主机域名(通过DNS映射至对应的IP地址)。系统允许指定访问资源的路径(通常以端口号前缀标识),并可附带查询参数供服务器解析处理。请求中的锚点标记则用于定位响应的具体位置。

实例:https://www.baidu.com/s?tn=baidu&wd=TianTian#heading
UTF-8编码:仅限于ASCII字符集来进行网络传输。(天天 – %CC%EC%CC%EC)

HTTP版本

HTTP1.1

http1.1是目前最常用的HTTP协议版本。
引入了持久连接功能,默认情况下TCP连接保持开放状态,并无需声明Connection: keep-alive。
增加了管道机制功能,在同一TCP连接中可同时发送多个请求。
新增缓存控制头信息以管理缓存失效情况。
支持断点续传功能,具体实现方法是通过Range字段在请求头中进行配置。
采用了虚拟网络架构,在同一台物理服务器上可部署多个虚拟主机,并共享相同的IP地址。
新增了一系列方法:PUT、PATCH、OPTIONS和DELETE。

HTTP2.0

1、基于二进制的数据分组被称为"帧":其中包含头信息字段(Header)和正文字段(Payload)。
2、头部压缩机制采用HPACK算法对HTTP/2流量进行编码。(传输索引)
3、多路复用技术在一个连接中支持客户端与浏览器同时发起请求并返回响应,无需逐一对应处理,从而有效避免了队列首部阻塞问题。
4、服务器推送机制允许服务器主动向客户端发送资源,无需等待客户端发起请求即可完成传输过程。
5、请求优先级设置可以根据实际需求设定不同数据包的传输优先级。

HTTP报文

HTTP 协议主要包括三个主要组成部分:

  1. 起始字段用于描述请求或响应的基本信息;
  2. 头部信息采用 key-value 格式进行详细阐述;
  3. 传输的具体信息包括但不限于文本、图片和视频等二进制形式。

最前端行及其字段标题并分别作为请求头或响应头被称为Header;消息正文也被称为实体通常简称为body。
每次发送的报文都必须包含一个 Header部分但实体部分不是必需的。
在 Header部分与实体之间必须留一个空白行(通常由CRLF分隔)。

起始行由三个字段组成:方法、URL和 HTTP 版本。

在这里插入图片描述

HTTP标头

HTTP 1.1 的标头主要分为四种,通用标头、实体标头、请求标头、响应标头。

通用标头

双方在处理请求与响应时都会使用的头部信息
Cache-Control 头用于指定缓存
Connection 头负责管理连接状态,并自 HTTP 1.1 标准起始时默认采用持久性连接
Date 头记录了生成该报文的时间戳
Pragma 头指示了缓存相关指令
Trailer 头提供了报文末尾部分的头部信息概览
Transfer-Encoding 头决定了报文中主体内容的具体编码格式设置

实体标头

允许字段: 表示资源可支持http请求的方法
内容类型字段: 用于标识实体媒体类型的字段
内容编码格式字段: 用于指定实体编码格式的信息
内容长度字段: 用于标识实体大小(以字节为单位)
内容类型扩展字段: 扩展版本中使用的标识实体媒体类型的补充信息
内容MD5值字段: 用于生成实体报文摘要的唯一值
位置范围描述字段: 描述实体主体位置范围的信息
最后修改时间字段: 表示资源最后修改时间的信息
过期时间字段: 表示实体主体过期时间的信息

请求标头

客户端向服务器发送请求的报文时使用的首部
Accept: 客户端或者代理能够处理的媒体类型
Accept-Encoding: 优先可处理的编码格式
Accept-Language: 优先可处理的自然语言
Accept-Charset: 优先可以处理的字符集
If-Match: 比较实体标记(ETage)
If-None-Match: 比较实体标记(ETage)与 If-Match相反
If-Modified-Since: 比较资源更新时间(Last-Modified)
If-Unmodified-Since:比较资源更新时间(Last-Modified),与 If-Modified-Since相反
If-Rnages: 资源未更新时发送实体byte的范围请求
Range: 实体的字节范围请求
Authorization: web的认证信息
Proxy-Authorization: 代理服务器要求web认证信息
Host: 请求资源所在服务器
From: 用户的邮箱地址
User-Agent: 客户端程序信息
Max-Forwrads: 最大的逐跳次数
TE :传输编码的优先级
Referer: 请求原始放的url
Expect: 期待服务器的特定行为

响应标头

从服务器向客户端响应时使用的字段如下所述

HTTP相关组件

网络模型

网络架构师通过层级结构(layer)来安排协议,在层次模型中各层级均向其上级提供(service),即通常所说的(service model)。在各层级中的所有协议统称为(protocol stack)。而互联网的核心组件则由五个关键组成部分构成:物理层、接口媒体访问控制层、网络传输控制接口层、数据传输传输服务接口以及面向应用的服务接口。

在这里插入图片描述

应用层

作为网络应用程序和服务存儲的层次结构基础的应用层面包含了多種通信協議。
互联网的应用层次中包含多种通信协议。
比如我们在学习Web技术时会用到HTTP。
如邮件传输使用的是SMTP协议而文件共享则采用FTP。
此外用于解析域名地址的DNS(Domain Name System)协议也是其中之一。
不同类型的网络实体间通过应用层进行数据交互。
在包含M个节点的网络中执行的时间复杂度达到O(M^2)级别。
不同实体间的通信过程涉及将数据报文发送至对方。
我们将这些位于应用层面的数据块统称为报文(Message)。

运输层

互联网的传输层在应用程序断点之间传递的应用程序报文,在这一层主要有两种不同的通信协议:TCPUDP 。无论是哪一种协议都能实现这一功能,并且都具备相应的通信特性。然而它们之间存在显著的区别。

网络层

互联网的网络层次负责管理数据分组(data unit)从一个主机转移到另一个主机。在这一过程中, 网络层次体系中的一个关键性作用是由IP(Internet Protocol)协议承担, 所有具备这一层次功能的因特网组件都需要依赖于该类协议, 其中, 除了核心作用之外, 网络层次体系还包括了一类特殊的传输介质和其他相关路径选择机制, 这使得整个体系通常被简称为IP层级, 这一命名方式充分体现了其关键作用

链路层

我们现在已经建立了应用程序通信所需的基础协议。
开发出了专门负责传输数据的应用程序通信协议。
那么如何实现可靠的端到端数据传输呢?
为了确保传输过程中的分组能够准确到达目标节点。
网络层依赖于链路层来完成传输任务。
链路层的具体实例包括以太网、WiFi 和通过电缆接入的DOCSIS技术。
在这种情况下,
我们将被处理的数据分组称为帧(frame)。

物理层

虽然链路层的主要职责是将数据帧从一个端系统传输至另一个端系统,在数据传输过程中使用的物理层面则负责将数据帧中的每一个二进制位从一个网络设备传输至相邻设备。尽管如此,在数据传输过程中使用的物理层面协议依然会采用链路层面所定义的规则和标准;这些协议的设计与实际使用的物理传输介质密切相关;例如,在以太网中就存在多种不同的物理层面协议:一种基于双绞铜线的工作方案;一种基于同轴电缆的工作方案;还有一种基于光纤通信的技术

OSI模型

计算网络协议模型并非唯一的一种层次结构,并非国际标准化组织规定为采用7层架构

在这里插入图片描述

相对于上述网络模型而言,OSI 多出了 表示层 和 会话层。
表示层主要包含 数据压缩、 数据加密以及 数据描述功能。通过 数据描述技术的应用,在程序层面无需操心 计算机内部存储格式。
会话层负责实现 数据交换中的定界与同步操作,并涵盖 建立检查点及恢复方案的具体流程。

浏览器

网络传输控制协议(HTTP)是浏览器的主要通信工具。按照官方定义名称的说法, 按照官方定义名称的说法, 按照官方定义名称的说法, 按照官方定义名称的说法, 按照官方定义名称的说法, 按照官方定义名称的说法, 按照官方定义名称的说法, 按照官方定义名称的说法, 按照官方定义名称的说法, 按照官方定义名称的说法

当用户在地址栏输入URL字符串(亦称网络地址),系统会自动向DNS查询该IP地址。随后当发送HTTP请求时,在接收端系统会自动解析并发送相应的HTTP响应内容至目标服务器。这一过程体现了HTTP协议中客户端与服务器之间的交互机制。

Web服务器

Web 服务器的正式名称被称为Web Server,在讨论HTTP请求时提到浏览器作为HTTP请求的发起方后可知,在这种情境下Web 服务器则扮演了HTTP请求响应的角色,并通过提供网页内容和存储资源文件来满足用户的浏览需求以及数据下载的需求;进一步而言,Web 服务器不仅能够提供网页资源给全球范围内的浏览器访问还能够上传数据文件至远程存储位置以便于其他系统进行下载操作;目前而言Apache、Nginx和IIS依然是应用最为广泛的主流Web服务器系统

CDN

CDN的全称是Content Delivery Network(CDN),即内容分发网络(C DN),它采用HTTP协议中的缓存技术和代理功能替代源网站对客户端请求做出响应。作为互联网基础设施的一部分,在现有网络架构之上构建内容分发网络系统能够有效缓解节点资源受限的问题。通过构建基于边缘服务器的内容存储与分发系统,在本地完成数据缓存并实现按需分发至终端用户。基于内容缓存技术开发的一系列关键算法不仅提升了用户体验还显著提升了网络吞吐量

改写说明

WAF

WAF 是一种 Web 应用防护系统(Web Application Firewall, 简称 WAF),它是一种专门通过执行一系列针对 HTTP/HTTPS 的安全策略来为 Web 应用提供全方位保护的产品。这种产品主要部署于应用程序层面上,并且其核心功能是监测并拦截恶意流量。其主要功能是作为防护 Web 应用的安全技术工具。WAF 通常部署于 Web 服务器之前的架构中,并且能够有效阻止常见的 SQL 注入攻击、跨站脚本攻击等恶意请求。一个较为流行的开源项目是 ModSecurity 框架。

WebService

该技术可被视作Web应用程序的基础,并且其特点在于支持不同编程语言和操作系统的跨平台通信。
W3C 为应用服务开发规范制定了统一标准,并通过定义WSDL文件来描述服务接口。
该方法通常结合客户端-服务器主从模式,并通过HTTP协议传输XML或SOAP消息类型。
其采用基于Web(HTTP)的技术构建服务架构,并且可以在内部网络环境中运行,并在外网进行安全部署。

HTML

HTML 被称为超文本标记语言, 是一种标识性的技术. 它包含了一系列的标签, 通过这些标签实现了网络上文档格式的一致性, 从而将分散的互联网资源整合成为一个有逻辑的整体. 一组 HTML 文本由一组 HTML 命令构成的文字描述型文档, 每个 HTML 命令能够指示文字内容以及图形、动画、声音等元素.

Web页面构成

Web页面亦称文档,在网络环境中由一个个独立的对象构成。每个对象(Object)仅仅代表了一个数据载体,在网络空间中可通过统一资源定位符(URL)实现定位和访问。其中每个对象通常包含一个基础的网页内容以及若干相关的资源链接。

HTTP相关协议

尽管 HTTP 被归类于应用层协议但它仍需其他层次协调工作以实现信息交换

尽管 HTTP 被归类于应用层协议 但它仍需其他层次协调工作以实现信息交换

The full name of the TCP protocol is the abbreviation for Transmission Control Protocol, signifying a control network protocol. It is employed by HTTP due to its dependability in ensuring data integrity. The reason for this reliance lies in the fact that the TCP protocol is designed to provide a reliable communication channel, thereby maintaining data consistency.

国际数据传输协议(Internet Protocol)通常被简称为IP;该协议的主要功能在于确保通信双方能够正确寻址;通过分配唯一的IP地址标签;该协议为互联网上的每一台设备提供了独特的身份识别;在计算机网络环境中进行数据交换时;参与者必须事先了解彼此的IP地址信息

DNS

遵循将 IP 地址转换为便于人类记忆的协议的规则的是 DNS 协议。
DNS 的全称被称为‘域名系统’(Domain Name System, 缩写:DNS)。它不仅作为一个连接域名与 IP 地址的重要桥梁,并且作为一个高效的分布式数据库运行着复杂的映射逻辑,在这个过程中使得访问互联网更加便捷。

DNS如何工作

DNS 协议实现了主机名与 IP 地址之间的映射服务, 即我们常说的域名系统。它属于应用层协议, 一般运行在 UDP 协议之上, 采用 53 端口进行通信。

在这里插入图片描述

一般向本地DNS服务器发送请求是递归查询的

本地 DNS 服务器向其他域名服务器请求的过程是迭代查询的过程

在这里插入图片描述

递归查询和迭代查询

递归查询即为一种机制,在此过程中一旦收到一个查询请求后端便会转而向下一个层次的域名服务器发起请求直至最终返回结果。采用这种机制后用户仅需发送一个请求即可完成所有相关查询

迭代查询是指在执行完一次查询请求后,在域名服务器处获得单次搜索结果的过程。后续级别的搜索则需用户自行发起,在实际操作中需执行多个独立的网络请求以完成完整的信息检索流程

通常情况下,该本地服务器执行的是递归查询操作。然而,在请求其他域名服务器时所遵循的过程则是遵循迭代查询模式。

DNS缓存

在每次请求中,在某个DNS服务器接收到一个DNS回答时,在其响应的数据被缓存至本地缓存区域之前就已经被生成。每个返回的资源记录中的 TTL字段表示该记录的有效期。

DNS实现负载平衡

DNS 可以用于在备用服务器上实现负载均衡。大型网站通常使用多台服务器提供服务,因此一个域名可能映射到多个备用服务器地址。

当用户提交网站名称的DNS查询请求时,
DNS 服务器会响应该域名对应的服务器IP地址集合。
系统会对返回的结果依次遍历,并将用户的请求按优先级处理。
这样就能使用户的请求均匀地分配到各个不同的服务器上从而实现负载均衡。

总结
DNS域名系统作为应用层协议基于UDP协议运行端口53。
在查询过程中本地的递归查询会依次经过浏览器缓存、本地hosts文件、本地DNS解析器、本地DNS服务器以及最终请求其他域名服务器完成后续步骤。
通常情况下递归查询只需发送一次请求即可完成任务而迭代过程则需要用户多次提交请求以完成查找。

DNS使用UDP协议得原因

DNS选择UDP协议作为传输层协议的主要原因以防止在使用TCP协议过程中产生的连接延迟。

DNS选择UDP协议作为传输层协议的主要原因以防止在使用TCP协议过程中产生的连接延迟。

URI/URL

你的地址格式应当符合URI的标准。URI的官方缩写形式为(Uniform Resource Identifier),其中文译名为统一资源标识符。通过这一标识符就可以唯一确定网络上的各种资源。

URL 的别称是(Uniform Resource Locator),中文名称是统一资源定位符,也就是我们通常所说的网址。

HTTPS

HTTP通常是明文传输的,并容易被攻击者窃取关键信息。鉴于此,HTTPS应运而生。在功能上与传统的HTTP相比,在这一过程中采用了数据加密和身份认证等技术手段以确保数据的安全性。因此,在传统的HTTP基础上附加了一个SSL层

HTTP缓存

HTTP 缓存包含两种类型:强缓存与协商缓存。它们的主要作用在于提高资源访问速度并改善用户体验感受;同时能够降低网络通信开销,并减轻服务器负载压力。

在这里插入图片描述

可以使用Node.js的Express框架进行验证

强缓存

无需发起至服务器端的请求,在处理网络事务时可以直接从本地缓存中读取数据。在Chrome网络中返回HTTP状态码200表示资源可用且连接正常。而在Chrome浏览器中,默认情况下资源会被保存至本地存储空间中以供后续访问。其有效性主要受Expire时间、Cache-Control策略以及Pragma指令三个Header属性的影响。

Expires

expires 值是一个 HTTP 日期数值,在浏览器发起请求时会根据 system 时间和 expires 值进行比较判断。当 system 时间大于 expires 值时,则缓存会失效。由于与 system 时间的比较关系,在 system 时间与 server 时间不一致的情况下,则会导致缓存的有效期计算出现偏差。expires 在所有 header 属性中的优先等级最低。

Cache-Control

Cache-Control 是 HTTP/1.1 中新增的属性,在请求头和响应头中都可以使用,常用的属性值如有:
max-age:单位是秒,缓存时间计算的方式是距离发起的时间的秒数,超过间隔的秒数缓存失效
no-cache:不使用强缓存,需要与服务器验证缓存是否新鲜
no-store:禁止使用缓存(包括协商缓存),每次都向服务器请求最新的资源
private:专用于个人的缓存,中间代理、CDN 等不能缓存此响应
public:响应可以被中间代理、CDN 等缓存
must-revalidate:在缓存过期前可以使用,过期后必须向服务器验证

Pragma

Pragma 唯一设置的字段值是 no-cache ,其效果等同于 Cache-Control 头中的 no-cache 设置,在技术规范中被定义为避免使用强式缓存机制,并要求服务器必须能够验证缓存的有效性。该字段处于三个主要头部字段中的最高优先级位置。

协商缓存

当浏览器触发强缓存失效机制或配置了不走强缓存策略时,并且发送了If-Modified-Since或If-None-Match头部参数时(即请求头中有设置相应的头部参数),服务器将提交至服务端进行目标资源是否存在于本地缓存中的查询验证操作。(此处可选)如果查询结果表明目标资源已存在于本地快照中,则服务器将返回带有304Not Modified状态码的响应。(注:该状态码表示无需重送资源)随后服务器将根据资源的具体情况更新浏览器本地快照副本(即加载浏览器缓存),并在响应头字段中标识Last-Modified或ETag属性字段的存在。

ETag

服务器通过计算文件内容生成唯一的ETag标识。例如基于哈希算法生成唯一标识符,在ETag内容发生变化时相应地进行更新并将响应头中的该字段发送给浏览器。
当浏览器接收到ETag值时,在后续请求中将其作为If-None-Match字段的值提供给服务器。

当服务器接收到「If-None-Match」时会与该资源的「ETag」进行比较:若两者一致,则会立即发送HTTP 304 Not Modified头信息以通知客户端缓存已可用;否则会发送包含新响应数据块的新资源,并其处理流程与常规HTTP响应机制一致

Last-Modified

这个字段代表最后修改时间。
当浏览器首次向服务器发出请求时,在响应头部分会包含该字段。
当浏览器再次访问时,在请求头部分会包含If-Modified-Since字段。
其值即为服务器所传递的最后修改时间。

服务器接收到了请求头中的If-Modified-Since字段后,在实际操作中会对该服务器存储该资源的最新修改时间进行比较:若该字段的值小于资源的最后修改时间,则表明需要重新发送响应内容;否则则会回复304状态码,并通知客户端缓存已有效。

两者对比

从性能角度来看,Last-Modified超越了ETag。具体而言,在更新频率和响应速度上表现更为突出。从技术实现的角度来看,在更新频率和响应速度上表现更为突出。在技术实现方面,则需通过计算文件的MD5哈希值来确定其有效性。

在精度方面而言,ETag的表现明显优于Last-Modified。具体来说,在某些特定情况下(如未更改内容时),Last-Modified可能无法准确反映资源状态的变化。例如:当仅修改了文件内容而不改变其核心信息时。需要注意的是,在某些特定情况下(如未更改内容时),Last-Modifyied可能无法准确反映资源状态的变化。如果文件在短时间内被频繁更新多次,则通常会导致Last-Modifyied记录不及时,并未能正确反映实际修改情况。

最后,如果两种方式都支持的话,服务器会优先考虑ETag。

缓存位置

浏览器缓存的位置的话,可以分为四种,优先级从高到低排列分别

Service Worker

这种应用场景类似于Progressive Web Apps(PWA),其灵感来源于Web Workers的技术架构。因为它们与传统的Web应用程序不同,在于它们脱离了浏览器的窗体环境而独立运行。尽管如此却无法直接控制Document Object Model(DOM)。它们能够实现的功能包括离线缓存、消息通知以及网络代理功能其中离线缓存功能对应于Service Worker中的Cache机制

Memory Cache

This refers to memory caching, which stands out for its efficiency, while excelling in duration as well. Once the rendering process concludes, memory caching effectively ceases to exist.

Disk Cache

位于硬盘上的缓存块,在访问速度方面明显低于内存缓存。其主要优点体现在数据存储量和持续时间长度上。

Push Cache

内容分发网络(CDN),也可视为浏览器中最后一道防线吧?它也是一种基于HTTP/2协议的优化手段。具体的机制细节我也不是很清楚,感兴趣的读者可以进一步了解。

Disk Cache VS Memory Cache

两者的比较通常是核心策略。
当内容使用率较高时,较大的JS或CSS文件会存储在磁盘上。
较大的JavaScript或CSS文件会被存储在磁盘中;而较小规模的则会被存储在内存中。

总结
1、首先检查Cache-Control, 尝鲜,看强缓存是否可用
2、如果可用的话,直接使用
3、否则进入协商缓存,发送HTTP请求,服务器通过请求头中的If-Modified-Since或者If-None-Match字段检查资源是否更新
4、资源更新,返回资源和200状态码。
5、否则,返回304,直接告诉浏览器直接从缓存中去资源。

HTTPS

什么是HTTPS
HTTPS是在HTTP上建立SSL加密层,并对传输数据进行加密,是HTTP协议的安全版。现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。
HTTPS主要作用是:
(1)对数据进行加密,并建立一个信息安全通道,来保证传输过程中的数据安全;
(2)对网站服务器进行真实身份认证。
我们经常会在Web的登录页面和购物结算界面等使用HTTPS通信。使用HTTPS通信时,不再用http://,而是改用https://。另外,当浏览器访问HTTPS通信有效的Web网站时,浏览器的地址栏内会出现一个带锁的标记。对HTTPS的显示方式会因浏览器的不同而有所改变。

在这里插入图片描述

HTTPS的原由

在HTTP协议中可能存在信息泄露或身份认证不完善等问题,在这种情况下可能会出现数据被未经授权的窃取或伪造的情况。HTTPS通信机制能够有效地抵御这些风险;HTTP问题: 1. 使用明文传输的数据内容可能会被未经授权的第三方截获;2. 报文的完整性和真实性难以确认从而可能导致数据被恶意篡改;3. 缺乏对通信双方身份的有效验证使得系统容易遭受身份假冒攻击

HTTPS优势:
在HTTPS协议中设计的安全性方面,在线交易和数据传输过程中采用了严格的安全措施。为了确保信息传输过程中的可靠性和准确性,在HTTPS协议中实施了数据完整性校验机制。此外,HTTPS通过抗伪造技术确保了双方的身份信息不会被third-party任意篡改或冒充。

HTTPS解决HTTP的问题

HTTPS并非是应用层的一种新协议。只是其中通过将HTTP通信接口的部分采用SSL和TLS协议进行加密传输来实现。

在这里插入图片描述

HTTP加上加密处理和认证以及完整性保护后即是HTTPS。

在这里插入图片描述

HTTPS协议的主要功能基本上都高度依赖于TLS/SSL协议;而TLS/SSL协议的功能实现则主要基于三个关键算法:哈希函数、对称加密以及非对称加密技术。其中通过非对称加密实现身份识别与密钥交换功能;而使用协商确定的密钥进行数据加密操作;最后则通过哈希函数来验证信息完整性。

在这里插入图片描述

解决HTTP问题
1、为确保通信内容的安全性——采用加密技术
方法1:使用对称加密算法
该种方式采用一种称为对称密码体制的技术进行数据处理,在该过程中系统会生成一组共享的密钥,并将这些密钥用于数据的加解密操作。只有持有该特定密钥的人才能解密信息,并且任何拥有该密钥的人都具备解密能力。

方法2:非对称加密 公开密钥加密基于一对不同的非对称秘钥其中一把被称为私有秘钥另一把则称为公开秘键但私有秘键必须保密

第三种方案采用混合加密策略(如图2所示)。在双方密钥交换过程中(即初次消息传递阶段),我们采用了非对称加密技术来完成关键数据的安全传递;随后,在信息传递过程中,则采用了高效的对称加密算法以保障通信效率与安全性)。具体而言,在发送方完成初始数据传输时(即发送明文信息),我们需要通过公钥算法处理生成共享秘密键;接收方则通过私钥解密获取共享秘密键,并在此基础上展开后续的安全通信操作。(注:此处"公私钥匙"为标准术语)

2、解决报文可能遭篡改问题——数字签名

3、解决通信方身份可能被伪装的问题——数字证书

HTTPS工作流程

在这里插入图片描述

HTTP和HTTPS区别

HTTP 属于明码制传输协议;基于 SSL 加密技术的 HTTP 协议构建而成,并支持加密传输和身份认证功能;相比传统 HTTP 协议具有更高的安全性。

在这里插入图片描述

HTTPS比HTTP更为安全,在提升搜索引擎友好性的同时也有助于SEO优化。常见的搜索引擎如谷歌、百度等都会优先索引并推荐包含HTTPS链接的网页。为了确保数据传输的安全性以及提升用户体验的友好度,HTTPS必须使用SSL证书来进行身份验证和数据加密。通常采用的传输层协议分别为443和80,其中443用于HTTPS,而80则用于传统的HTTP服务连接。位于网络协议栈的传输层,'https'协议能够提供更快的数据传输速度和更高的可靠性保障.在浏览器中安装SSL证书后,访问 HTTPS 网页时会显示绿色的安全锁图标

为何不所有网站使用HTTPS

SSL断开连接怎么恢复

Session ID 每个会话都有一个唯一的标识符 一旦对话中断 无论之后如何 在重新建立连接时 只要客户端提供该Session ID 服务器存储有该Session ID 的信息 双方可以直接使用之前共享的秘密钥 而无需再生成新的密钥 目前所有的浏览器都支持这一功能。
缺点:Session IDs 仅限于单台服务器使用 如果请求被负载均衡分配到其他服务器处理时 那么就会导致无法恢复对话流程

2、session ticket
server 在之前的对话中向客户发送了一个 session ticket ,这个票是经过加密的,并且只有 server 能够解密它。其中包含了本次会话的相关信息如会话密钥和加密方法等细节。即使我们的请求被转移到其他服务器处理时,“一旦 server 解密了这个 session ticket ,就可以恢复上次会话的内容而无需重新生成会话密钥。”

正向代理,反向代理

正向代理 其通过某种机制隐藏了真实的身份。服务端无法识别出真正的客户端。这些请求实际上都是由相应的代理服务器接收并转发给服务端处理。

该系统采用了负载转发器来隐藏真实的服务器端点。每当一个网站被访问时,在其背后可能部署了数百甚至上千台服务器来处理请求。具体由哪一台执行任务我们并不清楚;然而我们需要知道的是负载转发器是谁以及它如何将请求发送至实际服务执行层。通常情况下,反向代理服务器的作用就是实现负载均衡管理

负载平衡

1、DNS
2、反向代理

短轮询,长轮询,WebSocket

短轮询

基本概念
每个时间段内浏览器会向自身提交一次 HTTP 请求序列。服务器端接收到该请求后,无论是否发生数据更新,都将立即做出回应。
这种即时通信机制实际上支撑着的是一个持续不断地由客户端发起 HTTP 请求的过程,能够让客户端模拟出实时接收到 server 端数据变化的过程。

优缺点
优点:比较简单,易于理解。

缺点:该种方式因不断建立http连接而造成了严重的资源消耗。随着用户数量的增长,在线用户的数量也会随之上升而导致服务器端压力加大这一问题显得尤为突出

长轮询

基本思路
客户端首先向服务器发送请求。当服务器接收到客户端的请求后,并不会立即做出回应;相反地会将该请求暂时搁置一段时间,并检查是否需要更新数据。
如果发现需要更新的信息,则做出响应;反之若长时间没有收到新数据,则在一定时间内触发返回操作。在此期间,在完成对服务器返回信息的处理之后,在服务连接断开的情况下会自动发起重连请求并重新建立连接关系。

优点:该方法显著降低了冗余的HTTP请求数量,并且从而提升了系统的资源利用率。

缺点:连接挂起也会导致资源的浪费。

WebSocket

WebSocket 是 Html5 官方定义的标准协议,在功能上与传统的 HTTP 协议存在显著差异,并且允许服务器主动向客户端单向传输数据。部署该协议时,在服务器端的操作相对繁琐。它允许多方间实现双向通信。

参考链接

http协议:<https://juejin.cn/post/684490...
安全http协议:<https://juejin.cn/post/...
http缓存机制:<https://juejin.cn/post...
安全http传输:<https://juejin.cn/post...
数字签名技术:<http://www.ruanyifeng....
http细节分析:<https://juejin.cn/po...

全部评论 (0)

还没有任何评论哟~