企业宣传,产品推广,广告招商,广告投放联系seowdb

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 状态中的等待,以确保操作的确认和安全。

© 版权声明
评论 抢沙发
加载中~
每日一言
不怕万人阻挡,只怕自己投降
Not afraid of people blocking, I'm afraid their surrender