http“超级应用与理解”

本篇文章来介绍一下http协议和其应用

1.http协议是在OSI模型的哪一层

HTTP(超文本传输协议)是应用层协议,它是在 OSI 模型的最高层,即第七层——应用层。HTTP 通过互联网来传输数据和信息,主要用于 Web 浏览器和 Web 服务器之间的通信,以及客户端与服务器之间的文件传输、查询和请求响应等操作

2.http协议真正的请求流程

  • 客户端向服务器发起请求,请求中包含使用的TLS版本号、生成的一个随机数、以及客户端支持的加密方法。

  • 服务器端接收到请求后,确认双方使用的加密方法和TLS版本号、并给出服务器的证书、以及一个服务器生成的随机数。

  • 客户端确认服务器证书有效后,生成一个新的随机数,并使用数字证书中解密拿到的服务器公钥,加密这个随机数,然后发给服务器。

  • 服务器使用自己的私钥,来解密客户端发送过来的随机数。这样服务器就拿到了第三个随机数。而且只有客户端和服务器端知道这第三个随机数,因为第三个随机数是通过加密传输的。

  • 客户端和服务器端根据约定的加密方法使用前面的三个随机数,生成会话秘钥,以后的对话过程都使用这个秘钥(即会话秘钥)来加密信息。

  • 以后客户端和服务器端都使用这个会话秘钥来加密。

 

 http1和http2的区别(http1版本和http2版本):

1.新的二进制格式:HTTP2采用二进制格式而HTTP1使用文本格式。

2.多路复用:HTTP2是完全多复用的,而非有序并阻塞的,只需一个连接即可实现并行。HTTP1一个连接只能发送一个请求。

3.首部压缩:HTTP1.x的header带有大量信息,而且每次都要重复发送,HTTP2.0使用encoder来减少需要传输的header大小,通讯双方各自cache一份header fields表,既避免了重复header的传输,又减小了需要传输的大小。

4.服务器推送:HTTP2在客户端请求资源的时候,会把相关的资源一起发送给客户端,而不需要客户端再次发起请求获取资源。

http2.0介绍

HTTP/2(超文本传输协议第2版,最初命名为HTTP 2.0),是HTTP协议的的第二个主要版本,使用于万维网。HTTP/2是HTTP协议自1999年HTTP 1.1发布后的首个更新,主要基于SPDY协议(是Google开发的基于TCP的应用层协议,用以最小化网络延迟,提升网络速度,优化用户的网络使用体验)。

http代码实例:

#include <iostream>  
#include <httplib.h>  int main() {  // 创建一个httplib的客户端  httplib::Client cli("example.com");  // 准备请求的路径  const char* path = "/api/data";  // 发送GET请求  auto res = cli.Get(path);  // 检查响应状态码  if (res->status == 200) {  // 请求成功,打印响应内容  std::cout << "Response content:" << std::endl;  std::cout << res->body << std::endl;  } else {  // 请求失败,打印错误信息  std::cerr << "Error: " << res->status << " " << httplib::status_message(res->status) << std::endl;  if (!res->error.empty()) {  std::cerr << "Error message: " << res->error << std::endl;  }  }  return 0;  
}

总结: http 是互联网上常用的协议 随着版本的变化而变化 http1是文本格式 http2是二级制格式 

连接可以实现并行 这是跟http1最大的区别 

linux环境编译代码(bash)命令:

 g++ -std=c++11 your_file.cpp -o your_program -lhttplib

your_program是工程名称 

好了 本篇文章就介绍到这里 在这里 小编想给大家推荐一个性价比高的课程:

https://xxetb.xetslk.com/s/2PjJ3T

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

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

相关文章

前端开发,Vue的双向数据绑定的原理

目录 一、什么是前端 二、Vue.JS框架 三、双向数据绑定 四、Vue的双向数据绑定的原理 一、什么是前端 前端通常指的是网页或应用程序中用户直接交互和感知的部分&#xff0c;也称为客户端。前端开发涉及使用HTML、CSS和JavaScript等技术来构建用户界面和交互功能。前端开发…

SW2000TSN-千兆百兆车载以太网TSN交换机

更多资讯可以进入官网查看或者联系我们http://www.hdn-vdo.com

【分享】JLINK的SW调试模式连线方式

大家知道&#xff0c;JLINK有2种调试模式&#xff1a;JTAG和SWD&#xff08;串行模式&#xff09;。 JTAG是常用模式&#xff0c;大家都熟悉、不废话了&#xff1b;如果使用SW模式&#xff0c;需要&#xff08;只需要&#xff09;4根连线&#xff0c;连接方式如下&#xff1a; …

360安全浏览器_360se15.1.1453.64_优化版_【屏蔽文件关联】

360安全浏览器15正式版(360SE15)是基于Chromium内核的双核浏览器,Chromium内核提升至114,支持Win7系统,新增夜间模式,自动模式动态切换支持IE内核.各类实用功能,安全保护技术,丰富皮肤库,风格多样化. 360安全浏览器_360se6.64位_优化版 360安全浏览器PC官方版下载丨最新版下载…

GPT-4对编程开发的支持

在编程开发领域&#xff0c;GPT-4凭借其强大的自然语言理解和代码生成能力&#xff0c;能够深刻理解开发者的意图&#xff0c;并基于这些需求提供精准的编程指导和解决方案。对于开发者来说&#xff0c;GPT-4能够在代码片段生成、算法思路设计、模块构建和原型实现等方面给予开…

进程间通信——管道

文章目录 进程间通信的介绍进程间通信的目的进程间通信的本质 匿名管道创建管道匿名管道的特征 命名管道小结 进程间通信的介绍 进程间通信简称IPC&#xff08;Interprocess communication&#xff09;&#xff0c;进程间通信就是在不同进程之间传播或交换信息。 进程间通信的…

BulingBuling[Beyond the To-Do List] - 《让金钱为你服务》 [ Make Money Work for You ]

与《财务自由: 赚到足够的钱的有效方法》作者Grant的简短访谈 让钱为你工作 超越待办事项清单 主持人&#xff1a;Erik Fisher Make Money Work for You Beyond the To-Do List Hosted by Erik Fisher 与Erik Fisher一起探索如何确定你生活中最大的财务杠杆以及使用它们的最佳方…

01_02_mysql04_数据类型

MySQL中的数据类型 整数类型 TINYINTSMALLINTMEDIUMINTINT(或INTEGER)BIGINT 浮点类型 FLOATDOUBLE 定点数类型 DECIMAL 位类型 BIT 日期时间类型 YEARTIMEDATEDATETIMETIMESTAMP 文本字符串类型 CHARVARCHARTINYTEXTTEXTMEDIUMTEXTLONGTEXT 枚举类型 ENUM 集合类型 SET 二进制…

在Postgresql 下安装QGIS

安装QGIS的前提是需要 在windows下安装Postgres&#xff0c;具体可以参考文章&#xff1a; Windows 安装和连接使用 PgSql数据库 安装GIS的具体步骤如下&#xff1a; 一.打开 Application Stack Builder 二.选择默认端口和安装目标 三.选择【Spatial Extensions】 四.选择安装…

1414 - 期末考试成绩排名

题目描述 期末考试结束了&#xff0c;数学成绩已经出来。 数学老师请你帮忙编写一个程序&#xff0c;可以帮助老师对班级所有同学的考试分数按照由高到低进行排序&#xff0c;并输出按照成绩排序后每个同学的学号、姓名、数学成绩。 输入 第一行是一个整数 n&#xff08; n…

【图像分割 2024 ICLR】Conv-LoRA

【图像分割 2024 ICLR】Conv-LoRA 论文题目&#xff1a;CONVOLUTION MEETS LORA: PARAMETER EFFICIENT FINETUNING FOR SEGMENT ANYTHING MODEL 中文题目&#xff1a;卷积满足lora:分段任意模型的参数有效微调 论文链接&#xff1a;https://arxiv.org/abs/2401.17868 论文代码&…

【微服安全】API密钥和令牌与微服务安全的关系

什么是 API 密钥和令牌 API 密钥 API 密钥是一串用于识别应用程序或用户的字符串。它通常用于授权应用程序或用户访问 API。API 密钥可以是公开的&#xff0c;也可以是私有的。公开的 API 密钥可供任何人使用&#xff0c;而私有的 API 密钥只能由授权的应用程序或用户使用。 …

线代往事(二)特征值的几何含义

已知 A v λ v Av λv Avλv&#xff0c;即 A v λ I v Av λ\mathrm{I}v AvλIv&#xff0c;即 A v I ( λ v ) Av \mathrm{I}(λv) AvI(λv)。回顾线代往事&#xff08;一&#xff09;可知&#xff0c;如果矩阵可逆&#xff0c;则有 I y A x \mathrm{I}y\mathrm{A}x Iy…

LabVIEW焊缝缺陷超声检测与识别

LabVIEW焊缝缺陷超声检测与识别 介绍基于LabVIEW的焊缝缺陷超声检测与识别系统。该系统利用LabVIEW软件和数据采集卡的强大功能&#xff0c;实现了焊缝缺陷的在线自动检测&#xff0c;具有通用性、模块化、功能化和网络化的特点&#xff0c;显著提高了检测的效率和准确性。 随…

c++类和对象新手保姆级上手教学(上)

前言&#xff1a; c其实顾名思义就是c语言的升级版&#xff0c;很多刚学c的同学第一感觉就是比c语言难学很多&#xff0c;其实没错&#xff0c;c里的知识更加难以理解可以说杂且抽象&#xff0c;光是类和对象&#xff0c;看起来容易&#xff0c;但想完全吃透&#xff0c;真的挺…

PlatformIO 推荐工程配置

常见的 [env] 具有通用选项的可选配置环境 所有人之间共享 [env:NAME]platformio.ini 中的环境 文件。 如果配置文件有很多&#xff0c;这非常有用 环境 [env:NAME]他们共享共同的设置。 例如&#xff1a; [env] platform ststm32 framework stm32cube board nucleo_l152r…

Rust 初体验4

《Rust语言圣经》入门实战的前两节中&#xff0c;介绍了 minigrep 程序设计过程&#xff0c;包括命令行设计、参数接收、文件读取、模块化和错误处理等。其功能是从指定文件中查找字符串。 代码包括两部分&#xff1a;main.rs&#xff0c;lib.rs。下面对代码简单做了注释。 m…

N-144基于微信小程序在线订餐系统

开发工具&#xff1a;IDEA、微信小程序 服务器&#xff1a;Tomcat9.0&#xff0c; jdk1.8 项目构建&#xff1a;maven 数据库&#xff1a;mysql5.7 前端技术&#xff1a;vue、ElementUI、 Vant Weapp 服务端技术&#xff1a;springbootmybatisredis 本系统分微信小程序和…

luigi,一个好用的 Python 数据管道库!

🏷️个人主页:鼠鼠我捏,要死了捏的主页 🏷️付费专栏:Python专栏 🏷️个人学习笔记,若有缺误,欢迎评论区指正 前言 大家好,今天为大家分享一个超级厉害的 Python 库 - luigi。 Github地址:https://github.com/spotify/luigi 在大数据时代,处理海量数据已经成…

Attention Is All Your Need论文笔记

论文解决了什么问题&#xff1f; 提出了一个新的简单网络架构——transformer&#xff0c;仅仅是基于注意力机制&#xff0c;完全免去递推和卷积&#xff0c;使得神经网络训练地速度极大地提高。 We propose a new simple network architecture, the Transformer, based sole…