🍎个人博客:个人主页
🏆个人专栏:JAVA
⛳️ 功不唐捐,玉汝于成
目录
[三次握手(Connection Establishment)](#三次握手(Connection Establishment))
[四次挥手(Connection Termination)](#四次挥手(Connection Termination))
前言
TCP的三次握手和四次挥手是保障网络通信可靠性的关键步骤。通过三次握手,建立了双方的连接,确保双方能够准备好发送和接收数据;通过四次挥手,优雅地关闭了连接,避免数据丢失和不必要的资源浪费。理解这些握手和挥手过程对于网络通信的正确性和可靠性至关重要。
正文
TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层协议。在TCP连接的建立和断开过程中,使用了三次握手和四次挥手的机制。
三次握手(Connection Establishment)
-
第一次握手(SYN):
- 客户端发送一个TCP报文,其中设置SYN标志位为1,表示请求建立连接。
- 客户端选择一个初始序列号(ISN),用来标识报文段的顺序。
-
第二次握手(SYN + ACK):
- 服务器收到客户端的SYN后,发送一个带有SYN和ACK标志位的报文作为响应。
- 服务器也选择一个初始序列号(ISN),并将其加1,然后将客户端的ISN作为ACK的确认号。
-
第三次握手(ACK):
- 客户端收到服务器的SYN + ACK后,发送一个带有ACK标志位的报文。
- 客户端的序列号加1,而确认号为服务器的序列号加1,表示连接建立。
此时,TCP连接已经建立,双方可以开始进行数据传输。
四次挥手(Connection Termination)
-
第一次挥手(FIN):
- 当客户端或服务器决定要断开连接时,发送一个带有FIN标志位的报文,表示不再发送数据。
-
第二次挥手(ACK):
- 接收到FIN的一方发送一个带有ACK标志位的报文,确认收到断开请求。
-
第三次挥手(FIN):
- 如果接收到FIN的一方也希望断开连接,它也发送一个带有FIN标志位的报文。
-
第四次挥手(ACK):
- 接收到第三次挥手的一方发送一个带有ACK标志位的报文,表示确认收到对方的断开请求。
经过这四个步骤,双方的连接就被断开了。三次握手和四次挥手的过程是为了确保数据的可靠传输和连接的正常断开。在挥手过程中,每个方向的关闭都需要经过两个阶段,即发送方发送FIN和接收方发送ACK。
结语
在网络通信中,TCP的三次握手和四次挥手是保证数据传输可靠性和网络连接资源的合理利用的基础。通过深入理解这些过程,我们能更好地设计和管理网络通信,确保数据安全、稳定和高效传输。
我的其他博客
【MySQL】数据库规范化的三大法则 --- 一探范式设计原则-CSDN博客
【JAVA】线程的run()和start()有什么区别?-CSDN博客
【日常聊聊】程序员必备的面试技巧:如何在面试战场上脱颖而出-CSDN博客
【JAVA】Java8开始ConcurrentHashMap,为什么舍弃分段锁-CSDN博客
【Web开发】会话管理与无 Cookie 环境下的实现策略-CSDN博客
【Mybatis】Mybatis如何防止sql注入-CSDN博客