http“超级应用与理解”

简介: 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

相关文章
|
3天前
|
缓存 Linux Shell
RHEL7部署http应用配置共享yum源
RHEL7部署http应用配置共享yum源
109 0
|
2天前
|
JavaScript 前端开发
Angular.js 应用里如何发送 HTTP 请求
Angular.js 应用里如何发送 HTTP 请求
19 3
|
3天前
|
安全 网络协议 算法
【计算机网络】http协议的原理与应用,https是如何保证安全传输的
【计算机网络】http协议的原理与应用,https是如何保证安全传输的
|
3天前
|
缓存 运维 Serverless
Serverless 应用引擎产品使用之在阿里函数计算中,使用签名认证调用HTTP触发器的步骤如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
301 7
|
3天前
|
运维 Serverless API
Serverless 应用引擎产品使用之阿里函数计算中要关掉http触发器的jwt认证才可以进行性能探测如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
16 1
|
3天前
|
运维 Serverless API
Serverless 应用引擎产品使用之阿里函数计算中http类型的函数 FC,内网地址如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
15 1
|
3天前
|
程序员
深入理解HTTP协议本质与应用
HTTP是一个在计算机世界里专门在两点之间传输文字、图片、音频、视频等超文本数据的约定和规范。简单来说,如果你不懂HTTP协议,那就相当于是个只有“半桶水”的程序员。在这个课程中,带你一起花最少的时间,用最少的精力,掌握最多、最全面、最系统的HTTP相关知识
14 3
深入理解HTTP协议本质与应用
|
3天前
|
数据采集 缓存 监控
Socks5 与 HTTP 代理在网络安全中的应用
Socks5 与 HTTP 代理在网络安全中的应用
16 0
|
7月前
|
Go
Golang 语言怎么使用 net/http 标准库开发 http 应用?
Golang 语言怎么使用 net/http 标准库开发 http 应用?
27 0
|
3天前
|
存储 安全 Java
从HTTP到Tomcat:揭秘Web应用的底层协议与高性能容器
从HTTP到Tomcat:揭秘Web应用的底层协议与高性能容器