本篇文章来介绍一下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