为何要3次握手?TCP协议的稳定性保障机制

2023-12-04 05:44

本文主要是介绍为何要3次握手?TCP协议的稳定性保障机制,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

🚀 作者主页: 有来技术
🔥 开源项目: youlai-mall 🍃 vue3-element-admin 🍃 youlai-boot
🌺 仓库主页: Gitee 💫 Github 💫 GitCode
💖 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请纠正!

目录

  • 引言
  • 为什么需要3次握手建立TCP连接?
    • 1. 第一次握手:建立连接请求
    • 2. 第二次握手:确认连接请求
    • 3. 第三次握手:确认连接接受
    • 为什么不采用2次握手建立连接?
  • 为什么需要4次挥手断开TCP连接?
    • 1. 第一次挥手:发起关闭连接
    • 2. 第二次挥手:确认关闭请求
    • 3. 第三次挥手:发起关闭确认
    • 4. 第四次挥手:确认关闭确认
    • 为什么不采用3次挥手断开连接?
  • 结语
  • 开源项目

引言

TCP(Transmission Control Protocol)是计算机网络中一种可靠的传输协议,负责确保数据的可靠传输。TCP连接的建立和断开过程分别通过3次握手和4次挥手来完成。本文将深入探讨为什么TCP需要进行3次握手来建立连接,以及为何在断开连接时采用4次挥手而不是2次握手和3次挥手。

为什么需要3次握手建立TCP连接?

在这里插入图片描述

1. 第一次握手:建立连接请求

在进行TCP连接时,客户端首先向服务器发送连接请求,这是第一次握手。这一步的目的是告诉服务器客户端想要建立连接,并初始化一些参数,如序列号等。

2. 第二次握手:确认连接请求

服务器收到客户端的连接请求后,进行确认并发送自己的连接请求给客户端,这是第二次握手。这一步的目的是告诉客户端服务器接受连接请求,并同样初始化一些参数。

3. 第三次握手:确认连接接受

客户端收到服务器的连接请求后,进行确认,这是第三次握手。这一步的目的是确保双方都已准备好建立连接。此时,双方都知道对方已成功接受连接。

为什么不采用2次握手建立连接?

如果只进行2次握手,客户端发送连接请求,服务器确认后即建立连接。但这样存在的问题是,如果确认的消息在网络中滞留,客户端会认为连接已建立,而服务器不清楚,可能导致连接的不确定性和不稳定性。因此,3次握手是为了确保双方都确认了连接的建立,降低了不确定性。

为什么需要4次挥手断开TCP连接?

在这里插入图片描述

1. 第一次挥手:发起关闭连接

在断开连接时,任一一方可以发起关闭连接的请求,这是第一次挥手。发起方发送带有FIN(Finish)标志的报文,表示不再发送数据。

2. 第二次挥手:确认关闭请求

接收到关闭请求的一方发回确认,并可以继续发送数据,这是第二次挥手。此时,接收方通告自己已经准备好关闭连接,但仍可发送剩余的数据。

3. 第三次挥手:发起关闭确认

接收方在完成发送数据后,发起关闭确认请求,这是第三次挥手。该请求包含FIN标志,表示不再发送数据。

4. 第四次挥手:确认关闭确认

发起方接收到关闭确认请求后,发回确认,并等待一段时间以确保对方已经接收到关闭确认,这是第四次挥手。之后,双方的连接才算正式关闭。

为什么不采用3次挥手断开连接?

如果只进行3次挥手,发起方发送关闭请求,接收方发回确认后即关闭连接。但这样可能存在一些未完成的数据传输,因为接收方在发送确认后仍可以继续发送数据。通过引入第四次挥手,确保双方都完成了关闭确认,避免了可能的数据残留和不确定性。

结语

TCP连接的3次握手和4次挥手是为了确保连接的建立和断开的稳定性和可靠性。通过这些握手和挥手步骤,TCP协议能够有效地管理连接,保障数据的可靠传输。虽然增加了握手和挥手的次数,但这是为了防范可能出现的问题,确保网络通信的可靠性和稳定性。在实际应用中,这种权衡是TCP协议成功的关键之一。

开源项目

  • SpringCloud + Vue3 微服务商城
GithubGitee
后端youlai-mall 🍃youlai-mall 🍃
前端mall-admin🌺mall-admin 🌺
移动端mall-app 🍌mall-app 🍌
  • SpringBoot 3+ Vue3 单体权限管理系统
GithubGitee
后端youlai-boot 🍃youlai-boot 🍃
前端vue3-element-admin 🌺vue3-element-admin 🌺

这篇关于为何要3次握手?TCP协议的稳定性保障机制的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/452328

相关文章

【Linux】应用层http协议

一、HTTP协议 1.1 简要介绍一下HTTP        我们在网络的应用层中可以自己定义协议,但是,已经有大佬定义了一些现成的,非常好用的应用层协议,供我们直接使用,HTTP(超文本传输协议)就是其中之一。        在互联网世界中,HTTP(超文本传输协议)是一个至关重要的协议,他定义了客户端(如浏览器)与服务器之间如何进行通信,以交换或者传输超文本(比如HTML文档)。

【Go】go连接clickhouse使用TCP协议

离开你是傻是对是错 是看破是软弱 这结果是爱是恨或者是什么 如果是种解脱 怎么会还有眷恋在我心窝 那么爱你为什么                      🎵 黄品源/莫文蔚《那么爱你为什么》 package mainimport ("context""fmt""log""time""github.com/ClickHouse/clickhouse-go/v2")func main(

2024.9.8 TCP/IP协议学习笔记

1.所谓的层就是数据交换的深度,电脑点对点就是单层,物理层,加上集线器还是物理层,加上交换机就变成链路层了,有地址表,路由器就到了第三层网络层,每个端口都有一个mac地址 2.A 给 C 发数据包,怎么知道是否要通过路由器转发呢?答案:子网 3.将源 IP 与目的 IP 分别同这个子网掩码进行与运算****,相等则是在一个子网,不相等就是在不同子网 4.A 如何知道,哪个设备是路由器?答案:在 A

图解TCP三次握手|深度解析|为什么是三次

写在前面 这篇文章我们来讲解析 TCP三次握手。 TCP 报文段 传输控制块TCB:存储了每一个连接中的一些重要信息。比如TCP连接表,指向发送和接收缓冲的指针,指向重传队列的指针,当前的发送和接收序列等等。 我们再来看一下TCP报文段的组成结构 TCP 三次握手 过程 假设有一台客户端,B有一台服务器。最初两端的TCP进程都是处于CLOSED关闭状态,客户端A打开链接,服务器端

Modbus-RTU协议

一、协议概述 Modbus-RTU(Remote Terminal Unit)是一种基于主从架构的通信协议,采用二进制数据表示,消息中的每个8位字节含有两个4位十六进制字符。它主要通过RS-485、RS-232、RS-422等物理接口实现数据的传输,传输距离远、抗干扰能力强、通信效率高。 二、报文结构 一个标准的Modbus-RTU报文通常包含以下部分: 地址域:单个字节,表示从站设备

网络原理之TCP协议(万字详解!!!)

目录 前言 TCP协议段格式 TCP协议相关特性 1.确认应答 2.超时重传 3.连接管理(三次握手、四次挥手) 三次握手(建立TCP连接) 四次挥手(断开连接)  4.滑动窗口 5.流量控制 6.拥塞控制 7.延迟应答 8.捎带应答  9.基于字节流 10.异常情况的处理 小结  前言 在前面,我们已经讲解了有关UDP协议的相关知识,但是在传输层,还有

多云架构下大模型训练的存储稳定性探索

一、多云架构与大模型训练的融合 (一)多云架构的优势与挑战 多云架构为大模型训练带来了诸多优势。首先,资源灵活性显著提高,不同的云平台可以提供不同类型的计算资源和存储服务,满足大模型训练在不同阶段的需求。例如,某些云平台可能在 GPU 计算资源上具有优势,而另一些则在存储成本或性能上表现出色,企业可以根据实际情况进行选择和组合。其次,扩展性得以增强,当大模型的规模不断扩大时,单一云平

DNS协议基础笔记

1.定义 DNS(Domain Name System,域名系统)是互联网的一项核心服务,它作为将域名和 IP 地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。 2.域名解析过程 当用户在浏览器中输入一个域名,浏览器首先会检查自己的缓存中是否有该域名对应的 IP 地址。本地 DNS 服务器收到查询请求后,首先会检查自己的缓存中是否有该域名对应的 IP 地址。根域名服务器收到查询请

linux下TCP/IP实现简单聊天程序

可以在同一台电脑上运行,在一个终端上运行服务器端,在一个终端上运行客户端。 服务器端的IP地址要和本地的IP相同,并分配端口号,客户端的默认设置为本地,端口号自动分配。 服务器端: #include <stdio.h>#include <stdlib.h>#include <errno.h>#include <string.h>#include <sys/types.

4G模块、WIFI模块、NBIOT模块通过AT指令连接华为云物联网服务器(MQTT协议)

MQTT协议概述 MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息传输协议,它被设计用来提供一对多的消息分发和应用之间的通讯,尤其适用于远程位置的设备和高延迟或低带宽的网络。MQTT协议基于客户端-服务器架构,客户端可以订阅任意数量的主题,并可以发布消息到这些主题。服务器(通常称为MQTT Broker)则负责接受来自客户端的连接请求,并转发消