HTTP 与 HTTPS

文章目录

    • HTTP协议
      • 一、什么是HTTP协议
      • 二、HTTP 协议通信过程
      • 三、URL
        • 什么是URI
      • 四、HTTP报文
        • 1、请求报文
          • (1)请求报文结构
        • 2、响应报文
          • (1)响应报文结构
      • 五、HTTP请求方式
        • 1、GET:获取资源
        • 2、POST:提交数据增加资源
        • 3、HEAD:获取响应报头
        • 4、PUT:修改资源
        • 5、DELETE:删除资源
        • 6、OPTIONS:查询支持的方法
        • 7、GET 和 POST 的区别
      • 六、HTTP状态码
        • 1、1xx 信息
        • 2、2XX信息(表示服务器成功处理了客户端的请求)
        • 3、3XX信息(表示客户端请求的资源发生了变动,需要客户端重新发送)
        • 4、4XX信息(客户端发送的报文有错)
        • 5、5XX信息
      • 七、连接管理
        • 1、短连接和长连接
        • 2、管线化连接
      • 八、HTTP 和 HTTPS 的区别
      • 九、HTTPS 的工作原理

HTTP协议

一、什么是HTTP协议

  • HTTP协议就是超文本传输协议
  • 用于 服务器客户端浏览器之间传输超文本数据(文字、图片、视频、音频)应用层协议

HTTP是属于应用层的协议,也是一个双向协议,他基于浏览器-服务器架构模型进行工作

二、HTTP 协议通信过程

HTTP是一个应用层的协议,默认端口是80(使用默认端口时,端口可省略不写)

在传输层使用 TCP 协议进行数据传输

b273efef5f2388e26414135672b00295.png

HTTP协议通信过程:

  1. 用户发起请求
  2. 客户端向服务器发送一次连接请求
  3. 服务器接受到请求并创建连接
  4. 浏览器生成HTTP格式的数据包,并发送给服务器
  5. 服务器接收到数据包并解析
  6. 然后执行相应的操作
  7. 然后生成一个HTTP格式的响应数据包并发送给浏览器
  8. 浏览器解析响应数据包,并呈现HTML页面给客户

三、URL

  • HTTP协议使用 URL (统一资源定位符)来定位资源
  • 格式:http://host[":"port][abs_path]
    示例:http://192.168.0.116:8080/index.html
什么是URI

URL 是 URI(统一资源标识符) 的子集,URL在URI的基础上增加了定位功能

URI.png

四、HTTP报文

1、请求报文

是浏览器向服务器发送请求时的报文,服务器会根据请求报文中携带的数据进行处理

(1)请求报文结构
  • 第一行是请求行,包含:请求方式、URL请求路径、协议版本
  • 然后就是HTTP的消息行,包含若干个首部字段
  • 一个空行来分割
  • 最后是请求的消息体

4.jpg

2、响应报文

当服务器处理完请求后,会将响应数据放入 http 响应报文中返回给浏览器

(1)响应报文结构
  • 第一行是状态行,包含:协议版本,状态码以及描述
  • 接下来是消息头(若干行)
  • 一个空行分割
  • 最后是消息体

4.jpg

五、HTTP请求方式

1、GET:获取资源

GET方法用于使用给定的URL从给定服务器中检索信息,完成从指定资源中请求数据。使用GET方法的请求应该只是检索数据,并且不会对数据产生其他影响

2、POST:提交数据增加资源

POST方法用于将数据发送到服务器以创建或增加资源。使用post方法,如果两个请求相同,后一个请求不会覆盖第一个请求,所以post用于增加资源。

3、HEAD:获取响应报头

和 GET 方式相似,但是仅会返回响应报头部分

4、PUT:修改资源

PUT方法用来修改资源,要求在请求报文的主体中包含数据内容,然后保存到请求URL指定位置。使用put方法,如果两个请求相同,后一个请求会覆盖第一个请求,所以put用于修改资源

5、DELETE:删除资源

DELETE方法用来删除指定的资源

6、OPTIONS:查询支持的方法

查询指定的 URL能够支持的方法。会返回 Allow: GET, POST, HEAD, OPTIONS等请求方式内容

7、GET 和 POST 的区别
  • GET 用于获取数据、POST 用于提交数据
  • 报文格式不同
  • GET 使用 URL 传递请求参数,POST 使用 请求体提交数据
  • GET 是幂等的,POST 非幂等
    • 幂等就是指多次执行相同的操作,结果都是相同的

六、HTTP状态码

1、1xx 信息
  • 1xx 类状态码属于提示信息,是协议处理中的一种中间状态
2、2XX信息(表示服务器成功处理了客户端的请求)
  • 200:OK,最常见的成功状态码
  • 204:No Content,与200基本相同,但响应报文没有body数据
  • 206:Partial Content ,返回部分body数据
3、3XX信息(表示客户端请求的资源发生了变动,需要客户端重新发送)
  • 301:表示永久重定向,说明请求的资源已经不存在看,需改用新的URL再次访问
  • 302:表示临时重定向,说明请求的资源还在,需要用另一个URL访问
4、4XX信息(客户端发送的报文有错)
  • 400:表示客户端请求报文有错
  • 403:表示服务器禁止访问
  • 404:表示找不到资源
  • 405:表示服务器不支持客户端采用的请求方式
5、5XX信息
  • 500:服务器发生错误(代码抛异常)
  • 501:表示客户端请求的功能还不支持
  • 502:表示服务器自身工作正常,访问后端服务器发生错误
  • 503:服务器很忙,暂时无法响应

七、连接管理

1、短连接和长连接
  • HTTP 1.0 默认使用短连接,如果使用长连接,则使用 Connection : Keep-Alive
  • 短连接就是每次进行通信时,都要创建一次独立的TCP连接
  • HTTP 1.1 改用为长连接,也叫持久性连接,如果要断开连接,需要由客户端或者服务器端提出断开,使用 Connection : close
  • 长连接就是建立一次TCP连接,便可以完成多次通信
  • 长连接减轻了服务器端的负载

16-短连接与长连接.png

2、管线化连接
  • 批量提交多个 HTTP请求,这个过程中不需要先等服务器的回应
  • 管线化连接建立在长连接基础之↑做的改装

HTTP1_x_Connections.png

八、HTTP 和 HTTPS 的区别

  • HTTP 的信息是明文传输,存在安全性问题,HTTPS 则解决 HTTP 不安全的缺陷,在 TCP 和 HTTP 网络层之间加入了 SSL 安全协议,使得报文能够加密传输
  • HTTP 连接建立相对简单, TCP 三次握手之后便可进行 HTTP 的报文传输。而 HTTPS 在 TCP 三次握手之后,还需进行 SSL 的握手过程,才可进入加密报文传输
  • HTTP 的端口号是 80,HTTPS 的端口号是 443
  • HTTPS 协议需要向 CA(证书权威机构)申请数字证书,来保证服务器的身份是可信的

九、HTTPS 的工作原理

  • 用户通过浏览器请求https网站,服务器收到请求,选择浏览器支持的加密和hash算法,同时返回数字证书给浏览器,证书中包含:颁发机构、网址、公钥、证书有效期等信息。
  • 浏览器对证书的内容进行校验,如果有问题,则会有一个提示警告。否则,就生成随机秘钥X,同时使用证书中的公钥进行加密,并且发送给服务器。
  • 服务器收到之后,使用私钥解密,得到随机秘钥X,然后使用随机秘钥X对网页内容进行加密,返回给浏览器。
  • 浏览器则使用随机秘钥X和之前约定的加密算法进行解密,得到最终的网页内容

https.webp

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

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

相关文章

巨人互动|Facebook海外户Facebook内容的类型

随着人们日益依赖的社交媒体来进行信息获取与交流,Facebook作为全球最大的社交媒体平台之一,那么Facebook的内容都有哪些类型呢?下面小编来讲讲吧! 1、实时发生的事 我们需要实时了解时事动态,这样可以使用户对品牌发…

三个要点,掌握Spring Boot单元测试

单元测试是软件开发中不可或缺的重要环节,它用于验证软件中最小可测试单元的准确性。结合运用Spring Boot、JUnit、Mockito和分层架构,开发人员可以更便捷地编写可靠、可测试且高质量的单元测试代码,确保软件的正确性和质量。 一、介绍 本文…

AWS SAA知识点整理(作成中)

共通 一些信息已经更新了,但参考题的答案还是旧的。 比如: S3的最大读写性能已经提高到 3,500 PUT/COPY/POST/DELETE or 5,500 GET/HEAD requests per second 并且不再要求使用random prefix 题目中有时候会让选择Not violation 不合适的一项&#xff…

mybatisPlus代码生成器

一、添加和mybatisPlus相关的依赖 二、创建代码生成器类 package com.example.mybatisplus_generator.generator;import com.baomidou.mybatisplus.generator.FastAutoGenerator; import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;public class Co…

智算创新,美格智能助力智慧支付加速发展

9月21日,以“智算引领创新未来”为主题的紫光展锐2023泛物联网终端生态论坛在深圳举行。作为紫光展锐重要战略合作伙伴,美格智能标准模组产品线总经理郭强华、高级产品总监刘伟鹏受邀出席论坛。美格智能基于紫光展锐5G、4G、智能SoC、Cat.1 bis等芯片平台…

SpringCloud 简单的了解

什么是SpringCloud ? 基于 Spring Boot 的 Spring 集成应用程序,它利用 Spring Boot 的开发便利性简化了分布式系统的开发,提供与外部系统的集成。 如服务注册与发现、配置中心、负载均衡、断路器、消息总线、数据监控等;换句话说&#xff…

Zilliz@阿里云:大模型时代下Milvus Cloud向量数据库处理非结构化数据的最佳实践

大模型时代下的数据存储与分析该如何处理?有没有已经落地的应用实践? 为探讨这些问题,近日,阿里云联合 Zilliz 和 Doris 举办了一场以《大模型时代下的数据存储与分析》为主题的技术沙龙,其中,阿里云对象存储 OSS 上拥有海量的非结构化数据,Milvus(Zilliz)作为全球最有…

飞致云开源社区月度动态报告(2023年9月)

自2023年6月起,中国领先的开源软件公司FIT2CLOUD飞致云以月度为单位发布《飞致云开源社区月度动态报告》,旨在向广大社区用户同步飞致云旗下系列开源软件的发展情况,以及当月主要的产品新版本发布、社区运营成果等相关信息。 飞致云开源大屏…

django_auth_ldap登录权限

用户登录权限分为三种,通过is_active,is_staff,is_superuser标识。可以对组赋予对应的权限。 设定active组、staff组和superuser组分别对应三种权限。在不同组权限下的登录情况如下: 当用户不属于任何一组: 登录失败,提示如图&a…

MonkeyRunner测试步骤

首先把安卓SDK的 环境变量给配置好,这里就不再多解释,自己google 然后将自己的安卓设备打开调试模式,USB连接至电脑,运行CMD,输入命令adb devices 查看你的安卓设备的ID(ID后面写程序会调用),…

容器启动报错

容器启动报错 docker: Error response from daemon: driver failed programming external connectivity on endpoint XXX 如下: 据百度: 在docker启动后在,再对防火墙firewalld进行操作,就会发生上述报错 详细原因&#xff1a…

在EXCEL中构建加载项之创建加载项的目的及规范要求

【分享成果,随喜正能量】一句南无阿弥陀佛,本是释迦牟尼佛所证的无上正等正觉法,洒在娑婆世界的众生海中,只为末世众生能够以信愿之心抓住此救命稻草,要知道今世人此生的处境,可能只剩这道要么极乐要么三涂…

【DTEmpower案例操作教程】向导式建模

DTEmpower是由天洑软件自主研发的一款通用的智能数据建模软件,致力于帮助工程师及工科专业学生,利用工业领域中的仿真、试验、测量等各类数据进行挖掘分析,建立高质量的数据模型,实现快速设计评估、实时仿真预测、系统参数预警、设…

Android 导入ncnn-android-yolov8-seg : 实现人体识别和人像分割

1. 前言 上篇文章我们在Android中使用OpenCV实现了人脸识别,这篇文章我们使用OpenCVYOLOv8NCNN 来实现人像分割的功能。 首先来看下效果,这里会识别出人体,并会用蓝色的框框出来,并会有标签标注识别出的物体是什么,概…

038:mapboxGL 旋转地图(rotateTo)

第038个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+mapbox中旋转地图。 直接复制下面的 vue+mapbox源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例源代码(共68行)相关API参考:专栏目标示例效果 配置方式 1)查看基础设置:https://xiaozhuan…

1.centos7 安装显卡驱动、cuda、cudnn

安装conda 参考 python包 2.安装conda python库-CSDN博客3.Cenots Swin-Transformer-Object-Detection环境配置-CSDN博客 1.安装显卡驱动 步骤1:安装依赖 yum -y install kernel-devel yum -y install epel-release yum -y install gcc 步骤2:查询显…

python学习之路

python 初识python下载python安装python安装成功 idea中配置python环境并运行我的idea是2022版和上一个有点区别VSCode搭建Python开发环境(含Python环境搭建) 学习python 初识python 当我了解python时我决定试一试 首先了解一下什么是python,推荐廖雪峰老师的官网 python简介 …

深度使用了下 Serverless,太丝滑了

在 Serverless 架构下,开发者只需编写代码并上传,云平台就会自动准备好相应的计算资源,完成运算并输出结果,从而大幅简化开发运维过程。 云函数和 FaaS 最近在开发自己的小项目的时候,因为各种原因使用上了云函数这个…

力扣每日一题(+日常水几道题)

每日一题1333. 餐厅过滤器 - 力扣&#xff08;LeetCode&#xff09; 简单的按规则排序,去除几个不满足的条件然后排序返回即可 #include<algorithm> class Solution { public:vector<int> filterRestaurants(vector<vector<int>>& restaurants, …

找不到名称 “$“。是否需要安装 jQuery 的类型定义? 请尝试使用 `npm i --save-dev @types/jquery`。

vitevue3环境 1、安装jQuery npm install --save jquery 2、在main.ts文件进行配置 declare const window: any; import jQuery from jquery; window.$ window.jQuery jQuery; 注意&#xff1a;需要声明window属性&#xff1b; 要不然会报错&#xff1a;类型“Window &am…