消息队列篇--通信协议篇--理解HTTP、TLS和TCP如何协同工作

news2025/4/25 12:52:58

前面介绍了HTTP/HTTPS,SSL/TLS以及TCP和UDP,这些在网络传输上分别有着自己的作用。为了深入理解下这些概念,本篇重点介绍下HTTP、TLS 和 TCP是如何协同工作的?我们从底层到上层逐步分析每个协议的作用及其相互关系。这些协议共同协作确保数据在网络中的可靠传输和安全性。

1、TCP(Transmission Control Protocol)

TCP是一种面向连接的传输层协议,负责在客户端和服务器之间建立可靠的通信通道。

主要功能:

  • 可靠性:通过序列号和确认机制确保数据包按顺序到达且不丢失。
  • 流量控制:防止发送方发送过多的数据导致接收方溢出。
  • 拥塞控制:监控网络状态,避免网络拥塞。
  • 错误检测与纠正:通过校验和检测传输中的错误,并在必要时重传数据包。

2、TLS(Transport Layer Security)

TLS是一种加密协议,用于在客户端和服务器之间提供安全通信。它运行在TCP之上。

主要功能:

  • 加密:使用对称加密算法(如AES)加密数据,确保数据在传输过程中不被窃听。
  • 身份验证:通过数字证书验证服务器的身份,防止中间人攻击。
  • 完整性检查:使用消息认证码(MAC)确保数据未被篡改。
  • 密钥交换:通过握手过程生成共享的秘密密钥,用于后续的加密通信。

3、HTTP(HyperText Transfer Protocol)

HTTP是一种应用层协议,用于在客户端(通常是Web浏览器)和服务器之间传输超文本(如HTML文档)。它基于请求-响应模型工作,客户端发送请求,服务器返回响应。

4、三者协作工作流程

当用户在浏览器中输入一个URL并发起请求时,整个通信过程涉及以下几个步骤:

(1)、建立TCP连接

首先,客户端需要与服务器建立一个TCP连接。这个过程称为“三次握手”(Three-Way Handshake),确保双方都准备好进行通信。

三次握手的过程:
1、SYN:客户端向服务器发送一个SYN(同步)消息,表示希望建立连接,并包含一个初始序列号。
2、SYN-ACK:服务器回应一个SYN-ACK消息,表示同意建立连接,并包含自己的初始序列号。
3、ACK:客户端发送一个ACK(确认)消息,确认收到服务器的SYN-ACK消息,并完成连接建立。

此时,客户端和服务器之间的TCP连接已经建立,可以开始传输数据。

(2)、TLS握手(可选)

如果客户端请求的是HTTPS(即HTTP over TLS),则需要在TCP连接的基础上进行TLS握手,以建立安全的通信通道。

TLS握手的过程:
1、Client Hello:客户端向服务器发送一个Client Hello消息,包含支持的TLS版本、加密套件列表、客户端随机数等信息。
2、Server Hello:服务器回应一个Server Hello消息,选择一个双方都支持的加密套件,并发送服务器的数字证书(之后使用CA公钥验证),服务器公钥、服务器随机数等信息。
3、客户端验证证书:客户端验证服务器的数字证书,确保其真实性。如果验证失败,握手终止。(客户端使用使用CA的公钥验证证书签名的正确性和时效性等)
4、密钥交换:客户端生成一个预主密钥,并使用服务器的公钥对其进行加密,然后发送给服务器。服务器使用自己的私钥解密预主密钥,双方根据Client Random、Server Random和Pre-Master Secret计算出会话密钥。
5、加密通信准备就绪:双方交换Finished消息,确认握手成功。此后,所有通信都将使用会话密钥进行加密。

此时,客户端和服务器之间的TLS连接已经建立,可以开始加密通信。

(3)、HTTP请求与响应

一旦TCP连接(或TLS 连接)建立完成,客户端就可以通过HTTP协议向服务器发送请求,服务器返回响应。

HTTP请求的示例:

GET /index.html HTTP/1.1
Host: www.example.com

HTTP响应的示例:

HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Content-Length: 137

<!DOCTYPE html>
<html>
<head>
    <title>Example</title>
</head>
<body>
    <h1>Hello, World!</h1>
</body>
</html>

如果使用了HTTPS,则所有HTTP请求和响应都会在TLS加密通道中传输,确保数据的安全性。

(4)、流程图示例

以下是HTTP、TLS和TCP协同工作的详细流程图:
在这里插入图片描述
解释:
1、TCP连接建立:

  • 客户端通过三次握手与服务器建立TCP连接。(SYN,SYN-ACK,ACK)
  • 这一步确保了双方能够可靠地传输数据。
    2、TLS握手(仅HTTPS):
  • 如果是HTTPS请求,客户端和服务器将进行TLS握手。(Client Hello-到-Client Finished)
  • 双方协商加密套件,验证服务器证书,生成会话密钥。
  • 此后,所有通信将使用会话密钥进行加密。
    3、HTTP请求与响应:
  • 客户端通过已建立的TCP或TLS连接发送HTTP请求。
  • 服务器处理请求并返回HTTP响应。
  • 如果使用了HTTPS,所有请求和响应都在加密通道中传输。
    4、关闭连接:
  • 当数据传输完成后,客户端和服务器可以通过四次挥手关闭TCP连接。
  • 四次挥手确保双方都能正确关闭连接,释放资源。

5、总结

  • TCP提供了底层的可靠传输服务,确保数据包按顺序到达且不丢失。
  • TLS在TCP之上增加了加密和身份验证功能,确保数据的安全性和完整性。
  • HTTP是应用层协议,负责定义客户端和服务器之间的请求和响应格式。

通过这种分层结构,HTTP、TLS和TCP协同工作,确保了网络通信的可靠性、安全性和效率。如果你使用的是HTTPS,那么所有的HTTP请求和响应都会在TLS加密通道中传输,从而保护数据免受窃听和篡改。

逆风翻盘,Dare To Be!!!

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

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

相关文章

代码随想录算法训练营第三十四天 | 62.不同路径 63.不同路径II 343.整数拆分

62.不同路径 题目链接&#xff1a;62. 不同路径 - 力扣&#xff08;LeetCode&#xff09; 文章讲解&#xff1a;代码随想录 视频讲解&#xff1a;动态规划中如何初始化很重要&#xff01;| LeetCode&#xff1a;62.不同路径_哔哩哔哩_bilibili 思路&#xff1a;机器人位于一…

2023第十四届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组(真题题解)(C++/Java题解)

记录刷题的过程、感悟、题解。 希望能帮到&#xff0c;那些与我一同前行的&#xff0c;来自远方的朋友&#x1f609; 大纲&#xff1a; 1、日期统计-&#xff08;解析&#xff09;-暴力dfs&#xff08;&#x1f609;蓝桥专属 2、01串的熵-&#xff08;解析&#xff09;-不要chu…

RK3568-适配ov5647摄像头

硬件原理图 CAM_GPIO是摄像头电源控制引脚,连接芯片GPIO4_C2 CAM_LEDON是摄像头led灯控制引脚,连接芯片GPIO4_C3编写设备树 / {ext_cam_clk: external-camera-clock {compatible = "fixed-clock";clock-frequency = <25000000>;clock-output-names = "…

实战篇Redis

黑马程序员的Redis的笔记&#xff08;后面补一下图片&#xff09; 【黑马程序员Redis入门到实战教程&#xff0c;深度透析redis底层原理redis分布式锁企业解决方案黑马点评实战项目】https://www.bilibili.com/video/BV1cr4y1671t?p72&vd_source001f1c33a895eb5ed820b9a4…

沉浸式体验测评|AI Ville:我在Web3小镇“生活”了一周

最近&#xff0c;我在朋友的推荐下&#xff0c;体验了 aivillebot 的项目。起初&#xff0c;我只是抱着试试看的心态&#xff0c;心想这不就是个 Web3 版的《星露谷物语》吗&#xff1f; 但是一周下来&#xff0c;我发现这个虚拟小镇也没那么简单——里面的居民不是目前端游或链…

TTL 值 | 在 IP 协议、ping 工具及 DNS 解析中的作用

注&#xff1a;本文为 “TTL” 相关文章合辑。 未整理去重。 如有内容异常&#xff0c;请看原文。 TTL 值的意义 2007-10-18 11:33:17 TTL 是 IP 协议包中的一个值&#xff0c;用于标识网络路由器是否应丢弃在网络中停留时间过长的数据包。数据包可能因多种原因在一定时间内…

人工智能之数学基础:初等反射阵

本文重点 在线性代数中,初等反射阵(Householder矩阵)作为一类特殊的正交矩阵,在矩阵变换、特征值计算及几何变换等领域具有广泛应用。其简洁的构造方式和丰富的数学性质,使其成为数值分析和几何处理中的重要工具。 什么是初等反射阵(豪斯霍尔德变换) I为单位矩阵,wwT…

4.1 代码随想录第三十二天打卡

准备:完全背包理论基础-二维DP数组 1.完全背包就是同一物品可以往里多次装 2.这里先遍历背包 或物品都可以 3.dp[i][j] 表示从下标为[0-i]的物品&#xff0c;每个物品可以取无限次&#xff0c;放进容量为j的背包&#xff0c;价值总和最大是多少 518.零钱兑换II (1)题目描述…

SQL Server:数据库镜像端点检查

目录标题 **1. 端点的作用****2. 检查的主要内容****&#xff08;1&#xff09;端点是否存在****&#xff08;2&#xff09;端点状态****&#xff08;3&#xff09;协议与端口****&#xff08;4&#xff09;权限配置** **3. 操作步骤&#xff08;示例&#xff09;****&#xff…

【区块链安全 | 第九篇】基于Heimdall设计的智能合约反编译项目

文章目录 背景目的安装1、安装 Rust2、克隆 heimdall-dec3、编译 heimdall-dec4、运行 heimdall-dec 使用说明1、访问 Web 界面2、输入合约信息3、查看反编译结果 实战演示1、解析普通合约2、解析代理合约 背景 在区块链安全研究中&#xff0c;智能合约的审计和分析至关重要。…

批量删除 txt/html/json/xml/csv 等文本文件空白行

我们常常会遇到需要删除 txt 文本文件中空白行的情况&#xff0c;如果文本文件较大&#xff0c;行数较多的时候&#xff0c;有些空白行不容易人工识别&#xff0c;这使得删除文本文件空白行变得非常繁琐&#xff0c;我们需要先找到空白的行&#xff0c;然后才能进行删除操作。尤…

ES5内容之String接口

注意&#xff1a;slice、substr、substring 都接受一个或两个参数&#xff0c;第一个参数指定字符串的开始位置&#xff0c;第二个参数表示子字符串到哪里结束&#xff0c;slice 和 substring 的第二个参数指定的是子字符串的最后一个字符后面的位置&#xff0c;substr 第二个参…

Mysql之事务(下)

&#x1f3dd;️专栏&#xff1a;Mysql_猫咪-9527的博客-CSDN博客 &#x1f305;主页&#xff1a;猫咪-9527-CSDN博客 “欲穷千里目&#xff0c;更上一层楼。会当凌绝顶&#xff0c;一览众山小。” 目录 5. 事务的隔离级别与并发控制 5.1事务的隔离级别 5.2查看与设置事务的…

某地老旧房屋自动化监测项目

1. 项目简介 自从上个世纪90年代以来&#xff0c;我国经济发展迅猛&#xff0c;在此期间大量建筑平地而起&#xff0c;并且多为砖混结构的住房&#xff0c;使用寿命通常约为30-50年&#xff0c;钢筋混凝土结构&#xff0c;钢结构等高层建筑&#xff0c;这些建筑在一般情况下的…

【QT】QT的多界面跳转以及界面之间传递参数

QT的多界面跳转以及界面之间传递参数 一、在QT工程中添加新的界面二、多界面跳转的两种情况1、A界面跳到B界面&#xff0c;不需要返回2、A界面跳到B界面&#xff0c;需要返回1&#xff09;使用this指针传递将当前界面地址传递给下一界面2&#xff09;使用parentWidget函数获取上…

【学习笔记】计算机网络(五)

第5章 运输层 文章目录 第5章 运输层5.1 运输层协议概述5.1.1 进程之间的通信5.1.2 运输层的两个主要协议5.1.3 运输层的端口 5.2 用户数据报协议 UDP5.2.1 UDP 概述5.2.2 UDP的首部格式 5.3 传输控制协议 TCP 概述5.3.1 TCP 最主要的特点5.3.2 TCP 的连接 5.4 可靠传输的工作原…

鸿蒙NEXT小游戏开发:记忆翻牌

1. 引言 在本案例中&#xff0c;我们将使用鸿蒙NEXT框架开发一个简单的记忆翻牌游戏。该游戏的核心逻辑是玩家通过翻转卡片来寻找匹配的对。本文将详细介绍游戏的实现过程&#xff0c;包括卡片的展示、匹配逻辑以及用户交互。 2. 开发环境准备 电脑系统&#xff1a;windows 1…

Java常用工具算法-2--加密算法1--对称加密算法(推荐AES算法)

1、定义与核心原理 定义&#xff1a;加密和解密使用相同密钥的算法。工作流程&#xff1a; 秘钥协商&#xff1a;双方需提前通过安全信道共享密钥。加密过程&#xff1a;发送方用密钥对明文加密&#xff0c;生成密文。解密过程&#xff1a;接收方用相同密钥对密文解密&#xf…

RK3588使用笔记:导出做好的文件系统

一、前言 初始镜像一般都比较空&#xff0c;当费劲八嘞的装了一堆环境之后&#xff0c;得知设备还要在做n套&#xff0c;想想每一套都要无穷的调试配置和在线更新一堆安装包&#xff0c;是不是脑壳痛&#xff0c;所以导出文件系统的功能就有需求了&#xff0c;本文介绍如何导出…

py常用函数

concat dropna 注意&#xff1a;dropna会返回一个新的DataFrame&#xff0c;不会修改原始数据。若想要修改&#xff0c;可以使用inplaceTrue 默认情况是axis0&#xff0c;删除包含NaN的行 import pandas as pd df pd.DataFrame({A:[1,2,None],B:[3,None,0],C:[4,5,6] }) d…