应用层的http和https协议

HTTP和HTTPS

  • http和https是什么?
    • http 常用的协议版本
      • http/1.0
      • http/1.1改进
      • http/2.0 改进
    • http 和https有什么区别?

http和https是什么?

   HTTP(超文本传输协议)是一种用于在网络上传输超文本数据的协议。它是一种客户端-服务器协议,用于从 web 服务器传输文本、图像、音频、视频以及其他多媒体文件到 web 浏览器。

但是http是明文传输的,如果发送的有敏感信息会有安全隐患,所以推出了更加安全的https,https创建的宗旨就是提供一个安全的传输通道,他把明文信息进行了加密。

http 常用的协议版本

   下面讲解目前最为流行的http协议,以及他们各自的特点,看完这篇文章,你将会了解http各个版本的特点

http/1.0

优点:
1.简单
http的报文格式就是header + body

GET /mypage.html HTTP/1.0
User-Agent: NCSA_Mosaic/2.0 (Windows 3.1)200 OK
Date: Tue, 15 Nov 1994 08:12:31 GMT
Server: CERN/3.0 libwww/2.17
Content-Type: text/html
  1. 灵活和易于扩展,他的状态码和头字段都是可以自定义扩展

缺点

  1. 无状态

   在同一个连接中,两个执行成功之间的请求之间是没有联系的,但是可以使用HTTP Cookie 使用有状态的绘=会话,这样就可以共享会话信息。服务器不会记录http的状态,所以不需要用额外的资源记录状态信息,但是有一个致命的问题就是在完成有关联性的操作时会非常的麻烦,需要每次都要对服务器进行询问,例如你在购物车下单购买物品,这些都是需要知道用户的身份信息的,这就需要每次都要询问一下用户信息

  1. 不安全(http2.0解决以下问题)

   因为他是明文传输的,很容易被截取和窃听,如果在传输的过程中,把账号密码泄露出去,那恭喜你,号就没了。
他不验证通信双方身份、有可能进入伪装网站,假如你在一个假的pdd,jd购买东西,那恭喜你,钱没了。
无法证明报文完整性都导致不安全的问题,服务器发送的消息很有可能被篡改,在信息中植入广告和弹窗等。

  1. 无连接(http1.1解决)

   浏览器的每次请求都需要于服务器建立一个TCP连接,因为每个TCP只能发送一个请求,所以会大量的创建和销毁,在这个过程中浪费了大量的时间

http/1.1改进

1. host头的处理

http1.1的报文格式凭借 Host 标头,能够使不同域名配置在同一个 IP 地址的服务器上,如果报文中没有host,会报400错误。

GET /zh-CN/docs/Glossary/Simple_header HTTP/1.1
Host: developer.mozilla.org
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:50.0) Gecko/20100101 Firefox/50.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Referer: https://developer.mozilla.org/zh-CN/docs/Glossary/Simple_header200 OK
Connection: Keep-Alive
Content-Encoding: gzip
Content-Type: text/html; charset=utf-8
Date: Wed, 20 Jul 2016 10:55:30 GMT
Etag: "547fa7e369ef56031dd3bff2ace9fc0832eb251a"
Keep-Alive: timeout=5, max=1000
Last-Modified: Tue, 19 Jul 2016 00:59:33 GMT
Server: Apache
Transfer-Encoding: chunked
Vary: Cookie, Accept-Encoding
  1. 更多缓存

   HTTP1.1支持更多的缓存策略,例如Entity tag,If-Unmodified-Since, If-Match, If-None-Match等更多可供选择的缓存头来控制缓存策略

  1. 长连接

   前面我们已经了解到了,每次http请求都需要建立一个连接,创建连接的过程不但会消耗时间还会消耗资源,如果想要减少时间和资源的消耗,那就应该重用连接,所以http1.1中引用了重用连接的机制,在请求头中加入keep-live,即保持长连接,连接相应完不关闭,继续重用。注意这个长连接是有时间限制的,并且服务端有最大的连接数量,如果达到这个数量,长连接就会被关闭,http1.1 默认开启长连接

  1. 管道传输

   因为长连接的存在,发送一次请求后并不会关闭TCP连接,所以可以不等第一次请求的响应,这大大减少了请求的队头阻塞,但是服务器必须按照接受请求的顺序来处理响应,如果一个连接的请求处理较长,那么后面的请求都要排队等待,响应的队头阻塞依旧存在

http/2.0 改进

   http2对1.x完全兼容,因为他是在1.x的基础上升级的,而不是重写1.x。状态以及api在2.0的协议是一样的,并且2.0性能大幅度的提升,为什么提升?这里先埋下伏笔,等下面讲解回收

  1. 二进制分帧-http2.0的基石

   上面我们知道了2.0的性能大幅度的提升,突破http1.0的性能限制,改进传输性能,实现低延迟和高吞吐量,但是并不知道为什么,其实就是新增加了二进制分帧层,在tcp协议中,数据的传输单位是数据报。数据分成两个部分,一个是头部(header)和实际的数据部分(body)。但是在http2.0中,他把数据报的两大部分分成了header frame 和 data frame,分别是头部帧和数据帧,和http1.x对应的是header和body。帧的载体是是流,在一个流中header frame 和data frame 可以分成多个数据片进行传输。
   流,流是连接中的一个虚拟通道,他可以进行双向传输,每个流都有一个唯一整数标识符,为了区分服务端和客户端的stream,客服端发起的标识符为奇数,服务端发起的标识符为偶数,一个http2连接可以包含多个并发打开的流。

2. 多路复用

   在http1.1中,浏览器客户端在同一时间,对同一个域名下的请求有一定的限制,超过限制的数目请求将会被阻塞。这也是为何一些站点会有多个静态资源CDN的原因之一,在http2.0中就对这个问题进行优化,不用依赖多个TCP连接实现多流并行,每个数据流可以拆分成互不依赖的帧,这些可以分优先级,交错发送,最后在服务端把他们重新组装起来,多个stream在一个tcp连接发送数据,解决了客户端的队头阻塞问题端,

在这里插入图片描述

  1. 头部压缩

   在http1.1中,他的请求头存储着大量的信息,而且有时候会发送很多重复的内容,那么这就造成了很多资源的浪费,如果只发送请求头中被修改的数据,那么这个发送的内容将会大大降低。http2.0中使用encoder来减少传输header的大小,对于相同的数据,不在通过每次请求和响应发送。

  1. 服务端推送
    服务端可以对一个客户端发送多个请求,并且无需客户端明确的请求,它能把客户端所需要的资源伴随着index.html一起发送到客户端,因为没有请求和建立连接的操作,所以静态资源通过服务端的推送方式可以极大地提升速度。

  2. http2.0瓶颈

虽然http2.0通过多路复用技术提升了性能,但是又带来了新的技术瓶颈,因为所有的压力都会到一个TCP连接之中,而且TCP连接还存在队头阻塞问题,单个TCP连接丢失,会导致所有的消息受到影响。

http 和https有什么区别?

  • https需要到ca申请证书,免费证书比较少,需要一些费用来购买证书

  • http是超文本协议,他是明文传输的,https则是具有安全性的ssl加密传输协议

  • http和https连接的方式和端口不一样,http用的80端口,而https用的443端口

  • http是无状态的,https是由SSL+HTTP协议构建的可进行加密传输,身份认证的网络协议,比http安全

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

考研数学|《1800》+《660》精华搭配混合用(经验分享)

肯定不行,考研数学哪有这么容易的! 先说说这两本习题册,李永乐老师推出的新版660题,相较于18年前的版本,难度略有降低,更加适合初学者。因此,对于处于基础阶段的学习者来说,新版660…

ssm017网上花店设计+vue

网上花店的设计与实现 摘 要 网络技术和计算机技术发展至今,已经拥有了深厚的理论基础,并在现实中进行了充分运用,尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代,所以对于信息的宣传和管理就很关…

用户体验:探讨Facebook如何优化用户体验

在数字化时代,用户体验是社交媒体平台成功与否的关键因素之一。作为全球最大的社交媒体平台之一,Facebook一直在努力优化用户体验,从功能设计到内容呈现再到隐私保护,不断提升用户满意度。本文将深入探讨Facebook如何优化用户体验…

【与C++的邂逅】---- 函数重载与引用

关注小庄 顿顿解馋(▿) 喜欢的小伙伴可以多多支持小庄的文章哦 📒 数据结构 📒 C 引言 : 上一篇博客我们了解了C入门语法的一部分,今天我们来了解函数重载,引用的技术,请放心食用 ~ 文章目录 一. 🏠 函数重…

获取用户位置数据,IP定位离线库助您洞悉消费者需求

获取用户位置数据是现代互联网应用中非常重要的一环。通过获取用户的位置数据,可以了解用户所在的地理位置,从而更好地为用户提供个性化的服务和推荐。而IP归属地离线库就是一种非常有用的工具,可以帮助企业准确地获取用户的位置信息。 IP归…

【Entity Framework】EF中DbSet类详解

【Entity Framework】EF中DbSet类详解 文章目录 【Entity Framework】EF中DbSet类详解一、概述二、定义DbSet2.1 具有DbSet属性的DbContext2.2 具有 IDbSet 属性的 DbContext 2.3 具有 IDbSet 属性的 DbContext三、DbSet属性四、DbSet方法五、DbContext动态生成DbSet 一、概述 …

后端基础篇- 社区 IDEA 手动 Maven 创建 SpringBoot 项目、Maven 安装与配置环境变量、IDEA 集成 Maven

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 Maven 安装与配置环境变量 1.1 下载并解压安装包 1.2 配置本地仓库 1.3 配置阿里云私服 1.4 配置环境变量 2.0 IDEA 集成 Maven 2.1 首先创建一个新项目 2.2 开始…

二维相位解包理论算法和软件【全文翻译-二维相位解缠的离散形式 (2.5)】

我们已经指出,二维相位解包相当于在覆盖相关领域的路径上对相位梯度进行积分。在实践中,我们当然必须处理采样数据。然而,为了做到这一点,我们必须定义离散域中的二维相位解包问题,并明确本书中将会用到的相关术语。 从最一般、限制最少的意义上讲,二维相位解包是一个不…

121314饿

c语言中的小小白-CSDN博客c语言中的小小白关注算法,c,c语言,贪心算法,链表,mysql,动态规划,后端,线性回归,数据结构,排序算法领域.https://blog.csdn.net/bhbcdxb123?spm1001.2014.3001.5343 给大家分享一句我很喜欢我话: 知不足而奋进,望远山而前行&am…

vue3鼠标向下滑动,导航条改变背景颜色和logo的封装

代码中使用了element-plus组件&#xff0c;需先安装 向下滑动前 向下滑动后&#xff08;改变了logo 字体 背景颜色&#xff09; <script lang"ts" setup> import router from /router; import { ArrowDown } from element-plus/icons-vue import { ref, …

实测梳理一下kafka分区分组的作用

清空topickafka-topics.sh --bootstrap-server localhost:9092 --delete --topic second创建分区kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 3 --topic second发kafka-console-producer.sh --bootstrap-server localhos…

有关链表算法

例题一 解法&#xff08;模拟&#xff09;&#xff1a; 算法思路&#xff1a; 两个链表都是逆序存储数字的&#xff0c;即两个链表的个位数、⼗位数等都已经对应&#xff0c;可以直接相加。 在相加过程中&#xff0c;我们要注意是否产⽣进位&#xff0c;产⽣进位时需要将进位…

Visual Studio 2022报错c1083,win11解决办法

如果头文件报错&#xff0c;并且编译器报错是c1083&#xff0c;无法处理的时候&#xff0c;包括卸载重装也是无济于事的时候 此时可以采取一下办法进行修改 出现这个的主要原因是安装 Windows SDK 时版本出错&#xff0c;需要根据自己的 windows 版本选择安装对应版本的 Wind…

网心云邀请码:KpyV3Dk7

网心云长期有效邀请码&#xff1a;KpyV3Dk7 新用户注册福利码&#xff1a;KpyV3Dk7 通过福利码注册并登录您可获得&#xff1a;①可得1元收益②1张14天50%加成卡③绑定设备可得1~5元不等 新手解答&#xff1a; 1. 有哪些设备可以安装&#xff1f;闲置电脑、闲置手机、闲置平…

就业班 第二阶段 2401--3.29 day9 shell之正则+数组

九、shell 编程-数组 普通数组:只能用整数作为数组的索引 关联数组:可以使用字符串作为数组的索引 数组定义 普通数组定义: [rootnewrain shell]# books( linux shell awk sed ) 引用: [rootnewrain shell]# echo ${books[0]} linux [rootnewrain shell]# echo ${books[1]…

Kafka入门到实战-第四弹

Kafka入门到实战 Kafka集群搭建官网地址Kafka概述使用Kraft搭建Kafka集群更新计划 Kafka集群搭建 官网地址 声明: 由于操作系统, 版本更新等原因, 文章所列内容不一定100%复现, 还要以官方信息为准 https://kafka.apache.org/Kafka概述 Apache Kafka 是一个开源的分布式事件…

数据库:Redis数据库

一、非关系型数据库 1.什么是非关系型数据库 非关系型数据库&#xff08;Non-relational Database&#xff09;又称NoSQL数据库是一种不同于传统关系型数据库管理系统&#xff08;RDBMS&#xff09;的数据存储解决方案。NoSQL这个术语最初意味着"Not Only SQL"&…

NoSQL(非关系型数据库)之Redis的简介与安装

一、简介 1.1 关系型数据库与非关系型数据库 1.1.1 概念 1.1.2 区别 1.2 非关系型数据库产生背景 1.3 redis 简介 1.4 redis 优点 1.5 redis 快的原因 二、安装 2.1 关闭核心防护 2.2 安装相关依赖 2.3 解压软件包并进行编译安装 2.4 设置 Redis 服务所需相关配置文…

代码随想录第28天 | 93.复原IP地址 、 78.子集 、 90.子集II

一、前言&#xff1a; 参考文献&#xff1a;代码随想录 今天的主题内容是回溯算法&#xff0c;这一章的干货很多&#xff0c;我需要慢慢的品味&#xff0c;不单单只是表象&#xff0c;还需要研究深层原理。 二、复原IP地址 1、思路&#xff1a; &#xff08;1&#xff09;…

HarmonyOS 应用开发之同步任务开发指导 (TaskPool和Worker)

同步任务是指在多个线程之间协调执行的任务&#xff0c;其目的是确保多个任务按照一定的顺序和规则执行&#xff0c;例如使用锁来防止数据竞争。 同步任务的实现需要考虑多个线程之间的协作和同步&#xff0c;以确保数据的正确性和程序的正确执行。 由于TaskPool偏向于单个独…