当前位置: 首页 > 科技观察

TCP你需要知道的四次挥手

时间:2023-03-14 08:21:22 科技观察

大家好,我是前端西瓜哥。今天给大家讲讲TCP的四次浪潮。TCP连接建立一段时间后,如果要断开TCP连接,会执行TCP四次挥手流程,完成断开操作。TCP四次的过程有点像TCP的三次握手建立连接。下图显示了TCP标头的结构。我们的TCP四路波主要用在黄色部分。与三次握手的发起者必须是客户端不同,断开TCP连接的发起者可以是任何一方。为了便于说明,下面我们将客户端描述为发起者。下面我们看一下TCP四路挥手过程的示意图。对于第一波,客户端向服务器发送TCP请求,包括TCP标头。FIN设置为1。seq设置为随机数x。FIN是一个flag,表示finish,1等于true。seq是序列号,是存放数据的地方。这里我们设置成一个随机数给服务器确认,从而对应这个TCP请求。第二次挥手,服务器发送一个TCP,以及TCP头。ACK设置为1(确认,表示“收到”)。ack确认号设置为x+1(x来自第一波)。当客户端收到这个TCP请求时,就意味着客户端到服务器的通道已经关闭,你不能再向服务器发送正常的数据请求。这时,数据仍然可以从服务器发送到客户端。如果服务器还没有来得及响应之前的一些TCP请求,它仍然可以在第二波和第三波期间返回。第三次挥手,服务器向客户端发送TCP请求:FIN设置为1,seq设置为随机数y。与第一次挥手类似,但这次发送者是服务器。第四次挥手,客户端向服务器发送一个TCP请求:ACK设置为1。ack将确认号设置为y+1。服务器收到这个请求后,服务器就可以成功地变成关闭(CLOSE)状态。客户端在进入关闭状态之前会等待一段时间,因为第四次挥手可能没有成功发送到服务器,所以等一会看服务器是否会因为没有收到第四次挥手而重新发送第一次挥手。三波。结局不同于TCP三次握手。有四次TCP关闭连接。这是因为在第二波和第三波之间,可能有一些服务器需要发送和返回的慢数据,所以这两个波并没有合并。