【深入浅出HTTPS】理解HTTP

本文参考:
【深入浅出HTTPS】(作者:虞卫东)书籍,github地址:https://github.com/ywdblog/httpsbook

【MDN】中文译文地址:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Accept
【MDN】英文原文地址:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept

HTTP的定义

HTTP:超文本传输协议,它是在互联网中在客户端和服务器进行通信的一种规则,它规定了客户端以何种方式去向服务器请求资源,和服务器以何种方式把资源返回给客户端。

HTTP语义

HTTP消息包括两个部分:HTTP语义HTTP实体
http 消息由三部分组成:

  • 请求行或响应行
  • HTTP 头部(请求头、响应头)
  • HTTP 实体 (请求实体、响应实体)

请求行、响应行和HTTP头部,都属于 HTTP 语义信息,客户端和服务器用HTTP语义信息进行交流。
HTTP实体,由浏览器处理后展示在页面上。

请求消息

这里是墨刀网站某个页面的某个请求接口内容。
谷歌浏览器F12打开控制台,点击Network或者网络,随意点开一个接口,就可以看到这种请求消息。
请添加图片描述

请求行

请求行由请求方法URLHTTP版本组成。

GET /app/adfdsff?xx=dgg HTTP/1.1

GET: 请求方法,用于获取互联网资源的方法
/app/adfdsff?xx=dgg:URL,服务器根目录下的app/adfdsff文件,携带了xx=dgg的参数
HTTP/1.1:使用的协议是HTTP的1.1版本

请求头

Accept:

用于描述客户端希望接收的响应体的数据类型,希望服务器返回什么类型的数据。
举例:

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;
text/html: HTML格式
application/xhtml+xml: XHTML格式
application/xml: XML数据格式
image/avif: avif图片格式
image/webp: webp图片格式
image/apng: apng图片格式
image/avif: avif图片格式
*/*: 任意格式
q: 相对质量值,表示偏好,值越大,就越希望优先获取某个数据格式,表示该格式被响应的排序越靠前。使用的值按照相对质量值(称为权重)表示的偏好顺序排列。
Accept-Ecoding:

表示客户端支持的压缩算法,客户端希望从服务器返回以该种压缩算法压缩的数据。

HTTP 请求头 Accept-Encoding 会将客户端能够理解的内容编码方式——通常是某种压缩算法——进行通知(给服务端)。通过内容协商的方式,服务端会选择一个客户端提议的方式,使用并在响应头 Content-Encoding 中通知客户端该选择。
Accept-Encoding: gzip
Accept-Encoding: compress
Accept-Encoding: deflate
Accept-Encoding: br
Accept-Encoding: identity
Accept-Encoding: *

* 匹配其他任意未在该请求头字段中列出的编码方式。假如该请求头字段不存在的话,这个值是默认值。它并不代表任意算法都支持,而仅仅表示算法之间无优先次序

// 多种算法存在时, 可以使用相对质量值来给算法做权重排序:
Accept-Encoding: deflate, gzip;q=1.0, *;q=0.5

MDN链接跳转:Accept-Ecoding | MDN

Accept-Language:

表示客户端支持的语言
MDN链接跳转:Accept-Language | MDN

Connection:

表示连接方式,保持连接或是关闭连接。keep-alive保持连接,close关闭连接。通常默认是keep-alive
MDN链接跳转:Connection | MDN

Cookie:

表示服务器发送到客户端,并保留在客户端本地的一小块数据。这块数据用于,客户端再次向同一个服务器发送请求时,携带上这份服务器留在客户端的数据,告诉服务器两次请求,是来自同一个客户端。可用于保持用户的登录状态。
MDN链接跳转:Cookies | MDN

Host:

表示请求将要发送到某个服务器主机名的某个端口
Host: :
Host: free.modao.cc =====> 发送的服务器主机名是 free.modao.cc
如果没有包含端口号,会自动使用被请求的服务器的默认端口,HTTPS的URL默认端口是443,HTTP的URL默认端口是80。

所有HTTP/1.1 请求报文中必须包含一个Host头字段。对于缺少 Host头或者含有超过一个 Host头的HTTP/1.1 请求,可能会收到 400 状态码(Bad Request)

MDN链接跳转:Host | MDN

Sec-Fetch-Dest:

获取元数据标头:表示指示请求的目的地,即如何使用获取的元数据
Sec-Fetch-Dest: document
返回的数据将会以 HTML 的 document 文档的形式呈现。(个人理解)
MDN链接跳转:Sec-Fetch-Dest | MDN

只要包含前缀 Sec- ,都属于应用程序禁止修改的 HTTP 消息头,用户代理保留全部对它们的控制权

Sec-Fetch-Mode:

获取元数据标头:表示一个请求的模式.
这使得服务器能够区分: 来自用户在 HTML 页面之间导航的请求,以及加载图像和其他资源的请求。例如,
Sec-Fetch-Mode: navigate ,此标头用于顶级导航请求,而无 cors 用于加载图像(不会因为跨域问题导致无法加载图片)。(个人理解)
原文:

Broadly speaking, this allows a server to distinguish between: requests originating from a user navigating between HTML pages, and requests to load images and other resources. For example, this header would contain navigate for top level navigation requests, while no-cors is used for loading an image.

中文译文-MDN链接跳转:Sec-Fetch-Mode | MDN
英文原文-MDN链接跳转:Sec-Fetch-Mode | MDN

Sec-Fetch-Site:

获取元数据标头:表示请求发起者的来源与目标资源来源之间的关系,即我在 www.baidu.com 页面,发送了一个获取图片的请求到 image.baidu.com 的服务器主机,www.baidu.com 和 image.baidu.com 两个服务器是什么关系。

Sec-Fetch-Site: cross-site =====> 不同域名,跨域了
Sec-Fetch-Site: same-origin =====> 同源(协议+主机名+端口 都相同,https://www.baidu.com:443)
Sec-Fetch-Site: same-site =====> 同站(二级域名+有效顶级域名 相同,比如www.baidu.com和image.baidu.com,有效顶级域名是.com,二级域名是 .baidu,www.baidu.com和image.baidu.com 都是 baidu.com,所以同站)
Sec-Fetch-Site: none ====> 这一请求与任意上下文无关,例如站点、源,或者框架。当用户采用某些方式发起请求时该值会被使用,例如:直接在地址栏中输入URL、打开一个书签,或者往浏览器窗口中拖放一个文件。

参考来源:彻底搞懂「同源same-origin」和「同站same-site」的区别 - 掘金 - 作者:乔珂力

MDN链接跳转:Sec-Fetch-Site | MDN

Sec-Fetch-User:

获取元数据标头:表示一个导航请求是否由用户激活触发
Sec-Fetch-User: ?0
Sec-Fetch-User: ?1
?0:导航请求由用户激活触发。
?1:导航请求由用户激活以外的原因触发。

中文译文-MDN链接跳转:Sec-Fetch-User | MDN
英文原文-MDN链接跳转:Sec-Fetch-User | MDN

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Spark是一个基于内存计算的分布式计算框架,它的工作原理可以简单概括为以下几个步骤: 1. Spark将输入数据划分成多个分区,并将这些分区分配到不同的节点上进行并行处理。 2. 在每个节点上,Spark会将数据加载到内存中,并对其进行转换和计算。这些计算可以包括过滤、排序、聚合等操作。 3. Spark使用RDD(弹性分布式数据集)来管理数据。RDD是一个不可变的分布式数据集合,可以在不同节点之间进行传输和操作。 4. Spark会将计算结果缓存在内存中,以便后续的计算可以更快地访问这些数据。 5. 当需要将计算结果输出时,Spark会将结果合并并输出到指定的存储介质中。 总的来说,Spark的工作原理可以归纳为分布式计算、内存计算和RDD管理。这些特性使得Spark在大规模数据处理和机器学习等领域具有很高的性能和灵活性。 ### 回答2: Spark是一个快速通用的集群计算系统,可以在分布式存储上快速进行数据处理。Spark的工作原理可以简单地概括为:将数据分成小块并分配到不同的计算机节点上并行处理,在块内使用内存计算来加速数据处理速度,最后将计算结果输出到分布式存储中。以下将从Spark的核心概念和工作流程两个方面进行深入浅出的详细解读。 第一部分:Spark的核心概念 1. Resilient Distributed Datasets(RDD): RDD是Spark的一个核心概念,它代表一个不可变的、分布式的数据集合,可以被并行处理。RDD可以计算的原因是因为它可以被分割成多个partition,在每个partition上都可以进行计算。 2. Transformation: Transformation是指从一个RDD中创建一个新的RDD,并且在新的RDD上执行计算。例如:map、filter、reduceByKey等操作均为Transformation。 3. Action: Action是指将RDD上进行计算并返回结果,这将触发Spark进行实际的计算。例如:count、collect、saveAsTextFile等操作均为Action。 第二部分:Spark的工作流程 1. Spark的运行基于Master和Worker节点之间的交互。数据被分割成一系列的RDDs,并且这些数据被分配到多个Worker节点上并行处理。 2. Worker节点上的Executor使用内存计算来加速计算过程。 3. 程序开始时,SparkContext对象创建一个Driver程序。Driver程序是指整个Spark程序的控制中心。 4. 驱动程序通过Cluster Manager向集群申请Executor资源。 5. 一旦资源分配完成后,驱动程序将计算任务打包成TaskSet,向Executor发出任务。 6. Executor开始执行计算任务,并将计算结果返回给Driver程序。 7. Driver程序将最终结果输出到外部存储系统(例如:HDFS、S3等)。 综上所述,Spark的工作原理可以总结为将数据分割成小块并分配到不同的计算机节点上并行处理,在块内使用内存计算来加速数据处理速度,最后将计算结果输出到分布式存储中。这一特点使Spark成为一个快速、通用的集群计算系统,被广泛应用于各种大小和类型的数据处理和分析任务。 ### 回答3: Apache Spark是一种大数据处理引擎,可以处理大规模的数据集并提供分布式计算功能。它是基于内存的计算框架,可在磁盘上存储数据集并在内存中进行处理,比传统的MapReduce框架快得多。Spark的主要组件是Spark Core,它提供了分布式任务调度,内存管理和相关功能的API。 在Spark中,任务被划分成多个阶段,每个阶段会被分成多个任务并在不同的集群节点上执行。Spark使用RDD(Resilient Distributed Dataset)作为其基本数据结构,RDD是一个可容错的不可变数据集合,它可以在集群节点上并行化处理以提高数据处理效率。它有两种操作类型:转换和动作。转换操作会返回新的RDD,而动作操作会返回结果或副作用。 Spark工作原理的基本流程如下: 1. 对输入数据进行划分和并推测计算 2. 对数据进行转换和过滤等操作 3. 对转换后的数据进行缓存 4. 进行计算和处理 5. 释放缓存的数据 Spark利用内存进行数据处理,因此其关键可以分为两方面: 1. 内存管理:Spark使用了管理内存的方法,对该方法的操作会影响Spark的性能。Spark中使用了三种方式来管理内存:堆内存、堆外内存、磁盘内存。堆内存是Spark的基本内存管理机制,堆外内存主要用来处理针对大数据的操作,磁盘内存通常被用来处理超过内存上限的数据。 2. 分布式计算:Spark的分布式计算是一个非常复杂的问题。为了保证计算负载的均衡,Spark采用了一种叫做Spark SQL的框架,这个框架可以让开发者通过写SQL查询语句来访问Spark的数据集。 总之,Spark是一个面向内存计算的框架,它提供了高度分布式、容错能力强且易于使用的API,以方便处理大规模的数据集。为了保证计算任务的高效运行,Spark使用了内存管理方法和复杂的分布式计算算法,这些算法可以优化数据集的处理,提供更好的计算结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值