带你深入浅出新面经:五、TCP四次挥手过程,简述

此为面经第谈!可以关注我,每日带你深入浅出一个新面经。

我们要了解面经要如何“说”

很重要!很重要!很重要!

我们通常采取总-分-总方式来阐述!(有些知识点,你可以去了解,但是面经并不是需要全部了解的)

码农不易,各位学者学到东西请点赞支持支持

开始部分:

总:TCP四次挥手总览图(刻画在脑海里面!重要)。TCP四次挥手其实就是两个过程,互相发送FIN包和ACK包。

分:

首先是服务端收到客户端的发送的FIN包,然后回复ACK包,再进入CLOSE_WAIT状态。

如果此时应用程序还有数据要发送,则发送数据后再发送FIN包到客户端。

双端关闭都需要一个FIN包和一个ACK包回复的过程。

(挥手其实没什么难度)

那为什么需要四次挥手呢?

1.网络应用程序可能还有数据要发送,比如说缓存区的一些数据,所以不能将ACK包和FIN包合成一起发送(变为三次挥手,不合理),不然容易导致数据丢失。

2.将发送FIN包的控制权交由网络应用程序来处理。

是不是只可以调用closeshutdown来发送FIN包?

不是的,程序退出的时候,内核网络协议栈都会发送FIN包来完成四次挥手。

四次挥手的过程中,数据包丢失会发生什么?(两个流程其实都是类似的)

第一次挥手丢失FIN包,会进行多次超时重传FIN包,重传失败,超时后双方都会直接进入CLOSED状态。

第二次挥手丢失ACK包,ACK不会超时重传,直到超时,双方进入CLOSED状态。

第三次挥手丢失FIN包,会进行多次超时重传FIN包,重传失败,超时后双方都会直接进入CLOSED状态。

第四次挥手丢失ACK包,ACK不会超时重传,直到超时,双方进入CLOSED状态。

总:四次挥手的过程其实就是两个互相发送FIN包和ACK包的流程,一些细节在以上已经讲解到了。

 学习链接:https://xxetb.xetslk.com/s/3Kif2D

  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值