网络——HTTP与HTTPS三次握手和四次挥手

HTTP协议本身并不直接处理TCP连接的建立和关闭,这些是由底层的TCP协议来完成的。但是,由于HTTP通常运行在TCP之上,因此理解TCP的三次握手(用于建立连接)和四次挥手(用于关闭连接)对于理解HTTP通信过程是非常有帮助的。

三次握手 (Three-way Handshake)

三次握手是TCP协议中用于在网络中的两个节点之间建立连接的过程。这个过程确保了双方都准备好进行数据传输,并且能够互相发送和接收数据。

  1. 客户端 -> 服务器:客户端发送一个SYN(同步序列编号)包到服务器,表示想要建立连接。
  2. 服务器 -> 客户端:服务器收到SYN后,会回复一个ACK(确认)以及自己的SYN给客户端。
  3. 客户端 -> 服务器:客户端收到服务器的SYN+ACK后,发送一个ACK给服务器,表明已经收到了服务器的响应。

此时,连接正式建立,可以开始传输数据。

四次挥手 (Four-way Handshake)

当一方或双方决定终止连接时,就会启动四次挥手过程。这个过程确保了双方都能正确地结束会话并且释放资源。

  1. 客户端 -> 服务器:客户端发送一个FIN(结束)包给服务器,表示客户端不再发送数据。
  2. 服务器 -> 客户端:服务器回应一个ACK,确认收到了客户端的FIN。
  3. 服务器 -> 客户端:服务器发送自己的FIN给客户端,表示服务器也结束了数据传输。
  4. 客户端 -> 服务器:客户端回应一个ACK,确认收到了服务器的FIN。

在某些情况下,最后一步的ACK可能与第二步的ACK合并成一个步骤,但标准流程是四步。

时序图

下面是三次握手和四次挥手的简单时序图:

三次握手

四次挥手

这里用文字描述了一个简单的时序图。在实际应用中,可以使用专业的绘图工具如Microsoft Visio、Lucidchart等来创建更直观的图形化表示。

HTTPS的三次握手与四次挥手

HTTPS在HTTP的基础上增加了SSL/TLS层进行加密通信。因此,HTTPS的三次握手不仅涉及TCP的三次握手,还涉及SSL/TLS握手过程。同样地,HTTPS的四次挥手与HTTP的四次挥手基本相同,但在断开连接前需要确保所有加密数据都已成功传输且解密完成。

  1. HTTPS的三次握手

    • TCP三次握手:与HTTP的三次握手相同。
    • SSL/TLS握手:在TCP连接建立后,开始进行SSL/TLS握手过程。这包括客户端发送ClientHello消息、服务器回复ServerHello消息、服务器发送数字证书进行身份验证、客户端验证服务器证书的合法性、双方协商加密算法和生成加密密钥等步骤。
  2. HTTPS的四次挥手

    • 与HTTP的四次挥手基本相同。但在断开连接前,HTTPS需要确保所有加密数据都已成功传输且解密完成。之后,按照TCP的四次挥手过程断开连接。

需要注意的是,在SSL/TLS握手过程中,如果服务器需要客户端证书进行双向认证,则客户端也需要发送自己的证书给服务器进行验证。此外,SSL/TLS握手过程中还包括密钥交换和生成会话密钥等步骤,以确保后续通信的数据加密和安全性。

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

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

相关文章

使用历史索引监控 Elasticsearch 索引生命周期管理

作者:来自 Elastic Stef Nestor 大家好!在之前的一篇博客中,我们概述了常见的索引生命周期管理 (index lifecycle management - ILM) 问题及其解决方案。此后,我们已将这些常见场景添加到我们的 Elasticsearch 文档中,…

第 6 章 Java 并发包中锁原理剖析Part one

目录 6.1 LockSupport 工具类 6.2 独占锁 ReentrantLock 的原理 获取锁 1.void lock() 方法 2.void lockInterruptibly() 方法 3.boolean tryLock() 方法 4.boolean tryLock(long timeout, TimeUnit unit) 方法 释放锁 6.1 Lo…

详尽的oracle sql函数

1,CHR 输入整数,返回对应字符。 用法:select chr(65),chr(78) from dual; 2,ASCII 输入字符,返回对应ASCII码。 用法:select ascii(A),ascii(B) from dual; 3,CONCAT 输入两个字符串&#xff0c…

Android 单元测试断言校验方法 org.junit.Assert

判断布尔值 assertTrue assertFalse 判断对象非空 assertNull(object); 案例: PersistableBundle result Util.getCarrierConfig(mockContext, subId);assertNull(result); 判断是否相等 assertEquals("mocked_string", result.toString()); package or…

Django异步视图adrf解决办法

提问 在Django编写异步视图的时候会出现 AssertionError: Expected a Response, HttpResponse or HttpStreamingResponse to be returned from the view 或者 TypeError: sync_to_async can only be applied to sync functions. 诸如此类的错误的时候一般发生在异步视图中…

Python语法之正则表达式详解以及re模块中的常用函数

正则表达式详解及re模块中的常用函数 概念、作用和步骤 概念: 本身也是一个字符串,其中的字符具有特殊含义,将来我们可以根据这个字符串【正则表达式】去处理其他的字符串,比如可以对其他字符串进行匹配,切分&#xf…

算法训练营day28(回溯算法04:复原IP地址,子集,子集2)

28 第七章 回溯算法 ● 93.复原IP地址 ● 78.子集 ● 90.子集II 详细布置 93.复原IP地址 本期本来是很有难度的,不过 大家做完 分割回文串 之后,本题就容易很多了 题目链接/文章讲解:https://programmercarl.com/0093.%E5%A4%8D%E5%8E%9F…

【机器学习02--模型评估】

机器学习 --- 模型评估 你需要得到更好的模型,怎么判断模型更好呢?你需要先得到训练集和测试集,怎么划分它们呢?训练完模型之后,在验证集上测试的时候,用什么指标衡量好坏呢?云里雾里&#xff0…

NPM镜像详解

NPM镜像详解 什么是NPM镜像 NPM镜像(NPM Mirror)是一个完整的NPM包的副本服务器。由于npm的官方registry服务器部署在国外,国内访问可能会比较慢,因此使用镜像可以加快包的下载速度。 常用的NPM镜像源 npm官方镜像 https://reg…

Linux 查看系统资源常用命令

目录 Linux 查看系统资源常用命令 一、top 二、htop 三、vmstat 四、iostat 五、mpstat 六、free 七、sar 八、ps 九、pstree 十、lsof 十一、uptime 十二、dmesg 十三、dmidecode 十四、lsblk 十五、blkid 十六、fdisk -l 十七、parted -l 十八、df -h 十…

【计算机网络】实验4:生成树协议STP的功能以及虚拟局域网VLAN

实验 4:生成树协议STP的功能以及虚拟局域网VLAN 一、 实验目的 加深对生成树协议STP的功能的理解。 了解虚拟局域网VLAN。 二、 实验环境 • Cisco Packet Tracer 模拟器 三、 实验内容 1、验证交换机生成树协议STP的功能 (1) 第一步:构建网络拓…

Linux中的常用基本指令(下)

Linux常用基本指令 Linux中的基本指令12.head指令13.tail指令简单解释重定向与管道(重要) 14.date指令(时间相关的指令)15.cal指令(不重要)16.find指令(灰常重要)17.grep指令(重要)18.which指令和alias指令19.zip/unzip指令:20.tar指令(重要&…

服务器数据恢复—硬盘掉线导致热备盘同步失败的RAID5阵列数据恢复案例

服务器存储数据恢复环境: 华为S5300存储中有12块FC硬盘,其中11块硬盘作为数据盘组建了一组RAID5阵列,剩下的1块硬盘作为热备盘使用。基于RAID的LUN分配给linux操作系统使用,存放的数据主要是Oracle数据库。 服务器存储故障&#…

Vue+vite 组件开发的环境准备

一.nodejs安装 进入Node.js 官网(Node.js — Run JavaScript Everywhere),点击下载。 双击打开,进行安装 双击打开后,点击 next(下一步),后面也是一直点击 next 无其他设置,直到 …

20241129解决在Ubuntu20.04下编译中科创达的CM6125的Android10出现找不到库文件libtinfo.so.5的问题

20241129解决在Ubuntu20.04下编译中科创达的CM6125的Android10出现找不到库文件libtinfo.so.5的问题 2024/11/29 20:41 缘起:中科创达的高通CM6125开发板的Android10的编译环境需要。 [ 11% 15993/135734] target Java source list: vr [ 11% 15994/135734] target …

react 路由鉴权

权限路由一般两种 1中接口中返回菜单 2 接口中返回权限,前端做匹配 一般都是那种结合,react中没有vue那种钩子函数如何做? 在项目中写一个高阶函数,在高阶函数中判断权限、是否登录等操作app.tsx或者man.tsx中使用 《AuthRouter》…

Monkey操作及问题场景具体样例日志分析

目录 1. 应用崩溃 (App Crashes) 2. ANR (Application Not Responding) 3. 内存问题 (Memory Issues) 4、生成及查看日志: 1. 应用崩溃 (App Crashes) Monkey操作导致的场景: 你可以使用Monkey发送大量的点击事件、滑动操作或按键操作来模拟极端的…

k8s集群中金丝雀发布 + 声明式资源管理yaml

一、K8S常见的发布方式 旨在降低发布风险并提高发布速度 1、蓝绿发布 两套环境(设备)交替升级,旧版本保留一定时间便于回滚 优点:对用户无感,是最安全的发布方式,业务稳定 缺点:需要两套系统&…

openssl的运用

一、概述 Opssl是一个用于TLS/SSL协议的工具包,也是一个通用密码库。 包含了国密sm2 sm3 sm4,包含了对称加密,非对称加密,单项散列,伪随机、签名,密码交换,证书等一些算法库。 为了深层次的学习…

基于SpringBoot+Vue的靓车汽车销售网站-无偿分享 (附源码+LW+调试)

目录 1. 项目技术 2. 功能菜单 3. 部分功能截图 4. 研究背景 5. 研究目的 6. 可行性分析 6.1 技术可行性 6.2 经济可行性 6.3 操作可行性 7. 系统设计 7.1 概述 7.2 系统流程和逻辑 7.3 系统结构 8. 数据库设计 8.1 数据库ER图 (1)材料分…