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

2021-03-17  本文已影响0人  千夜零一

概述

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

三次握手

过程:

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


四次握手

过程:

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

拓展性问题

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

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

上一篇 下一篇

猜你喜欢

热点阅读