之前杜老师为大家讲过 TCP 的三次握手,通过三次握手,我们可以建立 TCP 的连接,然后进行数据传输,那么数据传输完成之后,如何断开 TCP 的连接?今天杜老师为大家讲解 TCP 的四次挥手!
在将四次挥手之前,我需要大家先知道,什么是全双工和半双工。
半双工是在同时刻,只允许数据在一个方向传输,它实际上是一种切换方向的单工通信;在同一时间只可以有一方接受或发送信息,可以实现双向通信,如对讲机。
全双工是允许数据同时在两个方向上传输,它要求发送设备和接收设备都有独立的接收和发送能力;在同一时间可以同时接受和发送信息,实现双向通信,例如电话通信。
TCP 的数据通信,则是全双工的通信,所以不管客户端还是服务端,都可以同时上传和下载数据。
客户端在与服务端完成数据通信之后,客户端会主动断开数据连接,发送断开请求,此请求会收到服务端的确认信息,之后则断开客户端向服务端的数据流。需要注意的是:客户端不能向服务端再发送数据,但服务端仍可以继续给客户端发数据,这就好比电话这头的你不想说了,但你不能让另一端闭嘴。
直接服务端会向客户端发送断开请求,并收到客户端确认,连接彻底断开。
在断开请求和确认信息收到之前,都会有一个等待的时间,是为了确保请求信息和确认信息可被对方收到,防止长时间保持连接而浪费资源。
另外上面提到的断开连接后,则不可以发送数据,这里的数据不包含确认数据。