计算机网络知识等汇总补充

在这里插入图片描述


计算机网络知识汇总补充

  • 一、四次挥手
    • 1、为什么TCP要等待2MSL
    • 2、如果说一个系统中,有大量的time_wait和close_wait,会是什么原因?
  • 二、你是怎么解决粘包问题?
  • 三、你觉得哪些场景适合redis
  • 四、redis的持久化策略
  • 五、你会怎么保证mysql 和Redis的一致性
  • 六、事务隔离级别和MVCC控制的理解?
  • 七、对称加密非对称加密
  • 八、堆和栈的不同
  • 九、如果A服务调B服务出现失败:下游服务调用失败,或者无法响应请求了,怎么优化
  • 十、redo log,bin log, undo log

一、四次挥手

在这里插入图片描述

1、刚开始客户端和服务端都处于连接状态,假如客户端发起关闭请求
2、第一次挥手:客户端向服务器发送FIN报文,发完进入FIN_WAIT_1状态,即主动关闭TCP连接,不再发送数据,但是可以接收服务器发来的报文,等待服务器回复。;
3、第二次挥手:服务器接到FIN报文,返回一个ACK报文,表名自己接收到此报文,服务器进入CLOSE_WAIT等待关闭状态,此时客户端就知道服务端接收到自己的断开连接的请求,进入FIN_WAIT_2状态,TCP处于半关闭状态,但是服务器可能还有数据要传输。
4、第三次挥手:服务器关闭客户端连接,发送FIN报文给客户端数据传输完毕,等待客户端回应。
5、第四次握手:客户端收到FIN报文后,发送一个ACK给服务端做为应答,此时客户端处于TIME_WAIT状态,这个状态是为了等待足够的时间以确保TCP接收到连接中断请求的确认

1、为什么TCP要等待2MSL

注意:这时服务器到客户端的TCP连接并未被释放,客户端需要经过等待2MSL(MSL表示一个报文的来回时间)后才会进入CLOSED状态,这样做的目的是确保服务器收到自己的ACK报文,如果在规定时间没有收到客户端发的ACK,那么服务器会重发FIN,客户端再次收到FIN报文,就知道自己的ACK丢了,然后会重发ACK给服务器。服务器收到ACK后,就会关闭连接,处于CLOSE状态了。

2、如果说一个系统中,有大量的time_wait和close_wait,会是什么原因?

未正确关闭连接
处理连接过程中出错
网络延迟或故障

二、你是怎么解决粘包问题?

1、粘包定义:粘包指的是数据和数据之间没有明确的分界线导致不能正确读取数据。
2、这意味着UDP根本不会粘包,但是会丢数据,不可靠。意味着: TCP传输数据是可靠的,但是会粘包。
所谓粘包问题主要还是因为:
1、接收方不知道消息之间的界限,不知道一个消息要提取多少字节的数据所造成的。 (服务器端出现黏包)
2、tcp在发送数据少且间隔时间短的数据时,会将几条和并一起发送。(客户端出现黏包)

3、黏包的解决办法:
为字节流加上一个报头,告诉发送的字节流总大小,然后接收端来一个死循环接收完所有数据。用struck将序列化后的数据长度打包成4个字节(4个字节完全够用)。
客户端把数据长度封装成一个固定大小的数据, 这时服务端就可以指定读取固定大小的内容,不会读取数据的内容,服务端只要根据数据长度再来接收数据内容就好了,所以客户端连续两次发数据(文件) , 不会粘包,因为服务器端每次接收都只接收了本次该接收的数据。

4.你使用TCP的时候会出现,那么UDP会出现吗
- 不会出现

三、你觉得哪些场景适合redis

  • String(字符串):缓存、计数器限流
  • Hash(哈希):存储对象数据、统计类数据
  • List(列表):文章列表
  • Set(无序集合):标签、点赞、签单
  • Zset(有序集合):排行榜

redis你使用的场景
string异步执行任务,消息队列

四、redis的持久化策略

  • RDB持久化:RDB持久化会在指定的时间间隔内生成一个快照文件(Snapshot),将数据集的内容写入一个压缩的二进制文件中。RDB持久化方式适合数据集较大,但不要求数据丢失太多的场景。可以通过配置文件设置快照生成的条件和时间间隔。

  • AOF持久化:AOF持久化是以日志的方式记录每个写操作的命令,在Redis重启时重新执行这些命令来恢复数据。AOF持久化方式保证了每个写操作的数据一致性和持久性,但相比RDB会更占用磁盘空间和对性能有一定影响。

五、你会怎么保证mysql 和Redis的一致性

  • 淘汰缓存:在更新 MySQL 数据后,异步地更新 Redis 中的数据。这种方式可以降低对数据库写入性能的影响,但可能会导致短暂的数据不一致。
  • 更新缓冲:在系统中同时写入 MySQL 和 Redis,确保两者的数据保持一致。这种方式可以保证每次写入操作都同时更新 MySQL 和 Redis,但会增加系统的写入负载。
  • 消息队列:使用消息队列来实现 MySQL 和 Redis 数据的同步。在数据库更新后发送消息到队列,消费者将消息同步到 Redis 中,确保数据的一致性。
  • 监控和报警:实时监控 MySQL 和 Redis 的数据一致性,一旦发现数据不一致情况,及时进行报警并修复。

六、事务隔离级别和MVCC控制的理解?

  • 用于处理并发事务的一致性和隔离性

  • MVCC是一种并发控制机制,常用于数据库管理系统中,用于解决并发访问数据库时的数据一致性问题。MVCC通过在每个数据项上维护多个版本来实现并发控制。

    • MVCC的核心思想是在读操作和写操作之间创建一个快照,使得读操作不会被写操作所阻塞,从而提高并发性能。具体实现方式如下:
    1. 版本号:每个数据项都会有一个版本号,用于标识该数据项的版本。当一个事务开始时,它会获得一个全局的事务ID,并将该ID作为版本号。

    2. 读操作:当一个事务执行读操作时,它会读取最新的符合条件的版本。如果存在比当前事务ID更大的版本号,则说明该数据项已被其他事务修改,当前事务需要等待。

    3. 写操作:当一个事务执行写操作时,它会创建一个新的版本,并将新版本的数据写入数据库。同时,该事务会更新所有已读取该数据项的事务的版本号,使得它们无法再读取旧版本。

    4. 回滚:如果一个事务执行过程中发生了错误或者被取消,它可以通过回滚操作将数据库恢复到事务开始之前的状态。回滚操作会撤销该事务对数据库的所有修改。

    • MVCC的优点是提高了并发性能和并发控制的粒度,减少了锁的使用,从而减少了事务之间的冲突。但也存在一些缺点,如增加了存储空间的开销和读操作的复杂性。

七、对称加密非对称加密

对称加密

  • 对称加密使用相同的密钥(称为私钥)来加密和解密数据。
  • 加密和解密过程使用同一个密钥,因此对称加密算法在加密和解密速度上通常比较快。
  • 常见的对称加密算法包括AES(高级加密标准)等。

非对称加密

  • 非对称加密使用一对密钥(公钥和私钥)来加密和解密数据。
  • 公钥用于加密数据,私钥用于解密数据,这两个密钥是相关联的,但不相同。
  • 非对称加密算法能够实现数据的安全传输和身份认证,但由于涉及复杂的数学运算,其加密和解密速度较慢。
  • 常见的非对称加密算法包括 RSA等。

八、堆和栈的不同

九、如果A服务调B服务出现失败:下游服务调用失败,或者无法响应请求了,怎么优化

  1. 实现重试机制

    • 在A服务发现调用B服务失败时,可以实现简单的重试机制,尝试重新调用B服务一定次数,以确保请求能够成功响应。
    • 重试机制可以设置一定的重试间隔和次数,避免过多的请求导致负担增加。
  2. 实现服务降级

    • 当B服务无法响应或出现异常时,A服务可以实现服务降级策略,返回默认值或者缓存数据,保证用户体验。
    • 服务降级可以在一定程度上减少对下游服务的依赖,提高系统的可用性。
  3. 设置超时时间

    • 为A服务调用B服务设置合理的超时时间,以避免长时间等待响应导致的性能问题。
    • 当超过设定的超时时间后,可以及时进行异常处理或重试操作。

十、redo log,bin log, undo log

  • binlog:主节点 binlog,主从复制的基础是主库记录数据库的所有变更记录到 binlog。binlog是数据库服务器启动的那一刻起,保存所有修改数据库结构或内容的一个文件。
  • undo log记录事务提交前的状态,更新前的值,用于事务回滚;
  • redo log记录事务提交后的状态,更新后的值,用于数据恢复,持久化

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/536323.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Leetcode算法训练日记 | day23

一、修剪二叉搜索树 1.题目 Leetcode:第 669 题 给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low, high]中。修剪树 不应该 改变保留在树中的元素的相对结构 (即&#xff…

huggingface连不上的解决方案

不能科学上网的同学们, 代码中加载AI模型的时候, 会有下面的报错 We couldnt connect to https://huggingface.co to load this file, couldnt find it in the cached files and it looks like OFA-Sys/chinese-clip-vit-base-patch16 is not the path to a directory containi…

Flask基于flask_login实现登录、验证码

flask_login 是一个 Flask 扩展,用于在 Flask web 应用中实现用户会话管理。它允许你跟踪哪些用户已经登录,并管理他们的登录状态。flask_login 提供了用户认证的基础结构,但具体的用户验证(如用户名和密码检查)和存储…

3D Web轻量引擎HOOPS Communicator装配制造流程演示

介绍 该演示介绍了使用HOOPS Communicator的独特工作流程,该工作流程从零件列表中加载零件,并使用自定义配合操作符(例如共线、同心和共面)构建装配模型。该工作流程可用于各种行业,例如维护手册、工作指令或电子商务…

Python中sort()函数、sorted()函数的用法深入讲解(具体实例:蓝桥杯数位排序)

前置知识: 可迭代对象的定义:可迭代对象是指可以被迭代或遍历的对象,即可以使用循环结构对其进行逐个访问的对象。 在Python中常见的可迭代对象有:列表(list)、元组(tuple)、字符串(sting&…

[CTF]使用浏览器firefox插件伪装IP地址

来源:https://jingyan.baidu.com/article/ab0b56306d9890c15bfa7d6a.html 浏览器想必是大家再熟悉不过的东东了,我们会经常使用它访问下载一些页面或文件。但是对于它的更深层次的功能可能就陌生了。比如说一些网站后台会记录我们的IP地址,假…

【AI面试】FPN、PANet、SPP、ASPP、Adaptive feature pooling

经常可以看到各个论文发出来,加入的各种trick。这些改进点,一般都是在前人的基础上,进行了一些修改。比如FPN到PANet的改进,就是为了改进前者存在的一些问题。 这里就把这些trick,给汇集到一起,看看他们的发展历史,看看他们之间有什么区别,又是在哪些地方做的改进。这…

OpenHarmony 3.2 Release版本Codec HDI适配过程

简介 OpenHarmony Codec HDI(Hardware Device Interface)驱动框架基于 OpenMax 实现了视屏硬件编解码驱动,提供 Codec 基础能力接口供上层媒体服务调用,包括获取组件编解码能力、创建组件、参数设置、数据的轮转和控制、以及销毁…

uniapp h5项目实现多选按钮/多选标签/多选框

需求&#xff1a;实现简单多选功能&#xff0c;遍历数据&#xff0c;添加样式 1.效果图 2.以下代码粘贴到代码中&#xff0c;可直接运行&#xff0c;html代码 <view class"page index"><view class"list-box"><view v-for"(item,in…

智能网络新纪元:机器学习赋能未来计算机网络高速发展

&#x1f9d1; 作者简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向的学习指导…

赋能技术 助锂制造|青软青之助力锂电检测行业数字化升级

在全球范围内&#xff0c;新能源转型已成为时代的必然选择。随着“双碳”目标的深入推进&#xff0c;这一趋势愈发明显。而作为新能源领域的一颗璀璨明珠&#xff0c;锂电池的研发、产业链建设和技术创新&#xff0c;无疑是这场能源革命的核心所在。其产业链的日趋完善、技术的…

企业培训系统私有化解决方案:PlayEdu

PlayEdu&#xff1a;打造私有化的企业智慧教育平台&#xff0c;赋能全员高效成长&#xff01;- 精选真开源&#xff0c;释放新价值。 概览 随着企业不断发展及市场竞争加剧&#xff0c;内部培训的重要性日益凸显。然而&#xff0c;在实施过程中&#xff0c;如何确保培训内容与…

2024个人动态线条导航HTML源码

源码介绍 2024个人导航HTML源码&#xff0c;源码由HTMLCSSJS组成&#xff0c;记事本打开源码文件可以进行内容文字之类的修改&#xff0c;双击html文件可以本地运行效果&#xff0c;也可以上传到服务器里面&#xff0c;重定向这个界面 源码下载 2024个人导航HTML源码

进军俄罗斯市场,一站式Yandex广告开户与代运营服务

俄罗斯作为欧洲最大的经济体之一&#xff0c;拥有庞大的消费者群体和独特的市场环境&#xff0c;成为了众多国际商家关注的焦点。要有效地触达这片潜力无限的市场&#xff0c;精准且高效的网络营销策略至关重要。利用Yandex——俄罗斯最大的搜索引擎与数字广告平台&#xff0c;…

计算机网络-浏览器解析到URL对应的IP地址的时间

声明&#xff1a;原文转载链接出自&#xff1a; 哈工大Mooc——计算机网络&#xff1a;作业3 假设你在浏览某网页时点击了一个超链接&#xff0c;URL为“https://www.kicker.com.cn/index.html”&#xff0c;且该URL对应的IP地址在你的计算机上没有缓存&#xff1b;文件index…

路由器如何端口映射到外网?

随着互联网的发展和普及&#xff0c;远程访问已经成为了现代社会的一个重要需求。在复杂的网络环境下&#xff0c;特别是涉及异地组网的情况下&#xff0c;实现远程访问变得更加困难。本文将介绍一种名为【天联】的组网产品&#xff0c;它可以解决复杂网络环境下的远程连接问题…

最优算法100例之41-用两个栈实现队列

专栏主页:计算机专业基础知识总结(适用于期末复习考研刷题求职面试)系列文章https://blog.csdn.net/seeker1994/category_12585732.html 题目描述 用两个栈实现队列 题解报告 stack<int> stack1; stack<int> stack2; void push(int node) {stack1.push(node);…

极狐GitLab对接OAuth2实现SSO

本文作者&#xff1a;极狐(GitLab) 高级解决方案架构师 武让 GitLab 是一个全球知名的一体化 DevOps 平台&#xff0c;很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门为中国程序员服务。可以一键式部署极狐GitLab。 企…

windows停掉jenkins服务

在Windows系统中&#xff0c;如果你需要停止Jenkins服务&#xff0c; 使用服务管理器&#xff08;Service Manager&#xff09;: 打开“运行”对话框&#xff08;Win R&#xff09;&#xff0c;输入services.msc&#xff0c;然后回车。 在服务列表中找到“Jenkins”服务&am…

网工基础协议——IP地址

IP地址的概念&#xff1a; IP 地址是我们进行TCP/IP通讯的基础&#xff0c;每个连接到网络上的计算机都必须有一个!P地址。我们目前使用的IP地址是32位的&#xff0c;通常以点分十进制表示。例如:192.168.0.181。IP地址的格式为: IP地址 网络地址 主机地址 或者 |P地址主机地…