当前位置: 首页 > news >正文

[杂学笔记]OSI七层模型作用、HTTP协议中的各种方法、HTTP的头部字段、TLS握手、指针与引用的使用场景、零拷贝技术

1.OSI七层模型作用

  • 物理层:负责光电信号的传输,以及将光电信号转化为二进制数据
  • 数据链路层:主要负责将收到的二进制数据进一步的封装为数据帧报文。同时因为数据在网络中传递的时候,每一个主机都能够收到报文数据,该层的MAC地址就阻止了并非传递给本主机的数据进一步向上交付。
  • 网络层:主要负责地址管理和路由选择,通过IP地址和内部维护的路由表,可以将数据传输到指定的目标主机上。一个报文在网络中并非是直达目标主机的,中间会经历无数个路由器设备,那么如何知道报文该走哪一条路线呢?就是网络层完成的工作了。
  • 传输层:主要负责两个主机进程的数据传输工作,确保数据可以以用户想要的方式进行传输。如果想要可靠的传输就采用TCP协议传输,如果想追求效率和实时性等就使用UDP协议进行网络传输。
  • 会话层:负责管理不同主机之间的连接。一个主机同一时间会和多个主机进行网络通信,那么就需要将这些连接管理起来。
  • 表示层:负责字符流数据的序列化和发序列化处理。
  • 应用层:负责实现网络服务的功能。对于服务器来说,就需要实现对客户端发送请求的解析工作,并对不同请求提供不同的服务,对于客户端来说,就需要有发送请求和解析响应数据的能力了。这些都是在应用层实现的。

        对于上三层主要的作用就是实现网络服务的,下面四层主要是负责两个主机之间的数据传递工作。

2.HTTP协议中的各种方法

  • GET:用于从服务器获取资源。他的请求参数会附加在URL后面,以键值对的形式存在。
  • POST:用于向服务器提交数据,通常服务器接收之后,会创建相应的实体,例如在数据库表中添加一条数据。他的请求参数会放在请求正文中。
  • PUT:用于向服务器上传指定的资源,通常用于更新已经存在的资源。通常是整体性的更新。
  • DELETE:用于请求服务器删除指定的资源。

3.HTTP的头部字段

  • 请求报文:请求行 + 属性字段。请求行分为:方法、url以及HTTP协议版本。
  • 响应报文:状态行 + 属性字段。状态行分为:HTTP协议版本、响应码以及响应码解释字段。

4.TLS握手

        TLS握手就是HTTPS进行密钥协商的一个过程。HTTPS协议加密采用的是非对称加密、CA认证进行密钥协商,以及对称加密的方式进行数据加密。首先服务端会先生成一对非对称密钥,然后将公钥和一些域名、申请者等相关信息生成.csr文件之后,向CA机构申请证书,CA机构认证后,会将证书内置给服务端。

        当有客户端想要进行连接的时候,服务端会先将带有公钥的CA认证证书发给客户端,客户端会使用CA机构的公钥解密签名,并将数据指纹与明文信息进行对比操作,防止中间人篡改公钥。之后生成一个对称密钥,并使用公钥进行加密操作,传递给服务器,服务器使用私钥进行解密,就完成了TLS握手的操作。

5.指针和引用的使用场景

        指针就是一个地址,他内部存放了区域的起始地址。可以用于接收动态分配的内存,在处理字符串和数组的时候,可以使用指针的算术运算,快速的定位元素,在创建数据结构的时候尤其是树和链表结构会大量的使用指针。对于引用来说底层的原理也是一个指针,只不过上层看起来是一个变量的别名,可以起到简化代码的操作。两者在传参和函数返回值的场景下,可以减少数据的拷贝工作。

6.零拷贝技术

介绍

        零拷贝技术是一种高效的数据传输技术,其核心目标就是减少在计算机系统在传输数据时的拷贝次数,从而降低CPU的使用率,提供数据传输效率,提供系统的性能。

        例如在从磁盘中读取数据并通过网络发送的过程当中就涉及到至少四次的拷贝。第一次拷贝:操作系统将数据从磁盘读取到内核空间的缓冲区。第二次拷贝:将数据从内核空间缓冲区拷贝到用户空间的应用程序缓冲区。第三次拷贝:应用程序处理完数据后,将数据从用户空间缓冲区拷贝回内核空间的套接字缓冲区。第四次拷贝:最后将数据从套接字缓冲区拷贝到网卡设备,通过网络发送出去。

        同时,在用户空间和内核空间之间的切换也会带来额外的开销,这种多次拷贝和上下文切换会消耗大量的 CPU 资源,降低系统的整体性能。

实现方式以及原理
  • 内存映射:使用mmap系统调用接口,可以将磁盘文件映射到用户虚拟地址空间当中,这样用户空间和内核空间可以共享一块物理内存。所以程序也可以直接访问这块内存,避免了数据从内核空间到用户空间的一次拷贝。否则的话,需要进行系统调用,进行文件的读取,然后层层拷贝到用户缓冲区,这样的话就涉及到了操作系统的参与,就需要进行内核态与用户态的转化操作了。
  • sendfile接口:允许内核直接将数据从磁盘文件传输到网络套接字文件中,无需将数据拷贝到用户空间了。相当于在内核空间完成数据的读取和发送。减少了两次拷贝。
  • 分散/聚集I/O操作:在用户层创建多个缓冲区,并允许内核一次将数据从多个缓冲区的数据聚集在一起发送,相当于将多次拷贝转化为了一次拷贝操作。或者将数据一次拷贝分散到多个缓冲区当中。

相关文章:

[杂学笔记]OSI七层模型作用、HTTP协议中的各种方法、HTTP的头部字段、TLS握手、指针与引用的使用场景、零拷贝技术

1.OSI七层模型作用 物理层:负责光电信号的传输,以及将光电信号转化为二进制数据数据链路层:主要负责将收到的二进制数据进一步的封装为数据帧报文。同时因为数据在网络中传递的时候,每一个主机都能够收到报文数据,该层…...

RK3568开发笔记-AD7616调试笔记

目录 前言 一、AD7616介绍 高分辨率 高速采样速率 宽模拟输入范围 集成丰富功能 二、原理图连接 三、设备树配置 四、内核驱动配置 五、AD芯片测试 总结 前言 在嵌入式数据采集领域,将模拟信号精准转换为数字信号至关重要。AD7616 作为一款性能卓越的 16 位模数转换器…...

Unity摄像机与灯光相关知识

一、Inspector窗口 Inspector窗口可以查看和编辑对象的属性以及设置 其中包含各种组件,例如用Cube对象来举例 1.Sphere(Mesh)组件: 用来决定对象的网格属性,例如球体网格为Sphere、立方体网格为Cube 2.Mesh Renderer组件: 用来设置…...

AI前端革新金融风控:ScriptEcho助力高效开发

1. 引言:金融风控的挑战与前端效率需求 在当今快速变化的金融环境中,风险评估和反欺诈已成为金融机构运营的核心。金融风控不仅关乎企业的盈利能力,更直接影响着整个金融体系的稳定。一个强大的风控系统需要能够实时监控、分析并预测潜在的风…...

STM32--SPI通信讲解

前言 嘿,小伙伴们!今天咱们来聊聊STM32的SPI通信。SPI(Serial Peripheral Interface)是一种超常用的串行通信协议,特别适合微控制器和各种外设(比如传感器、存储器、显示屏)之间的通信。如果你…...

CryptoJS库中WordArray对象支持哪些输出格式?除了toString() 方法还有什么方法可以输出吗?WordArray对象的作用是什么?

前言:这里只说js用的CryptoJS库里的相关内容,只用js来进行代码操作和讲解。 这里网上相关的帖子很少,不得已问了很长时间AI 想引用CryptoJS库情况分两种,一种是html引用,另一种是在Nodejs里引用。 一、引用CryptoJS库…...

第六次作业

一.对比 LVS 负载均衡群集的 NAT 模式和 DR 模式,比较其各自的优势 。 LVS-NAT模式的优势 配置简单:NAT模式的配置相对容易,无需复杂的网络设置,适合初学者和小型网络环境。 网络架构灵活:由于使用了NAT技术&#xf…...

八、Spring Boot:RESTful API 应用

创建第一个 Spring Boot RESTful API 应用 在现代 Web 开发中,RESTful API 是一种非常流行的设计风格,它基于 HTTP 协议,提供了简单、灵活的方式来构建网络应用。Spring Boot 作为一款强大的微服务框架,提供了丰富的工具和支持&a…...

Pytorch实现之混合成员GAN训练自己的数据集

简介 简介:提出一种新的MMGAN架构,使用常见生成器分布的混合对每个数据分布进行建模。由于生成器在多个真实数据分布之间共享,高度共享的生成器(通过混合权重反映)捕获分布的公共方面,而非共享的生成器捕获独特方面。 论文题目:MIXED MEMBERSHIP GENERATIVE ADVERSARI…...

微信小程序网络请求与API调用:实现数据交互

在前几篇文章中,我们学习了微信小程序的基础知识、数据绑定、事件处理以及页面导航与路由。这些知识帮助我们构建了具备基本交互功能的小程序。然而,一个完整的应用通常需要与服务器进行数据交互,例如获取用户信息、提交表单数据等。本文将深入探讨微信小程序的网络请求与AP…...

Cramér-Rao界:参数估计精度的“理论底线”

Cramr-Rao界:参数估计精度的“理论底线” 在统计学中,当我们用数据估计一个模型的参数时,总希望估计结果尽可能精确。但精度有没有一个理论上的“底线”呢?答案是有的,这就是Cramr-Rao界(Cramr-Rao Lower …...

nv docker image 下载与使用命令备忘

1,系统需求 Requirements for GPU Simulation GPU Architectures Volta, Turing, Ampere, Ada, Hopper NVIDIA GPU with Compute Capability 7.0 CUDA 11.x (Driver 470.57.02), 12.x (Driver 525.60.13) Supported Systems CPU architectures x86_64, ARM…...

C#连接sql server

连接时,出现如下提示: ERROR [IM014] [Microsoft][ODBC 驱动程序管理器] 在指定的 DSN 中,驱动程序和应用程序之间的体系结构不匹配 原因是odbc的驱动和应用程序的架构不一致。我的odbc如下所示: 显示为64位,而c#程序显…...

汽车智能制造企业数字化转型SAP解决方案总结

一、项目实施概述 项目阶段划分: 蓝图设计阶段主数据管理方案各模块蓝图设计方案下一阶段工作计划 关键里程碑: 2022年6月6日:项目启动会2022年12月1日:系统上线 二、总体目标 通过SAP实施,构建研产供销协同、业财一…...

vue2项目打包后js文件过大, 首次加载缓慢

vue2项目打包后js文件过大, 首次加载缓慢 安装插件 npm i compression-webpack-plugin6.1.1 -D配置vue.config.js const CompressionWebpackPlugin require(compression-webpack-plugin)module.exports {configureWebpack: {plugins:[new CompressionWebpackPlugin({filen…...

数据安全_笔记系列06:数据生命周期管理(存储、传输、使用、销毁)深度解析

数据安全_笔记系列06:数据生命周期管理(存储、传输、使用、销毁)深度解析 数据生命周期管理(存储、传输、使用、销毁)详解 数据生命周期管理(Data Lifecycle Management, DLM)是围绕数据从创建…...

机器学习数学基础:32.斯皮尔曼等级相关

斯皮尔曼等级相关教程 一、定义与原理 斯皮尔曼等级相关系数(Spearman’s rank - correlation coefficient),常用 ρ \rho ρ表示,是一种非参数统计量,用于衡量两个变量的等级之间的关联程度。它基于变量的秩次&…...

【AI-39】深度学习框架包含哪些内容

深度学习框架(如 PyTorch、TensorFlow)是用于构建和训练神经网络的工具,它们提供了底层的计算库、优化算法、张量操作等功能。而transformers库是基于这些深度学习框架构建的高级库,它封装了许多预训练模型和相关的工具&#xff0…...

uniapp h5支付宝支付

第1种&#xff0c;创建个div插入到body中 const div document.createElement(div); div.innerHTML 后端返回的form表单字符串; document.body.appendChild(div); document.forms[0].submit(); div.remove(); 第2种 <template> <view v-html"formAliPay"…...

探索YOLO技术:目标检测的高效解决方案

第一章&#xff1a;计算机视觉中图像的基础认知 第二章&#xff1a;计算机视觉&#xff1a;卷积神经网络(CNN)基本概念(一) 第三章&#xff1a;计算机视觉&#xff1a;卷积神经网络(CNN)基本概念(二) 第四章&#xff1a;搭建一个经典的LeNet5神经网络(附代码) 第五章&#xff1…...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;KubeSphere 容器平台高可用&#xff1a;环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集&#xff0c;包含8种湿地亚类&#xff0c;该数据以0.5X0.5的瓦片存储&#xff0c;我们整理了所有属于中国的瓦片名称与其对应省份&#xff0c;方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

STM32标准库-DMA直接存储器存取

文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取 DMA可以提供外设…...

OkHttp 中实现断点续传 demo

在 OkHttp 中实现断点续传主要通过以下步骤完成&#xff0c;核心是利用 HTTP 协议的 Range 请求头指定下载范围&#xff1a; 实现原理 Range 请求头&#xff1a;向服务器请求文件的特定字节范围&#xff08;如 Range: bytes1024-&#xff09; 本地文件记录&#xff1a;保存已…...

C++ 基础特性深度解析

目录 引言 一、命名空间&#xff08;namespace&#xff09; C 中的命名空间​ 与 C 语言的对比​ 二、缺省参数​ C 中的缺省参数​ 与 C 语言的对比​ 三、引用&#xff08;reference&#xff09;​ C 中的引用​ 与 C 语言的对比​ 四、inline&#xff08;内联函数…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现

摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序&#xff0c;以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务&#xff0c;提供稳定高效的数据处理与业务逻辑支持&#xff1b;利用 uniapp 实现跨平台前…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

Element Plus 表单(el-form)中关于正整数输入的校验规则

目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入&#xff08;联动&#xff09;2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)

本期内容并不是很难&#xff0c;相信大家会学的很愉快&#xff0c;当然对于有后端基础的朋友来说&#xff0c;本期内容更加容易了解&#xff0c;当然没有基础的也别担心&#xff0c;本期内容会详细解释有关内容 本期用到的软件&#xff1a;yakit&#xff08;因为经过之前好多期…...

Linux离线(zip方式)安装docker

目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1&#xff1a;修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本&#xff1a;CentOS 7 64位 内核版本&#xff1a;3.10.0 相关命令&#xff1a; uname -rcat /etc/os-rele…...