Tcp三次握手四次挥手和SSL/TLS

embedded/2024/9/19 21:19:33/ 标签: tcp/ip, ssl, 网络

1.Tcp三次握手四次挥手:

        1.1基本概念:

        TCP(三次握手和四次挥手)是用于建立和终止可靠传输连接的过程。TCP协议是一种面向连接的传输层协议,确保数据在网络上可靠、有序地传输。下面详细解释三次握手和四次挥手的工作机制。

        1.2 TCP 三次握手(建立连接)

        TCP 三次握手用于在客户端和服务器之间建立可靠的连接。这个过程确保双方都可以发送和接收数据,并同步彼此的初始序列号,以便在数据传输时能够正确排序和确认。三次握手过程如下:

                (1).第一次握手:SYN

  • 客户端发送一个SYN(同步序列号)包给服务器,表示想要建立连接。该包包含客户端的初始序列号(Seq = x),用于数据传输时的确认。

                (2).第二次握手:SYN-ACK

  • 服务器收到客户端的SYN包后,回复一个SYN+ACK包,表示同意建立连接,并返回自己的初始序列号(Seq = y)。同时,确认客户端的SYN包(Ack = x+1)。

                (3).第三次握手:ACK

  • 客户端收到服务器的SYN+ACK包后,发送ACK包,确认服务器的SYN包(Ack = y+1),并表示连接已经成功建立。

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

        1.3 TCP 四次挥手(断开连接)

        当客户端或服务器任何一方希望终止连接时,TCP 采用四次挥手机制来确保双方都能正确断开连接。由于TCP连接是全双工的(即双方可以同时发送和接收数据),每一方都需要单独关闭各自的数据传输通道,确保连接的安全终止。

                (1).第一次挥手:FIN

        客户端(或服务器)发送一个FIN(Finish)包,表示不再发送数据,但仍可以接收数据。此时,客户端进入FIN_WAIT_1状态。

                (2).第二次挥手:ACK

        服务器收到FIN包后,回复一个ACK包,表示已收到请求,进入CLOSE_WAIT状态。此时,客户端进入FIN_WAIT_2状态,等待服务器关闭连接。

                (3).第三次挥手:FIN

        服务器也向客户端发送一个FIN包,表示服务器也不再发送数据,准备关闭连接。此时,服务器进入LAST_ACK状态。

                (4).第四次挥手:ACK

  • 客户端收到服务器的FIN包后,回复一个ACK包,表示确认服务器关闭连接。此时,客户端进入TIME_WAIT状态,等待一定时间后完全关闭连接。服务器在收到ACK包后,立即关闭连接。

        1.3 三次握手和四次挥手的作用

                (1).三次握手确保客户端和服务器都能够确认对方准备好建立连接,并且可以同步初始序列号,以保证数据传输的有序性和完整性。

                (2).四次挥手则确保双方都能够安全地关闭连接,避免数据丢失。客户端在收到服务器的FIN后,进入TIME_WAIT状态,继续等待一段时间,以处理可能出现的延迟数据包。

        1.4 三次握手与四次挥手的区别

                (1).三次握手是为了建立连接,而四次挥手是为了断开连接。

                (2).三次握手中的双方可以同步初始序列号,保证数据传输的可靠性。

                (3).四次挥手中的每一方都需要单独关闭自己的数据传输通道,因此需要四步。

2.SSL/TLS

        2.1 基本概念:

        SSL(Secure Sockets Layer,安全套接字层)和TLS(Transport Layer Security,传输层安全协议)是用于保护网络通信安全的加密协议。它们提供了一种在客户端(如浏览器)和服务器之间建立安全通信的方式,确保数据传输的保密性、完整性和真实性。

        2.2 SSL与TLS的区别:

  • SSL是最早开发的安全协议,但由于安全漏洞,已经逐渐被弃用。
  • TLS是SSL的升级版本,更加安全和高效。TLS 1.0 基于 SSL 3.0,但随着时间的推移,TLS协议得到了更多的改进,目前常用的版本是 TLS 1.2 和 TLS 1.3。

        2.3 SSL/TLS 的主要功能

        SSL/TLS 通过以下三个方面保障通信的安全性:

                加密(Confidentiality):通过加密技术,保护传输的数据不被第三方窃听。

                完整性(Integrity):通过消息认证码(MAC),确保传输的数据在传输过程中没有被篡改。 

                身份验证(Authentication):通过数字证书确保通信双方的身份是合法的。

        2.4 SSL/TLS 握手过程

        SSL/TLS 握手是客户端和服务器之间建立安全连接的过程。握手主要用于协商安全参数和共享加密密钥。典型的TLS握手过程如下:

  • 客户端Hello:客户端向服务器发送包含协议版本、支持的加密算法、随机数等信息的ClientHello消息。
  • 服务器Hello:服务器响应ServerHello消息,包含选择的加密算法、服务器证书等信息。
  • 证书验证:服务器发送数字证书,客户端验证该证书的合法性。
  • 密钥交换:双方协商会话密钥,用于加密后续通信。这个过程可能使用非对称加密算法(如RSA)或密钥交换协议(如Diffie-Hellman)。
  • 客户端完成:客户端生成一个会话密钥并加密发送给服务器,服务器用自己的私钥解密。双方确认加密通信通道已建立。

        

3.关系:

        TCP三次握手:用于建立可靠的传输层连接,确保数据包的顺序和完整性。

        SSL/TLS握手:在应用层和传输层之间执行,通常在TCP三次握手完成后进行,用于建立安全的加密通信。


http://www.ppmy.cn/embedded/113929.html

相关文章

浸没边界法精度相关的论文的阅读笔记

Convergence proof of the velocity field for a stokes flow immersed boundary method https://doi.org/10.1002/cpa.20233 研究对象的选取 他这里为什么能够选取一个周期性边界的流场啊?为什么不是狄利克雷边界或者诺伊曼边界? 方形流场的边界值 …

高级算法设计与分析 学习笔记6 B树

B树定义 一个块里面存了1000个数和1001个指针,指针指向的那个块里面的数据大小介于指针旁边的两个数之间 标准定义: B树上的操作 查找B树 创建B树 分割节点 都是选择正中间的那个,以免一直分裂。 插入数字 在插入的路上就会检查节点需不需要…

Testbench编写与Vivado Simulator的基本操作

Testbench编写与Vivado Simulator的基本操作 Testbench编写 Testbench 是一种用Verilog或者systemVerilog语言编写的程序或模块,编写testbench的主要目的是为了对使用硬件描述语言(HDL)设计的电路UUT(unit under test)进行仿真验证&#xf…

一招教你解决excel表格打印预览时候表格线条显示不全的问题

1、如图,我们在制作好excel表格后再需要打印时候,点击打印预览会出现以下情况: 最下边的表格线条显示不全,这样即使打印出来或者导出为pdf,文件中依然显示不全,这时候我们只需要在excel表格中轻轻设置一下就…

CleanMyMac X 4.15.6正式版 mac直装破解版

你知道 CleanMyMac是什么吗?它的字面意思为“清理我的Mac”,作为软件,那就是一款 Mac清理工具 ,Mac OS X 系统下知名系统清理软件,是数以万计的Mac用户的选择。它可以流畅地与系统性能相结合,只需…

JVM 运行时数据区域

目录 前言 程序计数器 java虚拟机栈 本地方法栈 java堆 方法区 运行时常量池 前言 首先, java程序在被加载在内存中运行的时候, 会把他自己管理的内存划分为若干个不同的数据区域, 就比如你是一个你是一个快递员, 一堆快递过来需要你分拣, 这个时候, 你就需要根据投放的目…

三、(JS)JS中常见的表单事件

一、onfocus、onblur事件 这个很容易理解&#xff0c;就不解释啦。 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"&…

关于 Goroutines 和并发控制的 Golang 难题

下面是一道关于 Goroutines 和并发控制的 Golang 难题&#xff0c;它涉及到 Go 的并发编程模型、Goroutines、通道&#xff08;Channels&#xff09;以及 sync.WaitGroup 的使用&#xff1a; 问题描述&#xff1a; 你有一个需要并发执行的任务&#xff0c;其中有 100 个 URL …

基于Spring Boot的学生社区故障维修预约系统的设计与实现(开题报告)

毕业论文(设计)开题报告 基于Spring Boot的学生社区故障维修预约系统设计与实现 姓 名 学 院 数学与数据科学学院 专业班级 信息与计算科学202 学 号 202021314223 校内指导教师 职称/职务 副教授 校外指导教师 职称/职务 技术经理 起始时间 2023年9月 教务部制 一、开…

【LLM多模态】文生视频评测基准VBench

note VBench的16个维度自动化评估指标代码实践&#xff08;待完成&#xff09;16个维度的prompt举例人类偏好标注&#xff1a;计算VBench评估结果与人类偏好之间的相关性、用于DPO微调 文章目录 note一、相关背景二、VBench评测基准概述&#xff1a;论文如何解决这个问题&…

Go语言现代web开发13 方法和接口

方法 As you probably noticed, there are no classes in the Go programming language. But we can mimic this by declaring functions on types. The type which declares functions is called the receiver argument and the function declared on the type is called the…

JS基础之【对象详解 -- 对象的属性与方法、遍历对象与内置对象】

&#x1f680; 个人简介&#xff1a;某大型国企高级前端开发工程师&#xff0c;7年研发经验&#xff0c;信息系统项目管理师、CSDN优质创作者、阿里云专家博主&#xff0c;华为云云享专家&#xff0c;分享前端后端相关技术与工作常见问题~ &#x1f49f; 作 者&#xff1a;码…

WPF 的TreeView的TreeViewItem下动态生成TreeViewItem

树形结构仅部分需要动态生成TreeViewItem的可以参考本文。 xaml页面 <TreeView MinWidth"220" ><TreeViewItem Header"功能列表" ItemsSource"{Binding Functions}"><TreeViewItem.ItemTemplate><HierarchicalDataTempla…

【设计模式】UML类图和六大设计原则

前言 在实践中经常看到工厂模式、观察者模式等字眼&#xff0c;渐觉设计模式的重要性&#xff0c;于是开刷设计模式。 本文讲述了UML类图以及设计模式的六大原则 参考资料&#xff1a; 课程视频&#xff1a;黑马程序员Java设计模式 一、UML类图 1. 类和接口的表示方式 如…

JavaScript在数据可视化领域的探索与实践

目录 引言 JavaScript可视化库概览 D3.js基础入门 1. 引入D3.js 2. 绘制简单的条形图 3. 添加轴 交互性与动画 实际应用场景 结论 引言 在数据驱动决策日益重要的今天&#xff0c;数据可视化成为连接数据与洞察的桥梁。JavaScript&#xff0c;作为前端开发的主力军&am…

Python识别文字中的省市区

一、库安装 pip install cpca 注意&#xff1a;目前 cpca 模块仅支持Python3及以上版本。 二、基本使用 通过两行代码就能实现最基本的省市区提取&#xff1a; import cpcalocation_str ["新疆古阿贾克斯就打开房间啊开始","河北省石家庄市动物园",&…

CSP-J 计算机网络

文章目录 前言计算机网络的定义计算机网络的发展计算机网络的主要功能计算机网络的分类按网络地理范围分类按网络拓扑结构分类 OSI模型与TCP/IP模型OSI模型TCP/IP模型OSI模型与TCP/IP模型的网络协议及功能 IP地址域名1. **通用顶级域名&#xff08;gTLD&#xff0c;Generic Top…

掌握RESTful API设计:构建高效、可扩展的Web服务

设计RESTful API时&#xff0c;遵循最佳实践可以提高API的可维护性、可扩展性和用户体验。以下是一些关键的最佳实践&#xff1a; 使用HTTP方法正确&#xff1a;GET用于获取资源。POST用于创建新资源。PUT或PATCH用于更新现有资源。DELETE用于删除资源。无状态&#xff1a;每个…

iptables限制网速

1、使用hashlimit来限速 #从eth0网卡进入INPUT链数据&#xff0c;使用模块hashlimit 限制网速为100kb/s或2mb/s,超过限制的数据包会被DROP。OUTPUT链同理&#xff0c;mode为srcip&#xff0c;有4个mode选项: srcip&#xff08;默认匹配每个源地址IP&#xff0c;配置指定源地址…

如何使用命令安装android的.aab包

在Android设备上安装 .aab (Android App Bundle) 文件不是直接使用标准命令行工具的过程&#xff0c;通常需要通过Google Play或其他发布平台来安装它们。但是&#xff0c;如果你想在本地测试 .aab 文件&#xff0c;可以通过以下步骤进行操作&#xff1a; 方法 1&#xff1a;使…