美文网首页
TCP的三次握手、四次挥手过程和面试常见问题

TCP的三次握手、四次挥手过程和面试常见问题

作者: 千夜零一 | 来源:发表于2021-03-17 23:46 被阅读0次

概述

  三次握手是指Client端和Server端建立连接的过程,而四次挥手是指Client端和Server端断开连接的过程。

三次握手

过程:

  为了准确无误的将数据发送到指定IP处,TCP协议采用了三次握手的策略,如下步骤所示:

  • 1、客户端采用TCP协议将带有SYN标志的数据包发送给服务器,等待服务器的确认。
  • 2、服务器端在收到SYN的数据包后,必须确认SYN,即自己发送的ACK应答信息,同时,自己也将会向客户端发送一个SYN标志。
  • 3、客户端在接收到服务器短的SYN+ACK包后,自己会向服务器发送ACK包,完成三次握手。那么客户端和服务器正式建立了连接,开始传输数据。

四次握手

过程:

  1. 客户端发送一个FIN报文给服务器,表示我将关闭客户端到服务器端这个方向的连接。
  2. 服务器收到报文后,发送一个ACK应答信息给客户端,表示我还有数据需要进行传输,传输完成后通知您。
  3. 服务器发送一个FIN报文给客户端,表示自己也将关闭服务器端到客户端这个方向的连接。
  4. 客户端收到报文后,发回一个ACK报文给服务器,同时将自己设置成等待状态。

拓展性问题

【问题1】为什么连接的时候是三次握手,关闭的时候却是四次握手?

答:因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,"你发的FIN报文我收到了"。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。

相关文章

网友评论

      本文标题:TCP的三次握手、四次挥手过程和面试常见问题

      本文链接:https://www.haomeiwen.com/subject/jfiycltx.html