TCP 的三次握手、四次挥手(二)

87 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第22天,点击查看活动详情

前言

本文是TCP 的三次握手、四次挥手的第二篇,主要记录了TCP 的四次挥手、及其过程的目的等。

TCP 四次挥手

TCP 连接的释放需要发送四个包,因此称为四次挥手,客户端或服务端均可主动发起挥手。

刚开始双方都处于ESTABLISHED 状态,假设是客户端先发起关闭请求。四次挥手的过程如下: 在这里插入图片描述

FIN-WAIT-1 - 等待远程TCP的连接中断请求,或先前的连接中断请求的确认; CLOSE-WAIT - 等待从本地用户发来的连接中断请求; FIN-WAIT-2 - 从远程TCP等待连接中断请求; LAST-ACK - 等待原来发向远程TCP的连接中断请求的确认; TIME-WAIT - 等待足够的时间以确保远程TCP接收到连接中断请求的确认; FIN :连接终止位 ACK:确认报文段

TCP 四次挥手的过程

  • 第一次挥手:客户端发送一个 FIN 报文此时客户端处于 FIN_WAIT1 状态,等待服务端的确认。

  • 第二次挥手:服务端收到 FIN 之后,会发送 ACK 报文,此时服务端处于 CLOSE_WAIT 状态。

  • 第三次挥手:服务端断开连接,和客户端一样,发送 FIN + ACK报文,此时服务端处于 LAST_ACK 的状态,等待客户端的确认。

  • 第四次挥手:客户端收到 FIN 之后,发送一个 ACK 报文作为应答,此时客户端处于 TIME_WAIT (时间等待)状态。

四次挥手的目的

TCP的连接是全双工的,所以连接的拆除需要单独将两个通道分别拆除,而四次挥手所做的事情就是拆除两条通道和释放资源。

本文到此结束

如果大家还有什么其他想法,欢迎在评论区交流!