【网络】HTTP

news2024/11/25 7:11:49

在上面的文章中,我们学习了网络的基础,和网络中一个伟大的标准 OSI 7层模型。通过上篇文章,我们可以知道网络模型最上层为应用层,那么这篇文章就让我们来一起看一下,我们开发过程中绕不开的一个非常著名的应用层协议, HTTP 协议 。

文章内容整理自 B 站 码上小白 up 主的教学视频,本文仅用作个人学习整理总结,欢迎大家多多去观看 up 的原视频 视频地址 ,谢谢大家。

一、HTTP 基础

HTTP 全称是超文本传输协议 HyperText Transfer Protocol,HTTP 最初设计就是为了传输超文本 (HTML),协议是指数据传输要遵循的规则 。

我们平时开发的时候,我们自己的电脑就是服务器,我们都会有一些想展示在浏览器前端界面上的资源,比如文本、图片、视频等等 。所以我们的服务器需要和浏览器进行通信,将我们要展示的资源传递给浏览器,同时浏览器接收到我们服务器发送过去的资源后,要进行解析和展示,HTTP 协议就是运行在这个浏览器和服务器通信过程上的协议。

在这里插入图片描述

1.1 HTTP 通信过程

首先,我们都知道 HTTP 是运行在应用层上的协议,而其在数据传输层用的是 TCP 协议 。一次 HTTP 通信过程如下:

浏览器 和 服务器 间建立 TCP 连接,然后浏览器发送 GET 请求,服务器响应 html 资源给浏览器,最后断开 TCP 连接 。

在这里插入图片描述

1.2 HTTP 协议报文结构

上面我们了解了一次 HTTP 通信过程,那么在这个过程中传输的 HTTP 报文结构是怎样的呢 ? 本节将介绍这个内容 :

1.2.1 请求报文

  • 请求行 : 包括请求方法(GET,POST),请求的目标资源 URI,以及使用的 HTTP 版本号
  • 请求头:key - value 形式
  • 空行
  • 消息体

在这里插入图片描述

1.2.2 响应报文

  • 状态行:HTTP 版本号、状态码、原因(补充状态码的文字)
  • 响应头:key - value 格式
  • 空行:
  • 消息体:

在这里插入图片描述

我们在浏览器输入网址后,浏览器将其装换为 HTTP 请求报文发给服务器 ,服务器按照协议约定解析报文,然后准备数据,再按照协议约定发送响应报文,浏览器解析报文,确认数据,呈现我们面前 。

二、HTTP 发展

在这里插入图片描述

2.1 HTTP 0.9 ——

用于浏览器和服务器间数据传输的简单协议,其简单体现在:

  • 只能传输超文本数据
  • 只能执行 GET 请求

HTTP 0.9 的请求报文和响应报文如下:

在这里插入图片描述

2.2 HTTP 1.0

  • 支持多数据格式

在这里插入图片描述

HTTP 1.0 通过在请求和响应报文增加头信息来描述传输数据的元信息 —— Content-Type

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • 缓存机制

在这里插入图片描述

在这里插入图片描述

2.3 HTTP 1.1

  • 持久连接的机制

在这里插入图片描述

  • 管道机制

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

三、HTTPS

网站中的弹窗广告,是因为网站被劫持然后被植入了恶意代码导致的。 HTTPS 可以加密数据传输,防止数据被篡改 。

在这里插入图片描述

3.1 对称加密技术

使用相同秘钥和算法对数据进行加解密的技术 —— 秘钥泄漏会导致不安全

客户端请求秘钥, 服务器响应秘钥,服务器传给客户端用该秘钥加密的数据,客户端用相同秘钥进行解密。

3.2 非对称加密技术

使用不同的秘钥对数据进行加解密的技术,其使用一对秘钥对数据进行加解密,一个是公共传输的公钥,另一个是秘密存放的私钥。公钥加密的数据由私钥来解密,私钥加密的数据由公钥来解密。 —— 加解密速度较慢 。

在这里插入图片描述

在这里插入图片描述

客户端请求公钥,服务器响应公钥,客户端发送用公钥加密的请求,服务器用私钥加密数据,发送给客户端,客户端再用公钥解密 。

3.3 HTTPS 流程图

在这里插入图片描述

3.4 数字证书

数字证书是由权威的、受信任的机构 CA 颁发的。

HTTP 最初设计是用于共享和传输,不考虑数据的安全性。 —— 也就是说 HTTP 不考虑中间人攻击 ,通过 HTTP 传输的数据会被窃取和篡改 。

HTTPS 即在 TCP 和 HTTP 间 再加一层安全协议 —— TLS , 即 HTTPS 是 HTTP 和 TLS 的结合体

在这里插入图片描述

TLS —— 广泛采用的安全性协议 —— 其通过 记录协议 和 握手协议保证数据的安全传输

在这里插入图片描述

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

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

相关文章

FANUC机器人CC-Link总线通信相关配置的具体方法和步骤详解

FANUC机器人CC-Link总线通信相关配置的具体方法和步骤详解 1. 基本说明 2. 采用CC-Link通信的前提条件 机器人需要安装软件:CC-link Interface(Slave) A05B-*-J786 机器人需要安装硬件通信板卡:CC-Link Remote Device Station PCB A05B- * -J110 通信板卡的安装步骤:

第八章 模块

内容框架 8.1 模块介绍 引入模块 import 模块名 通过一句话,计算机就在指定的位置找到了模块文件,并准备好该文件拥有之后会用到的函数和属性。 引入模块本质上就是在一个python文件中引入另一个python文件 引入模块在文档中还可以设置别名:…

没有权限merge到源git仓库?一招教你如何解决。

在git上贡献项目的时候,一般步骤是,clone源项目到本地,切出一个新的分支,然后在新分支上开发,最后push到远程,然后提出mr。但是对于一些非开源的项目,可能会出现: 这就是说明没有权…

mp4是什么格式?如何录制mp4格式的视频?

案例:怎样录制mp4格式的视频? 【我发现网上大部分视频都是mp4格式,我也想在电脑上录制mp4格式的视频。有没有小伙伴知道录制的方法?】 日常生活中,mp4格式已经成为了我们最常用的视频格式之一。它具有高质量、高压缩…

chatgpt赋能python:Python主进程:一步步了解Python中最重要的进程

Python主进程: 一步步了解Python中最重要的进程 在Python编程中,进程是非常重要的一个概念。Python主进程是Python程序在启动的时候默认创建的一个进程,它是整个程序的核心。在使用Python进行开发的时候,了解Python主进程的概念和功能是非常…

gitlab搭建与认证登录

gitlab搭建与认证登录 gitlab的安装配置gitlab中Ldap认证配置 gitlab的安装配置 参考链接: Gitlab 仓库搭建(详细版) 以下4项注意点: gitlab安装包,直接访问在浏览器上下载速度很慢,可复制链接到迅雷中进…

淘宝店铺所有商品数据接口

淘宝店铺所有商品数据接口是淘宝提供的一种可以获取某个淘宝店铺所有商品信息的接口。通过该接口,可以获取到该店铺的所有商品信息,包括商品的标题、价格、销量、评分等。接口返回的数据格式为JSON格式,可以方便地处理数据。 我们可以通过调…

[论文评析]C-Mixup: Improving Generalization in Regression, NeurIPS,2022

C-Mixup: Improving Generalization in Regression 前言C-MixupReferences 前言 Mixup方法是针对分类任务的, 这篇方法相当于时提出了regression版本的Mixup, 实验证实能够大幅提升在regression task上的泛化能力. C-Mixup 是否可以把Mixup直接用于Regression task呢? 在原…

仓储服务-采购业务

1.合并采购需求 请求参数 {purchaseId: 1, //整单iditems:[1,2,3,4] //合并项集合 }(1) 合并时如果未选择合并的采购单,则先新建采购单然后合并到新建的采购单 新建的采购单,可以手动给采购单分配人员 (2)合并时选中了采购单…

linuxOPS基础_运维概述,及其泛概念

运维岗位定义 什么是运维? ​ 在技术人员(写代码的)之间,一致对运维有一个开玩笑的认知:运维就是修电脑的、装网线的、背锅的岗位。 ​ IT运维管理是指为了保障企业IT系统及网络的可用性、安全性、稳定性&#xff0…

学习go的操作(本人已有c的基础,请思考后再看)

建立一个文件(我的第一个文件是hellow.go),后在终端执行一下几步:我用的是go build先编译成了可执行文件(.exe)【1.go build hellow.go 2.hellow.exe】。当然,你也可以用go run直接运行【…

【c语言习题】函数递归调用实现汉诺塔

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c语言系列专栏&#xff1a;c语言之路重点知识整合 &#x…

stable-diffusion安装controlnet插件

1、通过url安装controlnet插件 1&#xff09;extensions → install from URL → install 然后填入&#xff1a;https://github.com/Mikubill/sd-webui-controlnet 2&#xff09;installed → apply and restart UI 2、下载模型 下载controlnet模型&#xff08;50G左右&#…

chatgpt赋能python:Python交互:让你的编程更高效

Python 交互&#xff1a;让你的编程更高效 Python 是一门功能强大的编程语言&#xff0c;拥有大量的第三方库、工具和框架&#xff0c;能够帮助开发者实现各种各样的功能和应用。在 Python 编程中&#xff0c;交互&#xff08;Interactive&#xff09;模式是一种非常重要的工具…

探索基于人工智能的手机在网时长风险评估

引言 在当今竞争激烈的商业环境中&#xff0c;企业面临着不断增长的风险和挑战。为了保持竞争优势和提供优质的用户体验&#xff0c;企业需要能够准确评估用户的风险&#xff0c;并提供个性化的服务来满足不同用户的需求。 本文将介绍如何结合手机在网时长、手机在网状态和手…

Flutter控件之CircularProgressIndicator

CircularProgressIndicator的作用 Flutter中的CircularProgressIndicator是一个圆形进度指示器&#xff0c;用于表示正在进行的任务的进度。它通常用于长时间运行的任务&#xff0c;例如文件下载、网络请求等。CircularProgressIndicator可以在圆周上旋转&#xff0c;以表示正…

丽江“美丽县城”建设,高精度地籍免像控案例分享

一、项目背景 云南省地矿测绘院于2020年6月承接丽江市玉龙县“美丽县城”建设项目1&#xff1a;500倾斜摄影及地形图测绘项目。项目要求对玉龙县城区及其周边等约30平方公里区域进行优于3CM倾斜摄影测量。 并基于三维模型完成地形高程点、地貌、地物特征点的采集成图&#xf…

leetcode203. 移除链表元素

个人主页&#xff1a;平行线也会相交 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 平行线也会相交 原创 收录于专栏【LeetCode】 &#x1f353;希望我们一起努力、成长&#xff0c;共同进步。 题目链接 给你一个链表的头节点 head 和一个整数 val &…

Docker安装OpenWrt

我笔记本MacOs安装Docker OpenWrt 失败了,网络一直容器内外无法访问. 今天使用虚拟机安装一下,虚拟机使用Parallels,系统使用kali 一、安装docker sudo apt install docker.io 二、把网卡混杂模式打开 根据您当前的ip查看网卡&#xff01;&#xff01;&#xff01; 在您的liu…

如何在华为OD机试中获得满分?Java实现【数组的中心位置】一文详解!

✅创作者&#xff1a;陈书予 &#x1f389;个人主页&#xff1a;陈书予的个人主页 &#x1f341;陈书予的个人社区&#xff0c;欢迎你的加入: 陈书予的社区 &#x1f31f;专栏地址: Java华为OD机试真题&#xff08;2022&2023) 文章目录 1. 题目描述2. 输入描述3. 输出描述…