TCP断开衔接是怎样的 字节二面

前言

大家好,我是田螺。

有位星球粉丝去字节面试,被问了这道题:TCP断开衔接是怎样样的?

大家第一觉得会不会不知道怎样去回答?其实呢,就是换个角度在问TCP的四次挥手环节而已。

TCP断开衔接(也称为TCP衔接中断或封锁衔接)是指在TCP协定中,通讯双方完结会话并监禁占用的资源的环节。断开衔接经常使用了一个相似于建设衔接的四次挥手环节,以确保双方都安保地封锁衔接。

假设是我,我会按这几个角度来回答:

1. 四次挥手环节

2. TCP挥手为什么须要四次呢?

举个例子吧! 假定小明和小红打电话聊天,差不多要完结了:

小明和小红打电话聊天,通话差不多要完结时,小红说“我没啥要说的了”,小明回答“我知道了”。然而小明或许还会有要说的话,小红不能要求小明跟着自己的节拍完结通话,于是小明或许又叽叽歪歪说了一通,最后小明说“我说完了”,小红回答“知道了”,这样通话才算完结。”

3. TIME-WAIT 形态为什么须要期待 2MSL

MSL,Maximum Segment Lifetime,是指一个 TCP 报文段在网络中存活的最长期间、2MSL,即两个最大段生命周期。我们先回头看看挥手这张图:

专业点说,期待2MSL是为了确保 TCP 衔接的牢靠性和分歧性。

3.1. 确保最后的 ACK 能够被对方接纳

当被动封锁的一方发送最后一个 ACK 后,假设这个 ACK 报文在传输环节中失落,另一方会从新发送 FIN 报文。TIME-WAIT 形态的 2MSL 期间足够长,可以确保假设对方没有收到 ACK,重发的 FIN 报文依然能够被接纳到并解决,从新发送 ACK。假设被动封锁的一方在发送 ACK 后立刻封锁了衔接,那么对方假设重发 FIN,将不会收到照应,或许造成衔接未能反常封锁。

3.2 防止旧的重复报文段影响新衔接

TCP 衔接的每个报文段都有一个序列号。假设一个 TCP 衔接在封锁后立刻被从新建设,而之前的衔接中传输的某些报文由于网络提前而滞后抵达,这些旧的报文段或许会被误以为是新衔接的一局部,从而惹起凌乱。TIME-WAIT 形态期待 2MSL 的期间,足够让网络中一切旧的报文段都过时,从而防止它们对新衔接形成搅扰。

3.3 一些相似的后端思维

邮件确认链接:

在用户注册或重置明码时,系统通常会发送一封确认邮件,要求用户点击链接以验证其操作。这一环节或许设置一个有效期,在有效期内,假设用户没有成功确认,操作将被敞开。这相似于 TIME-WAIT 形态中的期待,以确保操作确实认和安保。

您可能还会对下面的文章感兴趣: