网络面试合集
传输层的数据结构是什么?
就是在问他的协议格式:UDP&TCP
2.1.1三次握手
通信前,要先建立连接,确保双方都是在线,具有数据收发的能力。

2.1.2四次挥手
通信结束后,会有一个断开连接的过程,避免出现意外。

FIN请求的功能: 只能表示不再给对方发送数据,不代表不接受数据
CLOSE_WAIT:等待关闭,对方发送了FIN包,已经不再给自己发送数据,上层如果这时候还在继续recv,则会读完缓冲区数据后,不再阻塞,而是返回0.这种情况下就是等待上层针对这种情况的处理。
为什么握手是三次?
握手三次:俩次不安全,四次没必要
1.通信前,要先建立连接,确保双方都是在线,具有数据收发的能力。因此都要SYN
2.俩次不安全:
有可能SYN会延迟到达,与重发的SYN形成冲突(三次有状态要求)
防止恶意攻击,比如客户端发送SYN后就直接退出
3.四次没必要:没必要发送俩次报文,在一次回复中将对应比特位置置1即可
2.1.3.2 挥手是四次?
FIN请求只能表示主动关闭方不再发送数据,不代表不再接收数据。因此,被动关闭方收到FIN包并进行确认后,还有可能会继续发送数据。等待上层不再发送数据了,也要关闭套接字了才会发送FIN包。
因此挥手没有合并为三次。
2.1.3.3 三次握手失败,俩端如何处理?
客户端发送第一次握手请求失败了,客户端会重传请求SYN。
第二次握手失败服务端回复的ACK + SYN丢失,客户端会重传,服务端在等待对方ACK回复超时后,给客户端发送一个RST报文,然后释放资源。
第三次握手失败,服务器超时,回复RST,然后释放资源。
2.1.3.4 一台主机出现了大量的CLOSE_WAIT状态连接,是什么原因?
只有收到FIN请求并进行了确认回复的连接会进入CLOSE_WAIT状态
一直处于CLOSE_WAIT而没有进入下一个状态,是因为上层没有进行关闭套接字操作,也就是没有发送FIN,所以没有进入下一步
因此原因就是代码中没有针对断开连接的套接字进行关闭处理
2.1.3.5 TIME_WAIT状态有什么用,为什么不直接关闭套接字释放资源?
TIME_WAIT状态是主动关闭方在发送最后一次ACK后进入的状态
如果没有TIME_WAIT,主动关闭方直接释放套接字资源,有可能出现新启动的套接字使用了与之前相同的地址信息
而上次通信可能最后一次ACK丢失,一旦丢失被动关闭方会重传FIN
就会导致上一次通信因为最后一次ACK丢失,而遗留问题(重传FIN)对新连接造成影响
因此不能直接释放资源,需要等待俩个MSL时间,针对有可能存在的FIN重传进行处理,并保证上一次通信的所有数据都消失在网络中。
MSL:报文最大生命周期,一个报文在网络中最大能存在的时间。默认60s
2.1.3.6 一台主机上出现了大量TIME_WAIT状态连接,是什么原因?怎么处理?
TIME_WAIT是状态是主动关闭方在发送最后一次ACK后进入的状态,等待一段时间是为了处理有可能因为FIN丢失导致的FIN重传的处理
因此一台主机出现大量的TIME_WAIT连接,是因为主机上大量的主动关闭了连接,常见于爬虫服务器
TIME_WAIT等待时间是可以配置的,可以将时间缩短
有个套接字选项,叫做地址重用:setsockopt();
tcp连接管理中的保活机制
连接断开有个信息:recv会返回0,send会触发异常SIGPIPE
tcp通信中,如果客户端和服务端的通信频率并不高,中间突然断网了,没有四次挥手的机会,如果俩端通信频率很低,可能需要很久才能发现。
在通信中,客户端与服务器若长时间无通信(默认7200s),则tcp服务器会自动向客户端发送保活探测心跳包,要求对方进行响应(默认每隔75s),若连续多次都没有收到响应(默认9次),则认为断开连接。
这些数据都可配置。甚至可以用套接字选项设置。
通常网络通信程序,在初始化阶段都会自定义SIGPIPE信号。
相关文章:
网络面试合集
传输层的数据结构是什么? 就是在问他的协议格式:UDP&TCP 2.1.1三次握手 通信前,要先建立连接,确保双方都是在线,具有数据收发的能力。 2.1.2四次挥手 通信结束后,会有一个断开连接的过程࿰…...
java+springboot+mysql智慧办公OA管理系统
项目介绍: 使用javaspringbootmysql开发的智慧办公OA管理系统,系统包含超级管理员,系统管理员、员工角色,功能如下: 超级管理员:管理员管理;部门管理;职位管理;员工管理…...
【教程】Tkinter实现Python软件自动更新与提醒
转载请注明出处:小锋学长生活大爆炸[xfxuezhang.cn] 文件下载:https://download.csdn.net/download/sxf1061700625/88134425 示例演示: 参考代码: import os import _thread import shutil import subprocess import sys import …...
音频深度学习变得简单:自动语音识别 (ASR),它是如何工作的
一、说明 在过去的几年里,随着Google Home,Amazon Echo,Siri,Cortana等的普及,语音助手已经无处不在。这些是自动语音识别 (ASR) 最著名的示例。此类应用程序从某种语言的语音音频剪辑开始&…...
反射简述
什么是反射反射在java中起到什么样的作用获取class对象的三种方式反射的优缺点图 什么是反射 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性&…...
Kotlin泛型的协变与逆变
以下内容摘自郭霖《第一行代码》第三版 泛型的协变 一个泛型类或者泛型接口中的方法,它的参数列表是接收数据的地方,因此可以称它为in位置,而它的返回值是输出数据的地方,因此可以称它为out位置。 先定义三个类: op…...
【后端面经】微服务构架 (1-6) | 隔离:如何确保心悦会员体验无忧?唱响隔离的鸣奏曲!
文章目录 一、前置知识1、什么是隔离?2、为什么要隔离?3、怎么进行隔离?A) 机房隔离B) 实例隔离C) 分组隔离D) 连接池隔离 与 线程池隔离E) 信号量隔离F) 第三方依赖隔离二、面试环节1、面试准备2、基本思路3、亮点方案A) 慢任务隔离B) 制作库与线上库分离三、章节总结 …...
复习之kickstart无人职守安装脚本
一、kickstart简介 kickstart是红帽发行版中的一种安装方式,它通过以配置文件的方式来记录linux系统安装的各项参数和想要安装的软件。只要配置正确,整个安装过程中无需人工交互参与,达到无人值守安装的目的。 二、kickstar文件的生成 进入/…...
CSS动画——实现波浪摇摆效果...
一、效果展示 以下主要实现四个动画: 元素上下摇摆动画波浪上下摇摆动画气泡上升及消失动画连续气泡右飘动画 二、实现思路 这里主要讲一下波浪上下摇摆动画和连续气泡右飘动画的实现思路 这里拿一张波浪图来举例解释实现波浪动画的思路: 波浪的摇…...
【MyBatis学习】Spring Boot(SSM)单元测试,不用打包就可以测试我们的项目了,判断程序是否满足需求变得如此简单 ? ? ?
前言: 大家好,我是良辰丫,在上一篇文章中我们学习了MyBatis简单的查询操作,今天来介绍一下Spring Boot(SSM)的一种单元测试,有人可能会感到疑惑,框架里面还有这玩意?什么东东呀,框架里面是没有这的,但是我们简单的学习一下单元测试,可以帮助我们自己测试代码,学习单元测试可以…...
JavaScript 类
本文内容学习于:后盾人 (houdunren.com) 1.可以使用类声明和赋值表达式定义类,推荐使用类声明来定义类 //类声明 class User {} console.log(new User()); //赋值表达式定义类 let Article class {}; console.log(new Article()); //类方法间不需要逗号…...
SpringBoot的static静态资源访问、参数配置、代码自定义访问规则
目录 1. 静态资源1.1 默认静态资源1.2 Controller高优先级1.3 修改静态资源的URL根路径1.4 修改静态资源的目录1.5 访问webjars依赖包的静态资源1.6 静态资源的关闭1.7 静态资源在浏览器的缓存1.8 静态资源实战1.9 通过代码自定义静态资源访问规则 1. 静态资源 查看源码如下&a…...
IO进、线程——线程(线程的创建、线程的退出、线程的回收、线程的分离和多线程并发编程)
线程 并发执行的轻量级进程 进程是资源分配的最小单位,线程是任务调度的最小单位 线程是进程的一部分,是任务调度的最小单位。一个进程可以包含多个线程,这些线程可以并发执行,共享进程的资源,但每个线程都有自己的…...
neo4j教程-Cypher操作
Cypher基础操作 Cypher是图形存储数据库Neo4j的查询语言,Cypher是通过模式匹配Neo4j数据库中的节点和关系,从而对数据库Neo4j中的节点和关系进行一系列的相关操作。 下面,通过一张表来介绍一下常用的Neo4j操作命令及相关说明,具…...
秋招算法备战第31天 | 贪心算法理论基础、455.分发饼干、376. 摆动序列、53. 最大子序和
贪心算法理论基础 贪心算法并没有固定的套路,唯一的难点就是如何通过局部最优,推出整体最优。如何验证可不可以用贪心算法呢?最好用的策略就是举反例,如果想不到反例,那么就试一试贪心吧。刷题或者面试的时候…...
页面生成图片或PDF node-egg
没有特别的幸运,那么就特别的努力!!! 中间件:页面生成图片 node-egg 涉及到技术node egg Puppeteer 解决文书智能生成多样化先看效果环境准备初始化项目 目录结构核心代码 完整代码https://gitee.com/hammer1010_ad…...
go常用知识点
go env -w GO111MODULEon go env -w GOPROXYhttps://goproxy.cn,direct 打包一个目录下的多个包时 go build ./… go install ./… 测试时,命令行:go test . //目录下所有单元测试都会执行 go test -v 目录 //测试覆盖率 go test -cover //使用cove…...
ComPDFKit PDF SDK(支持Web、Android、IOS、Windows、Server、API、跨平台)
1. SDK、API是什么? SDK是软件开发工具包的缩写,指的是一组用于开发软件应用的工具、库和文档。SDK包含一系列的函数、类和方法,开发人员可以使用这些工具和资源来开发、测试和部署应用程序。SDK可以提供各种功能和技术支持,如图…...
使用maven容器打包java项目
docker run --rm -v /path/to/your/microservice:/app -w /app maven:latest mvn clean package 解释一下上面的命令: docker run:运行Docker容器。--rm:在容器运行结束后自动删除容器,避免堆积未使用的容器。-v /path/to/you…...
超前端相关的学习网站和一些靠谱的小工具
CSS相关 1. CSS Battle - 在线比拼 CSS https://cssbattle.dev 在线比拼 CSS ,一个挺有趣的竞争性游戏,一共有12个级别,需要你用 HTML和 CSS 100%还原它给出的页面,然后再尽量减少代码,你也可以查看全球的排行榜&am…...
三极管实战指南:从NPN到PNP,手把手教你识别与使用(附常见误区解析)
三极管实战指南:从NPN到PNP,手把手教你识别与使用(附常见误区解析) 在电子设计的世界里,三极管就像电路中的"水龙头",控制着电流的流动。无论是简单的LED驱动电路,还是复杂的音频放大…...
从理论到实践:LSTM与Qwen1.5-1.8B GPTQ在时序预测任务中的对比
从理论到实践:LSTM与Qwen1.5-1.8B GPTQ在时序预测任务中的对比 最近在折腾时间序列预测,发现一个挺有意思的现象。大家一提到时序预测,脑子里蹦出来的第一个词可能就是LSTM,这几乎成了这个领域的“标配”。但另一边,以…...
银发健康消费“新战场”:线下渠道红利期开启,10+嘉宾重磅分享实战方法论
银发经济与连锁药店转型的双向奔赴整理 | AgeClub内容团队前言当前,中国银发经济已成为国内增长最快的赛道之一。数据显示,我国银发经济市场规模已突破 10 万亿元,未来整体规模有望超过 30 万亿元。精准对接优质渠道,成为众多银…...
LangChain工具绑定避坑指南:为什么你的bind_tools不工作?
LangChain工具绑定深度解析:从原理到实战的避坑指南 当你第一次尝试在LangChain中绑定自定义工具时,可能会遇到各种令人困惑的问题——工具明明定义了却无法调用,参数传递总是出错,或者LLM完全无视你的工具指令。这些问题往往不是…...
嵌入式系统模块化设计:内聚与耦合实战指南
1. 嵌入式模块设计的核心原则在嵌入式系统开发中,模块化设计质量直接影响着整个系统的生命周期成本。我经历过多个嵌入式项目后发现,那些后期维护成本高昂的系统,往往都存在模块边界模糊、依赖混乱的问题。模块化不是简单的代码分割ÿ…...
RRFLibraries:Duet 3D打印机固件的硬实时C++驱动库
1. RRFLibraries 项目概述RRFLibraries 是 RepRapFirmware 生态系统中高度工程化的底层软件基础设施,其定位并非通用型嵌入式库,而是专为 3D 打印固件——特别是 Duet 系列控制器(Duet 2 WiFi、Duet 3 Mainboard、Duet 3 Mini)——…...
Pixel Mind Decoder 安全加固指南:防止API滥用与敏感信息泄露
Pixel Mind Decoder 安全加固指南:防止API滥用与敏感信息泄露 1. 为什么API安全如此重要 当你把AI模型部署为公开API服务时,就像在互联网上开了一家24小时营业的商店。如果不做好安全防护,可能会遇到各种不速之客:恶意攻击者试图…...
硬件(6)——定时器
硬件中如何确定引脚电平的高低?硬件内部有一个比较器,类似门电路,有两个输入一个输出,其中一个输入接稳定的参考值(DCDC 3.3V),另一个输入接引脚。当引脚高于3.3V就输出高电平,引脚低于3.3V就输…...
Catia学习教程
写在前面 自学Catia的时候发现大部分教程在隔壁B站,CSDN上教程比较少,记录一下自己的学习过程,要有一定的AutoCAD和Solidworks基础,很多指令是相似的。 一、软件简介 CATIA(Computer Aided Three-dimensional Intera…...
永磁同步电机参数辨识:EKF算法的奇妙之旅
卡尔曼滤波EKF算法,针对于永磁同步电机的电阻、电感等参数的辨识,辨识速度快,效果好,适合入门童鞋参考学习:本商品 包含以下内容: (1)采用SVPWM矢量控制; (2&…...
