前端HTTP协议传输以及背后的原理总结

news2025/1/22 18:10:11

一、HTTP在前端的地位      

  HTTP 是一种用作获取诸如 HTML 文档这类资源的协议。它是 Web 上进行任何数据交换的基础,同时,也是一种客户端—服务器(client-server)协议,也就是说,请求是由接受方——通常是 Web 浏览器——发起的。完整网页文档通常由文本、布局描述、图片、视频、脚本等资源构成。

二、HTTP,HTTPS与SSL

HTTP与HTTPS

HTTP

HTTPS

是什么

一种用于分布式、协作式和超媒体信息系统的应用层协议

一种透过计算机网络进行安全通信的传输协议

发送过程

每次请求都需要建立新的 TCP 连接, 请求结束后连接会关闭。客户端直接发送 HTTP 请求给服务器, 如果服务器可用, 就返回 HTTP 响应, 过程简单快速。

客户端要验证服务器的数字证书和签名 CA, 确保服务器合法后, 通过“SSL 握手”协商加密算法, 建立安全连接。连接建立后才会发送 HTTPS 请求。请求结束也不会关闭连接, 能够复用连接。

与服务器的连接方式

无连接状态的协议,HTTP 直接建立在 TCP(传输控制协议)之上

先建立 SSL/TLS 安全连接, 再封装 HTTP 请求

安全性差异

明文传输,数据都是未加密的,安全性较差

HTTPS(SSL+HTTP) 数据传输过程是加密的,安全性较好

响应速度差异

HTTP 使用 TCP 三次握手建立连接,客户端和服务器需要交换 3 个包

TCP 的三个包+ ssl 握手需要的 9 个包=12个包

二者关系

HTTPS前身

HTTP 通信接口部分由 SSL 和 TLS 替代成为了HTTPS

SSL

SSL

是什么

Secure Sockets Layer安全套阶层,提供私密性,信息完整性和身份认证

应用场景

HTTPS

协议结构

SSL记录协议层的作用是为高层协议提供基本的安全服务。

SSL纪录协议针对HTTP协议进行了特别的设计,使得超文本的传输协议HTTP能够在SSL运行。纪录封装各种高层协议,具体实施压缩解压缩、加密解密、计算和校验MAC等与安全有关的操作。

SSL握手协议层

SSL握手协议(SSL HandShake Protocol)、SSL密码参数修改协议(SSL Change Cipher Spec Protocol)

SSL告警协议(SSL Alert Protocol)

握手层的这些协议用于SSL管理信息的交换,允许应用协议传送数据之间相互验证,协商加密算法和生成密钥等。

二、OSI(Open System Interconnection)

        HTTP协议位于应用层的一个网络传输协议,OSI参考模型提供了更加系统与全面的数据传输流程。

TCP/IP参考模型

通信设备

协议

OSI参考模型

功能

传输数据的单位

传输流程

应用层

对不同种类的应用程序它们会根据自己的需要来使用应用层的不同协议。

加密、解密、格式化数据

建立或解除与其他节点的联系

应用程序/计算机

邮件传输应用使用了SMTP协议、

万维网应用使用了HTTP协议、

远程登录服务应用使用了有TELNET协议

DNS、WWW、FTP、P2P、EMAIL/PPP

应用层

应用层中包含了若干独立的用户通用服务协议模块,为网络用户之间的通信提供专用的程序服务

报文(message)

站点一次性要发送的数据块

用户通过应用程序向应用层提出了一系列应用请求

JPEG、MP3、AVI、DOC

表示层

处理在两个通信系统中交换信息的表示方式,主要包括数据格式变化、数据加密与解密、数据压缩与解压等

报文(message)

收到了发送邮件的请求,将需要传输的数据进行编码和转换

TCP、SIP、RTP、RPC-Named pips

会话层

负责维护两个节点之间的传输联接,确保点到点传输不中断,以及管理数据交换等功能

报文(message)

与服务器建立会话,三次握手与四次挥手,完成数据传输后,表示层断开连接,终止会话

传输层

路由器—IP地址寻址

TCP、UDP、SCTP、SSL、TLS

传输层

网络体系结构中高低层之间衔接的一个接口层,为用户提供End—to—End(端到端)服务,处理数据包错误、数据包次序等传输问题

报文(segment)

起始点和目的地都是传输层的信息单元

将来自各种应用程序的数据合并到一个数据流中,对数据进行处理,开始数据传输

网络层

可以进行网络连接的建立和终止以及IP地址的寻找等功能

交换机—MAC地址寻址

IP、IPX、ICMP、ARP、OSPF、IGMP和RARP等

网络层

为数据在节点之间传输创建逻辑链路,通过路由选择算法为分组选择最佳路径,从而实现拥塞控制、网络互联等功能

数据包(Packet)

在分组交换网络中传输的格式化数据单元(控制信息->表头信息; 负载->数据本身)

找到数据要发送的地址。根据网络的编址,跟踪设备在网络中的位置,计算出最佳数据传输路径

物理层

网络接口层是传输数据的物理媒介,也为网络层提供一条准确无误的线路

物理介质—双绞线、光纤

SDLC、HDLC、PPP、STP和帧中继等

数据链路层

在通信实体间建立数据链路联接,为网络层提供差错控制和流量控制服务。

通过硬件地址找到每一台设备

RS-232、Rj45、V.34/100BASE-TX、SDH

物理层

利用传输介质为数据链路层提供物理联接,负责数据流的物理传输工作

比特流

将数据转化成光信号、电信号,通过光缆、铜缆传输

三、Cookie、session与token

Cookie

session

token

是什么

在客户端存储数据的技术

Web应用程序中的一种机制,用于存储用户的会话信息

一种在客户端和服务端之间传递身份信息的方式

作用

由服务器发送给客户端的小型文本文件,在客户端发送请求时,浏览器会自动将相应的 Cookie 信息发送给服务器,服务器通过读取 Cookie 信息,就可以判断该请求来自哪个客户端。

每一个客户端与服务端连接,服务端都会为该客户端创建一个 session,并将 session 的唯一标识 sessionId 通过设置 Set-Cookie 头的方式响应给客户端,客户端将 sessionId 存到 cookie 中。

当用户登录成功后,服务端会生成一个 Token,将其发送给客户端。客户端在后续的请求中,需要将 Token 携带在请求头或请求参数中。服务端通过验证 Token 的合法性,就可以确定该请求来自哪个用户,并且可以根据用户的权限进行相应的操作。

使用场景

存储用户的登录状态、购物车信息

在用户访问Web应用程序时,服务器会为每个用户创建一个Session对象,用于存储该用户的会话信息,例如登录状态、购物车信息等。

由一串字符组成的令牌,用于在计算机系统中进行身份验证和授权。

它通常由三个部分组成:标头、有效载荷、签名

存储

浏览器或本地

只能存储String类型

单个cookie保存的数据<=4KB,一个站点最多保存20个Cookie

浏览器

存储任意java对象

没有上限,但session不要存放过多东西

体积很小

自由操作存储在哪里

对服务器的压力

保管在客户端,不占用服务器资源

保管在服务器端,每个用户都会产生一个session,服务器压力大

无需消耗服务器内存资源,它相当于只存了用户 id,session 相当于存储了用户的所有信息

安全性

会遭受 CSRF 攻击

存储在客户端,不够安全

存储在服务端更安全

安全,因为 token 一般只有用户 id。查询速度慢,因为 token 只存了用户 id,每次需要去查询数据库。

跨域支持

不支持跨域名访问

支持跨域名访问

跨域处理较为方便,比如多台服务器之间可以共用一个 token。

二者联系

sessionId 是 cookie 和 session 之间的桥梁。

session 和 token 本质上是没有区别的,都是对用户身份的认证机制,只是他们实现的校验机制不一样而已

token令牌----浏览器与服务器的交互

  1. 标头(Header):包含了算法和类型,用于指定如何对有效载荷进行编码和签名。常用的算法有HMAC、RSA、SHA等。
  2. 有效载荷(Payload):包含了一些信息,如用户ID、角色、权限等,用于验证身份和授权。有效载荷可以是加密的,也可以是明文的。
  3. 签名(Signature):是对标头和有效载荷进行签名后得到的值,用于验证token的完整性和真实性。签名通常使用私钥进行签名,并使用公钥进行验证。

一个完整的token包含了标头、有效载荷和签名三个部分,它们一起构成了一个安全的令牌,用于进行身份验证和授权。

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

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

相关文章

城市应急指挥系统

城市应急指挥系统的重要性 随着现代化城市的高速发展&#xff0c;我们面临着多种应急突发情景&#xff0c;如自然灾害、事故灾难、公共卫生事件以及社会安全事件等。这些事件对城市的安全稳定构成严重威胁&#xff0c;因此&#xff0c;建立一套高效、全面的城市应急指挥系统显…

【软考高级】系统架构设计师复习笔记-精华版

文章目录 前言0 系统架构设计师0.1 考架构还是考系分0.2 架构核心知识0.3 架构教材变化 1 计算机操作系统1.1 cpu 组成1.2 内核的五大功能1.3 流水线技术1.4 段页式存储1.5 I/O 软件1.6 文件管理1.7 系统工程相关 2 嵌入式2.1 嵌入式技术2.2 板级支持包&#xff08;BSP&#xf…

NSDT 3DConvert:高效实现大模型文件在线预览与转换

NSDT 3DConvert 作为一个 WebGL 展示平台&#xff0c;能够实现多种模型格式免费在线预览&#xff0c;并支持大于1GB的OBJ、STL、GLTF、点云等模型进行在线查看与交互&#xff0c;这在3D模型展示领域是一个相当强大的功能。 平台特点 多格式支持 NSDT 3DConvert兼容多种3D模型…

STL 剖析

STL 六大组件 「STL 六大组件的交互关系」 Container 通过 Allocator 取得数据储存空间Algorithm 通过 Iterator 存取 Container 内容Functor 可以协助 Algorithm 完成不同的策略变化Adapter 可以修饰或套接 Functor、Iterator 配置器(allocator) 配置器&#xff1a;负责空间…

买卖股票的最佳时机 IV - 困难

************* C topic&#xff1a;188. 买卖股票的最佳时机 IV - 力扣&#xff08;LeetCode&#xff09; ************* Stock angin: Still stocks. Intuitively, it feels hard. For once: class Solution { public:int maxProfit(vector<int>& prices) {in…

#{ }和${ } 、参数处理

目录 #{ }和${ } 参数处理 入参-parameterType 使用Map 使用Bean / List<Bean> 使用多参数 Param注解&#xff08;命名参数&#xff09; 出参-resultType 返回Map / List<Map> 返回Map<String,Map> 属性名不一致-resultMap结果映射 #{ }和${ }…

机器学习探索之旅:开启智能预测的新篇章!!! 笔记 ! ! !)

目录 一 . 机器学习基础&#xff1a; 1. 什么是机器学习&#xff1a; Langley&#xff08;1996&#xff09;的定义&#xff1a; Tom Mitchell&#xff08;1997&#xff09;的定义&#xff1a; 冷雨泉&#xff08;等&#xff09;的观点&#xff1a; 2. 机器学习与人工智能…

【RAII | 设计模式】C++智能指针,内存管理与设计模式

前言 nav2系列教材&#xff0c;yolov11部署,系统迁移教程我会放到年后一起更新&#xff0c;最近年末手头事情多&#xff0c;还请大家多多谅解。 上一节我们讲述了C移动语义相关的知识&#xff0c;本期我们来看看C中常用的几种智能指针&#xff0c;并看看他们在设计模式中的运…

基于单片机的病房呼叫系统设计

摘 要&#xff1a; 文章基于 51 系列的单片机设计的病房呼叫系统 。 在以 AT89C51 单片机为核心&#xff0c;以 74HC573 锁存器 、数码管显示模块、 矩阵按键模块等为辅组成的&#xff0c;按键分布在各个病床的床头&#xff0c;可以节约接口资源&#xff0c;当按下按键&a…

编译原理复习---目标代码生成

适用于电子科技大学编译原理期末考试复习。 1. 目标代码 是目标机器的汇编代码或机器码&#xff0c;在本课程中指的是类似于汇编代码的一种形式&#xff0c;由一条条的指令构成目标代码。 抽象机指令格式&#xff1a;OP 目的操作数&#xff0c;源操作数。 我们要做的&…

Redis数据对象

基本结构图 key和value指向的是redisObject对象 type&#xff1a;标识该对象用的是什么类型&#xff08;String、List Redis数据结构 SDS SDS有4个属性&#xff1a; len&#xff1a;记录了字符串长度&#xff0c;因此获取字符串长度的时候时间复杂度O&#xff08;1&#xff…

Gale-Shapley算法

一. 设计目的 盖尔-沙普利算法&#xff08;Gale-Shapley算法&#xff09;的设计目的是为了解决稳定匹配问题&#xff0c;即在给定一组男性和女性的偏好列表的情况下&#xff0c;找到一个稳定的匹配。这里的“稳定”指的是不存在任何一对男性和女性&#xff0c;他们彼此都比当前…

JWT令牌与微服务

1. 什么是JWT JWT&#xff08;JSON Web Token&#xff09;是一种开放标准(RFC 7519)&#xff0c;它定义了一种紧凑且自包含的方式&#xff0c;用于作为JSON对象在各方之间安全地传输信息。JWT通常用于身份验证和信息交换。 以下是JWT的一些关键特性&#xff1a; 紧凑&#xff…

视频点播系统|Java|SSM|VUE| 前后端分离

【技术栈】 1⃣️&#xff1a;架构: B/S、MVC 2⃣️&#xff1a;系统环境&#xff1a;Windowsh/Mac 3⃣️&#xff1a;开发环境&#xff1a;IDEA、JDK1.8、Maven、Mysql5.7 4⃣️&#xff1a;技术栈&#xff1a;Java、Mysql、SSM、Mybatis-Plus、VUE、jquery,html 5⃣️数据库可…

docker部署Melody开源音乐管理工具

Melody是一款非常实用的开源音乐管理工具。它不仅功能强大、操作简便&#xff0c;还支持多平台检索和一键下载/上传功能。更重要的是&#xff0c;它还支持一键“解锁”无法播放的歌曲和多端适配。如果你也是音乐爱好者&#xff0c;不妨试试Melody&#xff0c;让你的音乐生活更加…

问题小记-达梦数据库报错“字符串转换出错”处理

最近遇到一个达梦数据库报错“-6111: 字符串转换出错”的问题&#xff0c;这个问题主要是涉及到一条sql语句的执行&#xff0c;在此分享下这个报错的处理过程。 问题表现为&#xff1a;一样的表结构和数据&#xff0c;执行相同的SQL&#xff0c;在Oracle数据库中执行正常&…

day4:tomcat—maven-jdk

一&#xff0c;java项目部署过程 编译&#xff1a;使用javac命令将.java源文件编译成.class宇节码文件打包&#xff1a;使用工具如maven或Gradle将项目的依赖、资源和编译后的字节码打包成一个分发格式&#xff0c;如.jar文件&#xff0c;或者.war文件(用于web应用&#xff09…

【D3.js in Action 3 精译_046】DIY 实战:在 Observable 平台利用饼图布局函数实现 D3 多个环形图的绘制

当前内容所在位置&#xff1a; 第五章 饼图布局与堆叠布局 ✔️ 5.1 饼图和环形图的创建 ✔️ 5.1.1 准备阶段&#xff08;一&#xff09;5.1.2 饼图布局生成器&#xff08;二&#xff09;5.1.3 圆弧的绘制&#xff08;三&#xff09;5.1.4 数据标签的添加&#xff08;四&#…

Swin transformer 论文阅读记录 代码分析

该篇文章&#xff0c;是我解析 Swin transformer 论文原理&#xff08;结合pytorch版本代码&#xff09;所记&#xff0c;图片来源于源paper或其他相应博客。 代码也非原始代码&#xff0c;而是从代码里摘出来的片段&#xff0c;配上简单数据&#xff0c;以便理解。 当然&…

Vscode搭建C语言多文件开发环境

一、文章内容简介 本文介绍了 “Vscode搭建C语言多文件开发环境”需要用到的软件&#xff0c;以及vscode必备插件&#xff0c;最后多文件编译时tasks.json文件和launch.json文件的配置。即目录顺序。由于内容较多&#xff0c;建议大家在阅读时使用电脑阅读&#xff0c;按照目录…