知识小结——HTTP协议相关

news2024/11/18 19:30:43

目录

TCP/IP

URI / URL

HTTPS

总结时间:

TCP/IP协议簇

对TCP的理解

对UDP的理解

HTTP(超文本传输协议)是什么?

HTTPS(安全超文本传输协议)是什么?

HTTPS的特点:

HTTPS协议对称加密的过程? 

HTTP协议的缓存策略有哪些?

强制缓存:

协商缓存:


名词解释来源:http://t.csdn.cn/Znh1f

TCP/IP


TCP/IP 协议你一定听过,TCP/IP 我们一般称之为协议簇,什么意思呢?就是 TCP/IP 协议簇中不仅仅只有 TCP 协议和 IP 协议,它是一系列网络通信协议的统称。而其中最核心的两个协议就是 TCP / IP 协议,其他的还有 UDP、ICMP、ARP 等等,共同构成了一个复杂但有层次的协议栈。

TCP 协议的全称是 Transmission Control Protocol 的缩写,意思是传输控制协议,HTTP 使用 TCP 作为通信协议,这是因为 TCP 是一种可靠的协议,而可靠能保证数据不丢失。

IP 协议的全称是 Internet Protocol 的缩写,它主要解决的是通信双方寻址的问题。IP 协议使用 IP 地址 来标识互联网上的每一台计算机,可以把 IP 地址想象成为你手机的电话号码,你要与他人通话必须先要知道他人的手机号码,计算机网络中信息交换必须先要知道对方的 IP 地址。

URI / URL


我们可以通过输入 www.baidu.com 地址来访问百度的官网,那么这个地址有什么规定吗?我怎么输都可以?AAA.BBB.CCC 是不是也行?当然不是的,你输入的地址格式必须要满足 URI 的规范。

URI的全称是(Uniform Resource Identifier),中文名称是统一资源标识符,使用它就能够唯一地标记互联网上资源。

URL的全称是(Uniform Resource Locator),中文名称是统一资源定位符,也就是我们俗称的网址,它实际上是 URI 的一个子集。

URI 不仅包括 URL,还包括 URN(统一资源名称),它们之间的关系如下

 

HTTPS


HTTP 一般是明文传输,很容易被攻击者窃取重要信息,鉴于此,HTTPS 应运而生。HTTPS 的全称为 (Hyper Text Transfer Protocol over SecureSocket Layer),全称有点长,HTTPS 和 HTTP 有很大的不同在于 HTTPS 是以安全为目标的 HTTP 通道,在 HTTP 的基础上通过传输加密和身份认证保证了传输过程的安全性。HTTPS 在 HTTP 的基础上增加了 SSL 层,也就是说 HTTPS = HTTP + SSL。

总结时间:

TCP/IP协议簇

对TCP的理解

TCP(Transmission Control Protocol)是一种面向连接的传输协议,它提供可靠性、流量控制和拥塞控制等服务,确保数据传输的可靠性和有序性。TCP将数据分成数据段进行传输,每个数据段都有序号和确认号,以确保数据的可靠传输。TCP还通过滑动窗口机制来进行流量控制和拥塞控制,以避免网络拥塞和数据丢失。TCP适用于对可靠性要求较高的应用场景,例如文件传输、电子邮件等。但是,由于TCP需要维护连接状态和进行数据确认等操作,因此相对于UDP来说,TCP的开销更大,传输速度也会稍慢一些。

对UDP的理解

UDP(User Datagram Protocol)是一种无连接的传输协议,它不提供可靠性、流量控制和拥塞控制等服务,但它具有简单、快速、低开销、无状态等特点。UDP将数据分成数据包进行传输,每个数据包都是独立的,它们可以按照任意顺序到达目的地。UDP适用于一些对可靠性要求不高,但要求传输速度快的应用场景,例如视频、音频等实时传输数据。但是,由于UDP不提供可靠性保障,因此在传输过程中可能会出现数据包的丢失或重复等问题。

HTTP(超文本传输协议)是什么?

Http是超文本传输协议,它是应用层的面向对象的协议,它是基于TCP/IP的高级协议,默认端口号是80。它是基于请求响应模型的,即一次请求对应一次响应。它是无状态的,每次请求之间相互独立。HTTP协议请求消息的数据格式为请求行,请求头,请求空行和请求体。请求行中主要包括请求方式,请求url,请求协议和版本等。请求方式在HTTP协议中有7种,最常用的有2种,get和post。如果是get请求,则还会把请求参数拼接到url后;请求头是客户端浏览器想要告诉浏览器的一些信息,如user-Agent(浏览器信息),host(主机地址),reference(请求来源)等。请求空行是用来分割请求头和请求体的;请求体是post请求下封装请求参数的。

HTTPS(安全超文本传输协议)是什么?

HTTPS(Hyper Text Transfer Protocol over SecureSocket Layer),是以安全为目标的HTTP通道,在HTTP的基础上通过身份认证和传输加密阶段保证了传输过程的安全性。HTTPS 在HTTP 的基础下加入TLS(Transport Layer Security 安全传输层协议)/SSL(Secure Sockets Layer 安全套接层协议),HTTPS 的安全基础是 TLS/SSL,因此加密就需要TLS/ SSL。

SSL的全称为Secure Sockets Layer,安全套接层协议。是为网络通信提供安全及数据完整性的一种安全协议。SSL协议在1994年被Netscape发明,后来各个浏览器均支持SSL。

TLS的全称是Transport Layer Security,安全传输层协议。是SSL3.0的后续版本。在TLS与SSL3.0之间存在着显著的差别,主要是它们所支持的加密算法不同,所以TLS与SSL3.0不能互操作。虽然TLS与SSL3.0在加密算法上不同,但是在我们理解HTTPS的过程中,我们可以把SSL和TLS看做是同一个协议。

在HTTPS数据传输的过程中,需要用TLS/SSL对数据进行加密,然后通过HTTP对加密后的密文进行传输,可以看出HTTPS的通信是由HTTP和TLS/SSL配合完成的。

HTTPS的特点:

  1. 内容加密:混合加密方式,对称加密和非对称加密。
  2. 验证身份:通过证书认证客户端访问的是正确的服务器。
  3. 数据完整性:防止传输的数据被中间人篡改。

HTTPS协议对称加密的过程? 

HTTPS数据加解密过程中数据进行对称加密,对称加密所要使用的密钥通过非对称加密传输。HTTPS协议加密的过程可以分为两个阶段,分别是:

  • 证书的认证阶段:使用非对称加解密算法对数据传送阶段的对称加解密密钥进行加密和解密。
  • 数据传送阶段:通过证书认证阶段获取到目标服务器的对称加解密密钥,对数据进行加密传送给服务器。

扩展:

HTTPS为了兼顾安全与效率,同时使用了对称加密和非对称加密。数据是被对称加密传输的,对称加密过程需要客户端的一个密钥,为了确保能把该密钥安全传输到服务器端,采用非对称加密对该密钥进行加密传输。总的来说,对数据进行对称加密,对称加密所要使用的密钥通过非对称加密传输。

在整个HTTPS数据传输的过程中一共会涉及到四个密钥:

  1. CA机构的公钥,用来验证数字证书是否可信任
  2. 服务器端的公钥
  3. 服务器端的私钥
  4. 客户端生成的随机密钥

一个HTTPS请求可以分为两个阶段,证书认证阶段和数据传送阶段。又可以细分为六个步骤:

  1. 客户端第一次向服务器发起HTTPS请求,连接到服务器的443(默认)端口。
  2. 服务器端有一个密钥对,公钥和私钥。用来进行非对称加密使用,服务器端保存私钥,不能泄露,公钥可以发送给任何人。服务器将自己的数字证书(包含公钥)发送给客户端。
  3. 客户端收到服务器端的数字证书之后,会对数字证书进行检查,验证合法性。如果发现数字证书有问题,那么HTTPS传输就中断。如果数字证书合格,那么客户端生成一个随机值,这个随机值是数据传输阶段时给数据对称加密的密钥,然后用数字证书中的公钥加密这个随机值密钥,这样就生成了加密数据使用的密钥的密文。到这时,HTTPS中的第一次HTTP请求就结束了。
  4. 客户端第二次向服务器发起HTTP请求,将对称加密密钥的密文发送给服务器。
  5. 服务器接收到客户端发来的密文之后,通过使用非对称加密中的私钥解密密文,得到数据传送阶段使用的对称加密密钥。然后对需要返回给客户端的数据通过这个对称加密密钥加密,生成数据密文,最后将这个密文发送给客户端。
  6. 客户端收到服务器端发送过来的密文,通过本地密钥对密文进行解密,得到数据明文。到这时,HTTPS中的第二次HTTP请求结束,整个HTTPS传输完成。

HTTP协议的缓存策略有哪些?

HTTP协议的缓存策略有两种,分别是强制缓存和协商缓存,强制缓存的优先级大于协商缓存。强制缓存是服务器告诉浏览器一个缓存时间,在缓存时间内,下次请求,直接用缓存,不在时间内,执行协商缓存策略。协商缓存是让客户端与服务器之间能实现缓存文件是否更新的验证、提升缓存的复用率,将缓存信息中的Etag和Last-Modified字段通过请求发送给服务器,由服务器校验。如果文件没有改变,那么直接返回304状态,继续使用浏览器缓存。

HTTP协议的缓存策略是浏览器每次发起请求时,先在本地缓存中查找结果以及缓存标识,根据缓存标识来判断是否使用本地缓存。如果缓存有效,则使用本地缓存,否则,则向服务器发起请求并携带缓存标识。HTTP协议的缓存策略分两种:强制缓存和协商缓存,而强制缓存优先级大于协商缓存。

  • 强制缓存:服务器告诉浏览器一个缓存时间,在缓存时间内,下次请求,直接用缓存,不在时间内,执行比较缓存策略。
  • 协商缓存:让客户端与服务器之间能实现缓存文件是否更新的验证、提升缓存的复用率,将缓存信息中的Etag和Last-Modified

通过请求发送给服务器,由服务器校验。如果文件没有改变,那么直接返回304状态,继续使用浏览器缓存。

HTTP缓存都是从第二次请求开始的:

  • 第一次请求资源时,服务器返回资源,并在响应头首部中回传资源的缓存策略。
  • 第二次请求时,浏览器判断这些请求参数,击中强缓存就直接返回状态码200,否则就把请求参数加到请求头首部中传给服务器,看是否击中协商缓存,击中则返回304,否则服务器会返回新的资源。

延伸阅读

强制缓存:

  • 强缓存命中则直接读取浏览器本地的资源,在network中显示的是from memory或者from disk。
  • 控制强制缓存的字段有:Cache-Control(http1.1)和Expires(http1.0)。
  • Cache-control是一个相对时间,用以表达自上次请求正确的资源之后的多少秒的时间段内缓存有效。
  • Expires是一个绝对时间。用以表达在这个时间点之前发起请求可以直接从浏览器中读取数据,而无需发起请求。
  • Cache-Control的优先级比Expires的优先级高。前者的出现是为了解决Expires在浏览器时间被手动更改导致缓存判断错误的问题。如果同时存在则使用Cache-control。

协商缓存:

  • 协商缓存的状态码由服务器决策返回200或者304
  • 当浏览器的强缓存失效的时候或者请求头中设置了不走强缓存,并且在请求头中设置了If-Modified-Since或者 If-None-Match的时候,会将这两个属性值到服务端去验证是否命中协商缓存,如果命中了协商缓存,会返回 304 状态,加载浏览器缓存,并且响应头会设置 Last-Modified或者ETag属性。
  • 对比缓存在请求数上和没有缓存是一致的,但如果是 304 的话,返回的仅仅是一个状态码而已,并没有实际的文件内容,因此在响应体体积上的节省是它的优化点。
  • 协商缓存有2组字段(不是两个),控制协商缓存的字段有:Last-Modified/If-Modified-since(http1.0)和Etag/If-None-match(http1.1)。
  • Last-Modified/If-Modified-since表示的是服务器的资源最后一次修改的时间。Etag/If-None-match表示的是服务器资源的唯一标识,只要资源变化,Etag就会重新生成。
  • Etag/If-None-match的优先级比Last-Modified/If-Modified-since高。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/641624.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux】linux下使用命令修改jar包内某一个文件中的内容并重新运行jar程序

linux下使用命令修改jar包内某一个文件中的内容并重新运行jar程序 一、背景描述二、vi命令编辑三、启动程序四、拓展--启动脚本 一、背景描述 需求:发现线上的 iotp-irsb-server-v1.0.0.2.jar 包中配置文件的日志级别配置错误,需要在线修改jar包中文件的…

99.实战网页构建定价部分-第二节

上节课我们完成的定价页面是这样的 上节课我们完成的定价页面是这样的 ● 首先我们先给卡片加上背景颜色 .princing-plan {background-color: #fdf2e9;border-radius: 11px;padding: 4.8rem; }● 之后我们调整下框子的大小和位置 ● 接着我们给基础价格再调价一项&#x…

低代码开发平台介绍

低代码开发平台近两年发展迅猛,并迅速渗透到各个细分领域。本文简要介绍低代码开发的概念以及特性,并结合低代码开发的应用场景介绍两个低代码开发平台。 1、低代码开发概念 1.1 低代码开发介绍 低代码开发(Low-code Development&#xff0…

SQL调优:让Java内存分担计算

作者: 剽悍一小兔 CSDN前端优质创作者,打破编程小说次元壁第一人《JavaScript百炼成仙》作者,专注Java硬核干货分享,分享创造快乐,技术成就梦想! 我们在工作中,经常会因为一条慢sql调半天。这一节&#xff…

无线蓝牙耳机什么牌子好?八大真无线蓝牙耳机排名

蓝牙耳机作为当前热门的数码产品,无论何时都能用上,蓝牙耳机的快速发展逐渐的取代有线耳机,摆脱线条的束缚,更方便携带。当然,随着蓝牙耳机的设计各种各样,导致很多的小伙伴在选购耳机的时候,不…

简易协程工具【Wait! - Easy Coroutines】

Wait! - Easy Coroutines | Utilities Tools | Unity Asset StoreUse the Wait! - Easy Coroutines from Iterant Games on your next project. Find this utility tool & more on the Unity Asset Store.https://prf.hn/l/b3AQw5a 1、概述 Wait - Easy Coroutines&#…

chatgpt赋能python:建立Python文件的完整指南

建立Python文件的完整指南 如果您正在寻找一个易于学习和使用的编程语言,Python就是一个不错的选择。Python的第一印象常常让人感到吃惊,因为它的代码与许多编程语言相比要短得多,然而它的功能非常强大且使用范围广泛。在本文中,…

【位图布隆过滤器海量数据面试题】

文章目录 1 位图2 布隆过滤器 1 位图 首先我们来看看一个腾讯的面试题:给40亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快速判断一个数是否在这40亿个数中。 分析: 40亿个不重复整形数据,大概有160亿字节…

Linux---vim的使用

专栏:Linux 个人主页:HaiFan. 本章为大家带来Linux工具—vim Linux工具 关于rzszyumvim的基本概念vim的基本操作vim正常模式命令集vim末行模式命令集简单vim配置配置文件的位置常用配置选项 关于rzsz 这个工具用于windows机器和Linux机器通过Xshell传输…

字符串--字符指针、字符串的访问和输入/输出(字符串空格问题,输入带双引号的字符串)

一、字符指针 字符指针(Character Pointers)是指向字符型数据的指针变量。 每个字符串在内存中都占用一段连续的存储空间,并有唯一确定的首地址。因此,只要将字符串的首地址赋值给字符指针,即可让字符指针指向一个字符…

安卓主板/开发板定制开发生产,MTK/高通/紫光展锐安卓开发板

智物通讯是一家致力于行业安卓主板定制开发的公司,提供包括MTK四核/八核方案、MTK、高通、紫光展锐系列行业主板方案定制等多样化的服务。 用户可以根据实际需求选择各种不同的模块类型,包括4G模块和5G模块。其中4G模块方案有MT6761、MT6762、MT6765、M…

爬虫 python 正则匹配 保存网页图片

目录 1. 简介1.1 爬虫1.2 爬虫语言1.3 python库1.4 我的步骤 2. 导入包2.1 代码2.2 requests库 3. 写入文件函数4. 获取图片5. 主函数5.1 代码5.2 说明一下webbrowser 6. 所有代码7. 其他(可以忽略)8. 总结 在这里我只提供的是一种方法,有很多…

webpack生产模式配置

一、生产模式和开发模式介绍 生成模式(production mode)是指在开发完成后将代码部署到生产环境中运行的模式,通常需要进行代码压缩、优化、合并,以减少文件大小和请求次数,提高页面加载速度和运行效率。 开发模式&am…

Android12 系统开发记录-迅为RK3588使用ADB工具

ADB 英文名叫 Android debug bridge ,是 Android SDK 里面的一个工具,用这个工具可以 操作管理 Android 模拟器或者真实的 Android 设备,主要的功能如下所示:  在 Android 设备上运行 shell 终端,用命令行操作 …

How to fix the NHS 如何改革英国的国民医疗保险制度 | 经济学人20230527版社论双语精翻

他山之石:2023年5月27日《经济学人》社论(Leaders)精选:《如何改革英国的国民医疗保险制度》(“How to fix the NHS”) Leaders | The sick factor 社论 | 致病因素 How to fix the NHS 如何改革英国的国民…

软件安装mysql

1系统约定 安装文件下载目录:/data/softwareMysql目录安装位置:/usr/local/mysql数据库保存位置:/data/mysql日志保存位置:/data/log/mysql 2下载mysql 在官网:MySQL :: Download MySQL Community Server 中&#x…

Guitar Pro8.0.1最新中文版本吉他谱下载及使用教程

许多人都对吉他这个乐器很感兴趣,因为吉他的学习成本较低,学习难度较小,即便是零基础的小白通过短期的学习也能掌握基本的技巧。但实际上,学习吉他还需要认识吉他谱,识谱是每个吉他爱好者都必须掌握的技能,…

数字孪生世界建设核心能力:物理世界感知能力

中国信通院在《数字孪生城市白皮书(2022年)》中指出,数字孪生城市技术集成性高,核心板块日渐清晰,当前已逐步深入到城市全要素表达、业务预警预测、场景仿真推演、态势感知只能决策等多个环节。数字孪生技术的向前发展…

Yum update和upgrade的区别

Yum update和upgrade的区别 Linux yum中package升级命令有两个分别是 yum upgrade 和 yum update 1、区别 默认情况下,yum update和yum upgrade的功能是完全一样的,都是将需要更新的package(这里的包包括常规的包、软件、系统版本、系统内核)更新至软件…

如何使用ArcGIS加载历史影像

历史影像对研究地物的变化可以产生很直观的效果,Esri提供了在线浏览的历史影像,这里给大家介绍一下如何将这个历史影像加载到ArcGIS,希望能对你有所帮助。 获取地图链接 打开地图网站(https://livingatlas.arcgis.com/wayback/&a…