【计算机网络 - 基础问题】每日 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 参数控制。

相关推荐
自由的晚风8 分钟前
脑电波控制设备:基于典型相关分析(CCA)的脑机接口频率精准解码方法
人工智能·经验分享·笔记·算法·matlab·脑机接口·ssvep
AskHarries10 分钟前
Spring Boot对接twilio发送邮件信息
后端
白帽少女安琪拉13 分钟前
17.JavaScript 自动化侦察工具
网络·网络安全
李长渊哦25 分钟前
引入其他 YML 配置源 —— Spring Boot 中的 `import` 功能
数据库·spring boot·后端
高建伟-joe25 分钟前
Spring Boot Tomcat 漏洞修复
java·spring boot·后端·网络安全·tomcat
执沐29 分钟前
【计算机网络】第八版和第七版的主要区别,附PDF
计算机网络
19岁开始学习31 分钟前
cgi,php-cgi,fastcgi,php-fpm,nginx 小记
开发语言·nginx·php
小钊(求职中)31 分钟前
RabbitMQ从入门到实战-知识详情总结
java·服务器·spring boot·分布式·spring·面试·rabbitmq
拉不动的猪32 分钟前
刷刷题34(uniapp中级实际项目问题-1)
前端·vue.js·面试
代码猪猪傻瓜coding41 分钟前
【统计学相关笔记】有效估计与一致最小方差无偏估计 (UMVUE)
人工智能·笔记·机器学习