HTTP 与 HTTPS 的三次握手与四次挥手详解

news2024/11/15 21:37:03

文章目录

      • HTTP 与 HTTPS 的三次握手与四次挥手详解
      • 一、HTTP 的三次握手与四次挥手
        • 1. HTTP 三次握手
        • 2. HTTP 四次挥手
      • 二、HTTPS 的三次握手与四次挥手
        • 1. HTTPS(无证书)的三次握手与 SSL/TLS 握手
        • 2. HTTPS(有证书)的三次握手与 SSL/TLS 握手
        • 3. HTTPS 的四次挥手
      • 总结


HTTP 与 HTTPS 的三次握手与四次挥手详解

在互联网的世界中,HTTP(HyperText Transfer Protocol)和 HTTPS(HTTP Secure)是我们常见的两种网络协议。HTTP 是一种用于传输网页数据的协议,而 HTTPS 是在 HTTP 基础上加入了 SSL/TLS 加密层以确保数据安全的协议。两者都基于 TCP/IP 协议,因此在建立和断开连接时,都会经历“三次握手”与“四次挥手”的过程。本文将详细讲解这两种协议的三次握手与四次挥手的过程,并对 HTTPS 中有证书与无证书的情况进行区分。


我们先看看基本的计算机网络中的TCP连接建立和断开的过程。
在这里插入图片描述

一、HTTP 的三次握手与四次挥手

HTTP 基于 TCP 协议,使用 TCP 的三次握手建立连接,使用四次挥手断开连接。由于 HTTP 不涉及加密或证书,因此整个连接流程相对简单,直接使用 TCP 进行通信。

1. HTTP 三次握手

HTTP 的三次握手过程如下:

  1. 第一次握手(SYN)

    • 客户端发送一个 SYN(同步序列编号)包,请求建立连接。
    • 此时,客户端进入 “SYN_SENT” 状态。
  2. 第二次握手(SYN + ACK)

    • 服务器收到 SYN 包后,回复一个 SYN + ACK 包,表示确认收到客户端的请求,并发送了自己的 SYN 请求。
    • 服务器进入 “SYN_RECV” 状态。
  3. 第三次握手(ACK)

    • 客户端收到服务器的 SYN + ACK 包后,再次发送一个 ACK(确认)包给服务器,表示连接建立成功。
    • 此时,客户端和服务器都进入 “ESTABLISHED” 状态,可以进行数据传输。
2. HTTP 四次挥手

HTTP 的四次挥手用于安全地断开 TCP 连接,确保双方的数据传输完毕,并安全释放资源。

  1. 第一次挥手(FIN)

    • 客户端发送一个 FIN(结束)包给服务器,表示自己已经没有数据要发送了,要求断开连接。
    • 发送完 FIN 后,客户端进入 “FIN_WAIT_1” 状态。
  2. 第二次挥手(ACK)

    • 服务器收到 FIN 包后,回复一个 ACK 包给客户端,表示确认收到断开请求,但服务器可能还有数据要传输。
    • 服务器进入 “CLOSE_WAIT” 状态,客户端进入 “FIN_WAIT_2” 状态。
  3. 第三次挥手(FIN)

    • 服务器确认数据传输完毕后,向客户端发送 FIN 包,表示同意断开连接。
    • 服务器进入 “LAST_ACK” 状态。
  4. 第四次挥手(ACK)

    • 客户端收到服务器的 FIN 包后,回复一个 ACK 包给服务器,表示确认断开连接。
    • 客户端进入 “TIME_WAIT” 状态,等待一段时间(通常是 2 倍的最大报文段生存时间),确保服务器收到了 ACK 包后再彻底关闭连接。
    • 服务器收到 ACK 包后进入 “CLOSED” 状态,连接正式关闭。

二、HTTPS 的三次握手与四次挥手

HTTPS 在 HTTP 的基础上增加了 SSL/TLS 层进行加密通信。HTTPS 不仅仅是 TCP 的三次握手,还涉及 SSL/TLS 握手,用于确定双方使用的加密协议和密钥。因此,我们需要区分有证书和无证书的情况。

1. HTTPS(无证书)的三次握手与 SSL/TLS 握手

在一些特殊情况下(例如本地测试环境中),可能不会使用正式的 SSL/TLS 证书。此时的流程主要依赖于 TCP 三次握手和简单的加密协议协商,证书验证的部分被简化或跳过。

TCP 三次握手

  • 无证书情况下,HTTPS 的 TCP 三次握手步骤与 HTTP 相同,先通过 TCP 连接建立通信。

TLS 握手过程

  • SSL/TLS 握手开始在 TCP 三次握手之后,负责协商加密算法和生成加密密钥。无证书情况下,流程相对简化,跳过证书验证部分。

    1. ClientHello:客户端发送一个 ClientHello 消息,其中包含支持的加密算法和随机数。
    2. ServerHello:服务器响应 ServerHello,确认加密算法,并提供另一随机数。
    3. 密钥生成:双方基于这两个随机数,结合协商的加密算法生成共享密钥,用于后续通信的数据加密。
2. HTTPS(有证书)的三次握手与 SSL/TLS 握手

在正式应用中,HTTPS 通常需要服务器端证书,客户端也可能需要证书。在这种情况下,SSL/TLS 握手会更加复杂,涉及证书的验证过程。

TCP 三次握手

  • HTTPS 有证书情况下,TCP 三次握手的步骤与 HTTP 相同,先建立 TCP 连接。

SSL/TLS 握手过程

  • 连接建立后,SSL/TLS 握手开始,其主要目的是在双方之间建立安全的加密通道,以下是详细步骤:

    1. ClientHello

      • 客户端发送 ClientHello 消息,包含支持的 TLS 版本、加密算法、一个客户端随机数等。
    2. ServerHello

      • 服务器收到 ClientHello 后,回复 ServerHello 消息,确认 TLS 版本、加密算法,并提供一个服务器随机数。
    3. 服务器发送证书

      • 服务器发送其数字证书(通常是 CA 签发的),用于验证其身份。
    4. 客户端验证证书

      • 客户端验证服务器证书的合法性,确保其是由可信的证书颁发机构(CA)签发的,并且证书没有过期或被篡改。
      • 如果证书验证成功,继续握手流程;如果验证失败,握手失败,连接中断。
    5. 生成预主密钥

      • 客户端生成一个称为预主密钥的随机数,并使用服务器的公钥加密该随机数,发送给服务器。只有服务器可以使用其私钥解密该密钥。
    6. 双方生成主密钥

      • 服务器和客户端使用之前生成的随机数和预主密钥,基于协商的加密算法,生成主密钥。该密钥用于对接下来的通信进行加密。
    7. ClientFinished & ServerFinished

      • 客户端和服务器分别发送 Finished 消息,通知对方握手过程已完成,此时双方可以使用对称加密进行通信。
3. HTTPS 的四次挥手

HTTPS 的四次挥手与 HTTP 的四次挥手基本相同,因为它们都依赖于 TCP 的连接断开机制。唯一的区别在于 HTTPS 在断开连接前,确保所有加密数据都已成功传输且解密完成,之后才进行四次挥手的过程。


总结

HTTP 的三次握手和四次挥手:

  • 直接基于 TCP 进行通信,无加密层。
  • TCP 三次握手建立连接,四次挥手断开连接。

HTTPS 的三次握手和四次挥手:

  • 增加了 SSL/TLS 握手过程,确保数据的加密传输。
  • 有证书情况下,SSL/TLS 握手涉及证书验证和密钥交换过程。
  • 无证书情况下,SSL/TLS 握手流程简化,可能跳过证书验证,但仍然需要协商加密协议和密钥。

通过三次握手和四次挥手,HTTP 和 HTTPS 确保了可靠的连接建立与关闭,而 HTTPS 进一步通过 SSL/TLS 协议实现了数据加密和安全性提升。在实际应用中,HTTPS 应用广泛,因为它能够有效保护数据隐私,确保数据的安全传输。理解三次握手和四次挥手的机制,有助于我们更好地把握网络协议的工作原理,为开发和维护网络应用打下坚实的基础。

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

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

相关文章

vue-baidu-map的基本使用

前言 公司项目需求引入百度地图,由于给的时间比较短,所以就用了已经封装好了的vue-baidu-map 一、vue-baidu-map是什么? vue-baidu-map是基于vue.js封装的百度地图组件(官方文档) 二、使用步骤 1.下载插件 //我下载的版本 npm install …

注册讲堂 | 医疗器械组合包类产品常见问题(2)

问题一:组合包类产品的有效期应该如何确定? 组合包类产品的有效期以组件中最短有效期为最终产品有效期。 对于外购件,需要考虑组件购买时的剩余效期及影响效期主要因素,如材料老化、灭菌有效期等。 问题二:组合包类产…

【计算机网络强化】计网强化笔记

第一章 计算机网络体系结构 1.1 计算机网络概述 1.计算机网络由若干个节点和连接这些节点的链路组成 2. 3.计算机网络的组成 ①硬件、软件、协议 ②边缘部分和核心部分 ③通信子网和资源子网 4.电路交换、报文交换和分组交换 ①电路交换 分为三步:建立连接、…

基于SpringBoot+Vue的在线问诊管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏:Java精选实战项目…

SQL面试常见题目

SQL面试常见题目涉及多个方面,包括数据查询、数据操作、表的设计与优化等。以下列举一些经典的SQL面试题目,并附上解析答案: 1. 查询一张表中重复的数据 题目: 给定一个表 employees,包含 id, name, salary 列。如何…

大型语言模型(Large Language Models)的介绍

背景 大型语言模型(Large Language Models,简称LLMs)是一类先进的人工智能模型,它们通过深度学习技术,特别是神经网络,来理解和生成自然语言。这些模型在自然语言处理(NLP)领域中扮…

丢失照片/消息/文件,当发现没有备份 Android 手机数据时急救方法

当人们发现他们没有备份 Android 手机数据时,通常为时已晚。但是,我们都不想永久丢失珍贵的照片, 消息和其他文件。这就是为什么您应该检查 遵循 5 大免费 Android 数据恢复工具和最佳替代品 他们。 排名前五的免费 Android 数据恢复软件 1.奇…

ELK-01-elasticsearch-8.15.1安装

文章目录 前言一、下载elasticsearch二、将tar包放到服务器三、解压tar包四、更改配置文件五、添加启动用户六、用elasticserch用户启动6.1 报错6.2 解决问题16.3 解决问题26.4 再次用elasticserch用户启动6.5 windows浏览器打开 七、设置开机自动启动7.1 创建启动脚本7.2 在脚…

【C++】二、数据类型 (同C)

2.1 整形 无特殊情况,一般用int 2.2实型(浮点型) 1. 单精度 foat 2. 双精度 double 输入小数时默认double,定义变量时可以使用float转换为单精度 3. 可使用科学计数法表示小数(看得懂即可) 4. 用于浮点型用…

Excel--DATEDIF函数的用法及参数含义

DATEDIF函数的用法为: DATEDIF(start_date,end_date,unit),start_date表示的是起始时间,end_date表示的是结束时间。unit表示的是返回的时间代码,是天、月、年等。如下: Datedif函数的参数含义unit参数返回值的意义"y"两个时间段之间的整年数…

推荐使用10款源代码加密软件,保护核心源代码,减少泄密风险

在现代企业中,保护核心源代码的安全变得尤为重要。源代码不仅是产品的核心资产,也是黑客和竞争对手的目标。一旦代码泄露,不仅可能导致产品安全漏洞,还会使企业的知识产权面临威胁。为了解决这一问题,源代码加密软件能…

Java反序列化利用链篇 | CC1链的第二种方式-LazyMap版调用链【本系列文章的分析重点】

文章目录 CC1链的第二种方式-LazyMap版调用链LazyMap构造payloadCC1的调用链 系列篇其他文章,推荐顺序观看~ Java反序列化利用链篇 | JdbcRowSetImpl利用链分析Java反序列化利用链篇 | CC1链_全网最菜的分析思路【本系列文章的分析重点】Java反序列化利用链篇 | CC1…

人工智能之计算机视觉的发展历程与相关技术内容,相应的模型介绍

大家好,我是微学AI,今天给大家介绍一下人工智能之计算机视觉的发展历程与相关技术内容,相应的模型介绍。本文围绕计算机视觉这一领域,以问答的形式呈现了关键问题及详细解答。内容涵盖计算机视觉的基本概念、技术原理、应用场景等…

全方位洗衣洗鞋小程序系统,重塑干洗店服务新体验;

全方位洗衣洗鞋小程序系统,重塑干洗店服务新体验; 一、核心功能革新: 1.多元化下单模式:融合上门取送、到店服务、寄存网点及智能衣柜四种便捷方式,用户轻松一键下单,享受个性化服务。 2.从下单到送回,全程…

Kotlin高阶函数func

Kotlin高阶函数func fun sum(a: Int, b: Int, someFunc: () -> Unit) {println("${a b}")someFunc() }fun myFunc() {println("计算成功") }fun main() {sum(1, 2, ::myFunc) } 输出: 3 计算成功 Kotlin函数作为参数指向不同逻辑_ketlin 将…

ubuntu中通过源码安装pointnet2_ops_lib

注:本帖所用环境为:ubuntu 24.04、 cuda 12.04 文章目录 1. 克隆 PointNet 源码库2. 安装依赖3. 编译 pointnet2_ops_lib4. 测试安装 1. 克隆 PointNet 源码库 首先,克隆 PointNet 的 GitHub 仓库: git clone https://github.co…

ML 系列:机器学习和深度学习的深层次总结(08)—欠拟合、过拟合,正确拟合

ML 系列赛:第 9 天 — Under、Over 和 Good Fit 文章目录 一、说明二、了解欠拟合、过拟合和实现正确的平衡三、关于泛化四、欠拟合五、过拟合六、适度拟合七、结论 一、说明 在有监督学习过程中,对于指定数据集进行训练,训练结果存在欠拟合…

基于Es和智普AI实现的语义检索

1、什么是语义检索 语义检索是一种利用自然语言处理(NLP)和人工智能(AI)技术来理解搜索查询的语义,以提供更准确和相关搜索结果的搜索技术,语义检索是一项突破性的技术,旨在通过深入理解单词和…

QT菜单栏设计(二级菜单栏)

目的:创建一级菜单栏,添加对应选项,并向一级菜单栏中添加二级菜单栏选项。 #include "mainwindow.h" #include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindo…

【天怡AI-注册安全分析报告-无验证方式导致安全隐患】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 1. 暴力破解密码,造成用户信息泄露 2. 短信盗刷的安全问题,影响业务及导致用户投诉 3. 带来经济损失,尤其是后付费客户,风险巨大,造…