当前位置: 首页 > news >正文

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

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.lryc.cn/news/441320.html

相关文章:

  • 大棚分割数据集,40765对影像,16.9g数据量,0.8米高分二,纯手工标注(arcgis标注)的大规模农业大棚分割数据集。
  • Jenkins插件安装失败时这么做就搞定啦!
  • 优化器与现有网络模型的修改
  • kafka 超详细的消息订阅与消息消费几种方式
  • C++ 第三讲:内存管理
  • LeeCode打卡第二十九天
  • 阿里云专业翻译api对接
  • 基于Spring Boot的能源管理系统+建筑能耗+建筑能耗监测系统+节能监测系统+能耗监测+建筑能耗监测
  • 大数据新视界 --大数据大厂之 Cassandra 分布式数据库:高可用数据存储的新选择
  • ROS第五梯:ROS+VSCode+C++单步调试
  • SLA 概念和计算方法
  • C++比大小游戏
  • PCIe进阶之TL:Memory, I/O, and Configuration Request Rules TPH Rules
  • 【初阶数据结构】一文讲清楚 “堆” 和 “堆排序” -- 树和二叉树(二)(内含TOP-K问题)
  • sqli-lab靶场学习(二)——Less8-10(盲注、时间盲注)
  • Dijkstra算法和BFS算法(单源最短路径)
  • 在WordPress中最佳Elementor主题推荐:专家级指南
  • 关于RabbitMQ消息丢失的解决方案
  • c语言动态内存分配
  • 零基础制作一个ST-LINK V2 附PCB文件原理图 AD格式
  • nginx基础篇(一)
  • 监控系列之-Grafana面板展示及制作
  • 值传递和地址传递
  • Docker vs. containerd 深度剖析容器运行时
  • ARM32 base instruction -- blx
  • sql数据库
  • 2024/9/19 408大题专训之五段式指令流水线题型总结
  • Android SPN/PLMN 显示逻辑简介
  • 1.使用 VSCode 过程中的英语积累 - File 菜单(每一次重点积累 5 个单词)
  • 什么是数字化转型升级?