03.HTTPS的实现原理-HTTPS的工作流程

03.HTTPS的实现原理-HTTPS的工作流程

  • 简介
  • [1. HTTPS的工作流程](#1. HTTPS的工作流程)
    • [1.1. TCP的工作流程](#1.1. TCP的工作流程)
      • [1.1.1. 三次握手的详细步骤](#1.1.1. 三次握手的详细步骤)
      • [1.1.2. 三次握手的作用](#1.1.2. 三次握手的作用)
    • [1.2. HTTPS的工作流程](#1.2. HTTPS的工作流程)
      • [1.2.1. HTTPS与TCP的关系](#1.2.1. HTTPS与TCP的关系)
      • [1.2.2. HTTPS的工作流程](#1.2.2. HTTPS的工作流程)
  • [2. 公钥和私钥的作用](#2. 公钥和私钥的作用)
  • [3. 对称密钥的生成和交换](#3. 对称密钥的生成和交换)
  • [4. 对称加密和非对称加密的区别](#4. 对称加密和非对称加密的区别)

简介

主要讲述了HTTP与HTTPS工作流程比较,以及服务器与客户机资源分配与初始化流程。首先,HTTP和HTTPS都基于TCP,但在三次握手后,HTTP直接发送请求,而HTTPS还需进行SSL/TLS握手。此外,服务器资源分配和初始化流程也包括检查资源情况、分配资源、创建连接和初始化等步骤。如果服务器回复丢失,客户机未收到确认,可能导致服务器资源耗尽。然后,重点解释了HTTPS中的TLS/SSL握手过程,强调了公钥和私钥的概念及其重要性。

1. HTTPS的工作流程

HTTPS的工作流程主要是关于S的部分,即安全部分(secure )。

HTTP本身是基于TCP的,包括其语法语义和请求方式等。

HTTPS与HTTP的区别主要在于安全性的增强,我们主要关注与安全相关的部分。

1.1. TCP的工作流程

TCP的工作流程包括三次握手和四次挥手

1.三次握手:客户机发送请求,服务器进行监听并响应,客户机进行确认。

2.四次挥手:服务器发送FIN包,客户机进行确认,然后客户机发送FIN包,服务器进行确认。

1.1.1. 三次握手的详细步骤

1.第一次握手:客户机发送请求报文段,序列号为x。

2.第二次握手:服务器收到请求后,发送确认报文段,序列号为y,确认号为x+1。

3.第三次握手:客户机收到确认报文段后,发送确认报文段,序列号为x+1,确认号为y+1。

1.1.2. 三次握手的作用

1.第三次握手的作用是确认客户机是否已收到服务器的确认报文段

2.如果没有第三次握手,服务器无法确认客户机是否收到确认报文段,可能导致资源浪费或服务器崩溃。

3.泛洪攻击(SYN Flooding)就是利用没有第三次握手导致的服务器资源被快速分配完毕的漏洞进行攻击。

1.2. HTTPS的工作流程

1.2.1. HTTPS与TCP的关系

1.HTTP和HTTPS都是基于TCP协议的。

2.HTTPS在TCP之上添加了SSL/TLS安全协议来提供加密和身份验证。

1.2.2. HTTPS的工作流程

1.HTTPS首先建立TCP连接 ,然后进行SSL/TLS握手。

2.握手过程包括客户端发起请求,服务器返回公钥证书,客户端验证证书,生成对称密钥并用公钥加密发送给服务器

3.服务器用私钥解密收到对称密钥客户端和服务器都用对称密钥进行加密和解密。

2. 公钥和私钥的作用

1.公钥用于加密对称密钥,私钥用于解密。

2.公钥可以发给任何客户端,私钥由服务器保留。

3.公钥加密的内容可以用私钥解密,反之亦然。

3. 对称密钥的生成和交换

1.客户端生成对称密钥,并用公钥加密后发送给服务器。

2.服务器用私钥解密收到对称密钥,客户端和服务器都用对称密钥进行加密和解密。

4. 对称加密和非对称加密的区别

1.对称加密:加密和解密用同一个密钥。

2.非对称加密:加密用公钥,解密用私钥,或反之。

3.HTTPS结合使用了对称加密和非对称加密,数据传输前进行密钥交换,使用非对称加密;数据传输使用对称加密。

往期文章参考:
01.HTTPS的实现原理-HTTPS的概念
02.HTTPS的实现原理-HTTPS与HTTP的区别详解

相关推荐
00后程序员张28 分钟前
免Mac上架实战:全平台iOS App上架流程的工具协作经验
websocket·网络协议·tcp/ip·http·网络安全·https·udp
喜欢板砖的牛马32 分钟前
简述IPv4分配过程,看这一篇就够了
网络协议
old-six-programmer34 分钟前
NAT 类型及 P2P 穿透
服务器·网络协议·webrtc·p2p·nat
GLAB-Mary1 小时前
OSPF虚拟链路术语一览:快速掌握网络路由
网络·智能路由器
tan77º1 小时前
【Linux网络编程】网络基础
linux·服务器·网络
DemonAvenger1 小时前
深入理解Go的网络I/O模型:优势、实践与踩坑经验
网络协议·架构·go
笑衬人心。2 小时前
HTTPS详解:原理 + 加解密过程 + 面试问答
java·网络协议·http·面试·https
bing_1582 小时前
MQTT 和 HTTP 有什么本质区别?
网络·网络协议·http
代码讲故事3 小时前
多种方法实现golang中实现对http的响应内容生成图片
开发语言·chrome·http·golang·图片·快照·截图
杨浦老苏4 小时前
Docker端口映射查看工具Dockpeek
网络·docker·群晖