177.jpg?x-oss-process=image/auto-orient,1/quality,q_90/watermark,image_bG9nby5wbmc_eC1vc3MtcHJvY2Vzcz1pbWFnZS9yZXNpemUsUF8yMA,g_center,t_50,x_10,y_10

之前杜老师为大家讲过TCP的三次握手,通过三次握手,我们可以建立TCP的连接,然后进行数据传输,那么数据传输完成之后,如何断开TCP的连接?今天杜老师为大家讲解TCP的四次挥手!

技术前提

在将四次挥手之前,我需要大家先知道,什么是全双工和半双工。

半双工是在同时刻,只允许数据在一个方向传输,它实际上是一种切换方向的单工通信;在同一时间只可以有一方接受或发送信息,可以实现双向通信,如对讲机。

全双工是允许数据同时在两个方向上传输,它要求发送设备和接收设备都有独立的接收和发送能力;在同一时间可以同时接受和发送信息,实现双向通信,例如电话通信。

TCP的数据通信,则是全双工的通信,所以不管客户端还是服务端,都可以同时上传和下载数据。

挥手图示

图示如下:

177-1.jpg?x-oss-process=image/auto-orient,1/quality,q_90/watermark,image_bG9nby5wbmc_eC1vc3MtcHJvY2Vzcz1pbWFnZS9yZXNpemUsUF8yMA,g_center,t_50,x_10,y_10

图示解读

客户端在与服务端完成数据通信之后,客户端会主动断开数据连接,发送断开请求,此请求会收到服务端的确认信息,之后则断开客户端向服务端的数据流。需要注意的是:客户端不能向服务端再发送数据,但服务端仍可以继续给客户端发数据,这就好比电话这头的你不想说了,但你不能让另一端闭嘴。

直接服务端会向客户端发送断开请求,并收到客户端确认,连接彻底断开。

相关扩展

在断开请求和确认信息收到之前,都会有一个等待的时间,是为了确保请求信息和确认信息可被对方收到,防止长时间保持连接而浪费资源。

另外上面提到的断开连接后,则不可以发送数据,这里的数据不包含确认数据。



 评论