【计算机网络 - 基础问题】每日 3 题(三十二)

✍个人博客:https://blog.csdn.net/Newin2020?type=blog

📣专栏地址:http://t.csdnimg.cn/fYaBd

📚专栏简介:在这个专栏中,我将会分享 C++ 面试中常见的面试题给大家~

❤️如果有收获的话,欢迎点赞👍收藏📁,您的支持就是我创作的最大动力💪

📝推荐参考地址:https://www.xiaolincoding.com/(这个大佬的专栏非常有用!)

94. 第二次挥手丢失了,会发生什么?

当服务端收到客户端的第一次挥手后,就会先回一个 ACK 确认报文,此时服务端的连接进入到 CLOSE_WAIT 状态。

在前面我们也提了,ACK 报文是不会重传的,所以如果服务端的第二次挥手丢失了,客户端就会触发超时重传机制,重传 FIN 报文,直到收到服务端的第二次挥手,或者达到最大的重传次数。

95. 第三次挥手丢失了,会发生什么?

当服务端(被动关闭方)收到客户端(主动关闭方)的 FIN 报文后,内核会自动回复 ACK,同时连接处于 CLOSE_WAIT 状态,顾名思义,它表示等待应用进程调用 close 函数关闭连接。

此时,内核是没有权利替代进程关闭连接,必须由进程主动调用 close 函数来触发服务端发送 FIN 报文。

服务端处于 CLOSE_WAIT 状态时,调用了 close 函数,内核就会发出 FIN 报文,同时连接进入 LAST_ACK 状态,等待客户端返回 ACK 来确认连接关闭。

如果迟迟收不到这个 ACK,服务端就会重发 FIN 报文,重发次数仍然由 tcp_orphan_retries 参数控制,这与客户端重发 FIN 报文的重传次数控制方式是一样的。

96. 第四次挥手丢失了,会发生什么?

当客户端收到服务端的第三次挥手的 FIN 报文后,就会回 ACK 报文,也就是第四次挥手,此时客户端连接进入 TIME_WAIT 状态。

在 Linux 系统,TIME_WAIT 状态会持续 2MSL 后才会进入关闭状态。

然后,服务端(被动关闭方)没有收到 ACK 报文前,还是处于 LAST_ACK 状态。

如果第四次挥手的 ACK 报文没有到达服务端,服务端就会重发 FIN 报文,重发次数仍然由前面介绍过的 tcp_orphan_retries 参数控制。

相关推荐
wellshake6 分钟前
Pyppeteer:如何在 Python 中使用 Puppeteer 和 Browserless?
开发语言·python·node.js
v_cxsj81314 分钟前
Springboot网上书城小程序—计算机毕业设计源码38707
数据库·spring boot·后端·python·小程序·django·课程设计
芯冰乐16 分钟前
Library介绍(四)
后端·fpga开发
百锦再17 分钟前
IT招聘乱象的全面分析
开发语言·学习·机器人
云雾栀子青,18 分钟前
简单的网络爬虫爬取视频
笔记·爬虫·python·学习·网络爬虫
码农超哥同学22 分钟前
Python知识点:在Python环境中,如何使用Transformers进行预训练语言模型应用
人工智能·python·语言模型·面试·编程
杰哥在此30 分钟前
Python知识点:如何应用Python工具,使用NLTK进行语言模型构建
开发语言·python·语言模型·面试·编程
Java指南修炼40 分钟前
一款完全开源并免费的监测与分析系统,支持监测,预警,分析,报告,支持本地化部署(附源码)
后端·开源·源码·项目
dbyoung44 分钟前
Windows 下纯手工打造 QT 开发环境
开发语言·windows·qt
进击ing小白1 小时前
Qt程序国际化
开发语言·qt