0


掌控网络之魂:深度揭秘TCP三次握手的逻辑与原理


前言

网络通信是现代计算机世界的基石,而传输控制协议(TCP)则是网络通信中确保数据可靠传输的关键协议之一。TCP通过一种名为“三次握手”的核心机制来建立稳定的网络连接。

一、TCP与网络通信

在互联网体系结构中,TCP协议具备面向连接、可靠传输、面向字节流及全双工等关键特性,为应用层提供了高度可靠的数据传输服务。TCP通过一系列核心技术,包括序列号与确认应答机制确保数据有序完整传输,以及流量控制机制维持数据传输的稳定性和有效性,从而确保信息能在网络中准确无误地送达目标。

二. 网络通信中的“握手艺术:TCP三部曲

TCP协议中建立连接的过程,通常被称为“三次握手”(Three-way Handshake),其核心目的确实在于通信双方互相同步序列号(SYN)并确认(ACK)对方的同步请求。下面是三次握手的详细步骤:

1.第一次握手

客户端(发起请求(request)的一方),想要与服务器建立连接时,首先要向服务器发送SYN(Synchronize Sequence Numbers)报文段,并指定一个客户端的初始序列号(ISN),这个动作标志着客户端尝试建立连接的起始点,同时也传达了客户端准备接收服务器数据的准备状态(SYN_SENT状态)。

2.第二次握手

服务器在接收到客户端发起的SYN请求后,如果同意建立连接,则会响应(response)一个SYN和ACK报文.其中SYN确认客户端的起始序列号,同时,ACK回应客户端的SYN请求,表明服务器已接收到客户端的SYN,并给出服务器自己的初始序列号。这一步骤既确认了来自客户端的连接请求,也初始化了从服务器到客户端的连接序列号。

3.第三次握手

客户端接收到服务器的SYN/ACK应答后,再向服务器发送一个ACK报文,确认收到了服务器的初始序列号。这一确认完成后,TCP连接正式建立,之后双方就可以开始数据传输了。

形象比喻~~

三次握手:
A:是B吗?我要跟你通信,听得到我说话吗?
B:可以通信,你听得到我说话吗?
A:我也听得到。

面试常考

一) 三次握手的意义 为什么要进行三次握手?

1).三次握手,可以现针对通信路径进行投石问路,初步确认一下通信链路是否畅通(可靠性的前提)

2).三次握手也是在验证通信双方 发送能力 接受能力是否正常.

3). 三次握手的过程中也会协商一些有必要的参数(序列号,窗口大小,最长报文段长度)

二) 两次握手,四次握手可以吗?

为什么不是两次握手?

  1. 不足以防止旧连接请求的干扰:如果使用两次握手,那么就可能会出现这样的情况——一个延迟的连接请求被服务器接受,导致错误地建立连接。这种情况在网络延迟较大时尤为常见。三次握手通过确认过程确保了当前的连接请求是新鲜和有效的。
  2. 无法确保双方都准备好数据传输:两次握手只能保证一方知道另一方是准备好进行通信的,但无法确信双方都已经准备好发送和接收数据。第三次握手保证了双方都确认了对方的准备状态。

为什么不是四次握手?

实际上,在建立连接时,三次握手已足够满足建立一个可靠连接所需的最小条件:验证双方的接收与发送能力,并防止失效的连接请求导致资源浪费。增加第四次握手将意味着更多的延迟和资源消耗,而没有带来相应的可靠性或性能提升。因此,从效率和必要性的角度考虑,三次即可满足需求。


总结

"建立连接过程"本质上确实是通过通信双方各自发起一个SYN包以及各自回应一个ACK包,来实现双方序列号的同步和确认,从而建立起一个可靠的连接。这个过程确保了TCP协议的可靠性,使得数据传输过程中可以按序、不丢失、不重复地进行。


本文转载自: https://blog.csdn.net/2301_79339087/article/details/136933906
版权归原作者 来杯Java提提神 所有, 如有侵权,请联系我们删除。

“掌控网络之魂:深度揭秘TCP三次握手的逻辑与原理”的评论:

还没有评论