TCP三次握手详解(图解全过程)

TCP三次握手详解(图解全过程)-mikechen

TCP三次握手是面试中的一个很常见的问题,下面我就来详解TCP三次握手的全过程@mikechen

第一次握手(SYN)

TCP建立连接的过程通常包括三次握手阶段,用于确保通信双方都准备好进行数据传输。

首先是,第一次握手,如下图红色圆圈1所示:

TCP三次握手详解(图解全过程)-mikechen

客户端向服务器发送一个TCP报文,其中包含一个SYN,也就是Synchronize Sequence Numbers标志位,表示客户端请求建立连接。

客户端选择一个初始序列号并将其放入报文中,该序列号用于标识从客户端到服务器的数据包。

 

第二次握手(SYN-ACK)

第二次握手是TCP三次握手握手过程中的第二步,它是建立TCP连接的关键步骤之一。

在第二次握手中,服务器收到客户端发送的SYN(Synchronize Sequence Numbers)报文后,确认连接请求。

并向客户端发送一个带有SYN和ACK(Acknowledgment)标志位的报文,表示服务器接受了连接请求

如下图红色圆圈2所示:

TCP三次握手详解(图解全过程)-mikechen

在第二次握手完成后,TCP连接进入了建立状态,双方都知道彼此已经准备好进行通信,并且已经协商好初始序列号,以确保正确地传输数据。

需要注意的是:

  • 第二次握手中服务器同时发送了SYN和ACK标志位的报文,这表示服务器既确认了连接请求,又同意建立连接。
  • 客户端在收到服务器的确认报文后,也会发送一个确认报文以确保连接的双向性。

 

第三次握手(ACK)

第三次握手是TCP三次握手握手过程中的最后一步,它是建立TCP连接的关键步骤之一。

在第三次握手中,客户端收到服务器发送的带有SYN和ACK标志位的报文后,确认连接请求。

并向服务器发送一个带有ACK标志位的报文,表示客户端接受了服务器的连接确认。

如下图红圈3所示:

TCP三次握手详解(图解全过程)-mikechen

客户端:

  • 客户端确认连接请求,并将TCP报文的ACK标志位设置为1,表示客户端接受了服务器的连接确认。
  • 客户端将确认号字段设置为服务器的初始序列号加1,表示客户端期望接收的下一个序列号。
  • 客户端将TCP报文发送给服务器,执行第三次握手。

服务端:

  • 服务器确认连接请求,并将TCP报文的ACK标志位设置为1,表示服务器接受了客户端的连接确认。
  • 服务器将确认号字段设置为客户端的初始序列号加1,表示服务器期望接收的下一个序列号。
  • 服务器将TCP报文发送给客户端,执行第三次握手。

此时,TCP连接已经建立,通信双方可以开始传输数据。

需要注意的是:

  • 第三次握手中客户端和服务器都发送了带有ACK标志位的报文,表示双方都确认了连接的建立。
  • 这个阶段的目的是确保连接的双向性,客户端和服务器都能够发送和接收数据。
  • 因此,第三次握手是建立TCP连接的最后一步。

总结:

客户端和服务器之间的三次握手过程确保了双方都准备好进行通信,并建立了初始序列号,以便正确地传输数据。

这个过程是为了处理网络中可能出现的延迟、重复数据包、失序数据包等问题,以确保数据的可靠性和正确性。

三次握手完成后,TCP连接处于建立状态,可以进行数据传输。

在连接建立后,双方可以使用TCP的可靠传输特性来保证数据的完整性和顺序性。

需要注意的是,关闭TCP连接通常需要进行四次握手,以确保连接的双方都能够安全地关闭连接。

评论交流
    说说你的看法