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

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

引言


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


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

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


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


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


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


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


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


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


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


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

9.png

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


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


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


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


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


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


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


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


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


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


结语


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


开源项目


  • SpringCloud + Vue3 微服务商城


SpringBoot 3+ Vue3 单体权限管理系统

相关文章
|
2月前
|
网络协议 Python
TCP传输的三次握手、四次挥手策略是什么
TCP传输的三次握手、四次挥手策略是什么
24 0
|
2月前
|
缓存 网络协议 算法
【计算机网络-传输层】TCP可靠传输、TCP流量控制、拥塞控制
【计算机网络-传输层】TCP可靠传输、TCP流量控制、拥塞控制
|
11月前
|
网络协议 程序员 测试技术
用了TCP协议,就一定不会丢包吗? 1
用了TCP协议,就一定不会丢包吗?
150 0
用了TCP协议,就一定不会丢包吗? 1
|
16天前
|
网络协议
TCP传输的三次握手四次挥手策略
TCP传输的三次握手四次挥手策略
13 0
|
18天前
|
网络协议
你不知道的TCP协议:四次握手!
你不知道的TCP协议:四次握手!
12 0
|
12月前
|
网络协议 安全
网络:TCP协议三次握手与四次挥手
网络:TCP协议三次握手与四次挥手
61 0
|
8月前
|
缓存 监控 网络协议
2.6 TCP与UDP的可靠性传输
2.6 TCP与UDP的可靠性传输
93 0
|
11月前
|
存储 网络协议
TCP 的可靠传输
TCP 的可靠传输
56 0
|
11月前
|
运维 网络协议 Linux
用了TCP协议,就一定不会丢包吗? 2
用了TCP协议,就一定不会丢包吗?
138 0
|
12月前
|
机器学习/深度学习 监控 网络协议
浅谈 TCP 握手/数据传输/挥手过程以及 tcpdump 抓包工具使用
浅谈 TCP 握手/数据传输/挥手过程以及 tcpdump 抓包工具使用
242 0