计算机基础知识复习8.29

2024-08-30 07:12

本文主要是介绍计算机基础知识复习8.29,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

DNS解析过程

客户端首先会发出一个DNS请求,问www.server.com的IP是什么,并发给本地DNS服务器(也就是客户端的TCP/IP设置为填写的DNS服务器地址

本地域名服务器收到客户端的请求后,如果缓存里的表格能找到www.server.com,则它直接返回IP地址,如果没有,本地DNS会去问他的根域名服务器:www.server.com的IP地址是什么吗,根域名服务器是最高层次的,他不直接用于域名解析,而是指出一条道路

根DNS收到来自本地DNS的请求后,发现后置是.com,说www.server.com这个域名归.com区域管理,我给你.com顶级域名服务器地址,你去问问

本地DNS收到顶级域名服务器的地址后,发起请求问 能告诉我www.server.com的IP地址吗

顶级域名服务器说:我给你负责www.server.com区域的权威dns服务器的地址,你去问他

本地DNS于是转向问权威DNS服务器,www.server.com对应的IP是什么

权威DNS服务器查询后将对应的IP地址x.x.x.x告诉本地DNS

本地DNS再将IP地址返回客户端,客户端和目标建立连接

进程间通信方式

管道通信,就是内核里的一串缓存,从管道的一段写入的数据,实际上是缓存在内核中的,另一端读取,也就是从内核中读取这段数据,管道传输的数据是无格式的流且大小受限

消息队列是保存在内核中的消息链表,在发送数据时,会分成一个个独立的数据单元,也就是消息体,消息体是用户自定义的数据类型,消息的发送方和接收方要约定好消息体的数据类型,所以每个消息体都是固定大小的存储块,不像管道是无格式的字节流数据,如果进程从消息队列中读取了消息体,内核就会把这个消息体删除。消息队列生命周期随着内核,如果没有释放消息队列或者关闭操作系统,消息队列会一直存在。

共享内存的机制就是拿出一块虚拟地址空间来,映射到相同的物理内存中,这样这个进程写入的东西,另外一个进程马上就能看到了,就不需要拷贝来拷贝去,大大提高了进程间通信的速度

信号量其实是一个整型的计数器,主要用于实现进程间的互斥与同步,而不是用于缓存进程间通信的数据。

为什么需要Time_Wait状态

主动发起关闭连接的一方,才会有TIME_WAIT状态

采取TIME_WAIT状态,主要原因:

防止历史连接中的数据,被后面相同四元组的连接错误的接受。采用2MSL时长,足以让两个方向上的数据包都被丢弃,使得原来连接的数据包在网络中都自然消失,再出现的数据包一定都是新建立连接所产生的

保证被动关闭连接的一方,能被正确的关闭。Time_wait作用是等待足够的时间以确保最后的ack能让被动关闭方接受,从而帮助其正常关闭

TIME_WAIT过多的危害

占用系统资源,比如文件描述符号,内存资源,CPU资源,线程资源

占用端口资源,端口资源也是有限的。

如果客户端的TIME_WAIT状态过多,占满了所有端口资源,那么就无法对目的IP+目的Port都一样的服务端发起连接,但是被使用的端口,还是可以继续对另一个服务端发起连接的

如果服务端的TIME_WAIT状态过多,并不会导致端口资源受限,因为服务端只能监听一个端口,而且由于一个四元组唯一确定一个TCP连接,因此理论上服务端可以建立很多连接,但是TCP连接过多,会占用系统资源,比如文件描述符号,内存资源,CPU资源,线程资源等

CLOSE_WAIT状态原因

close_wait状态是被动关闭方才会有的状态,而且如果被动关闭方没有调用close函数关闭连接,那么就无法发出FIN报文,从而无法使得close_wait状态的连接转变为last_ack状态

当服务端出现大量close_wait状态的连接的时候,说明服务端的程序没有调用close函数关闭连接

TCP建立连接时,通过三次握手能防止历史连接的建立,能减少双方不必要的资源开销,能帮助双方同步初始化序列号,序列号能够保证数据包不重复,不丢弃和按序传输。不使用两次握手和四次握手的原因:两次握手无法防止历史连接的建立,会造成双方资源的浪费,也无法可靠的同步双方序列号。四次握手就已经理论上最少可靠连接建立,所以不需要使用更多的通信次数。

第一范式(1NF):要求数据库表的每一列都是不可分割的原子数据项

第二范式(2NF):  在1NF的基础上,非码属性必须完全依赖于候选码(在1NF基础上消除非主属性对主码的部分函数依赖)

第三范式(3NF):在2NF基础上,任何非主属性,不依赖于其他非主属性。第三范式需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关。

OSI七层模型

应用层:负责给应用程序提供统一的接口

表示层:负责把数据转换成兼容另一个系统能识别的格式

会话层:负责建立,管理和终止表示层实体之间的通信会话

传输层:负责端到端的数据传输

网络层:负责数据的路由,转发,分片

数据链路层:负责数据的封帧和差错检测以及MAC寻址

物理层:负责在物理网络中传输数据帧

内存分段

程序是由若干个逻辑分段组成的,如可由代码分段,数据分段,栈端,堆段组成。不同的段是有不同的属性的,所以就用分段的形式把这些段分离出来

分段机制下的虚拟机制由两部分组成,段选择因子和段内偏移量。

段选择因子和段内偏移量:

段选择子就保存在段寄存器里面。段选择子里面最重要的是段号,用作段表的索引。段表里面保存的是这个段的基地址,段的界限和特权等级等。

虚拟地址中的段内偏移量应该位于0和段界限之间,如果段内偏移量是合法的,就将段基地址加上段内偏移量得到物理内存地址。

内存分页

分页是把整个虚拟和物理内存空间切成一段段固定尺寸的大小,这样一个连续并且尺寸固定的内存空间叫做页。虚拟地址与物理地址之间通过页表来映射。页表是存储在内存里的,内存管理单元就将虚拟内存地址转换成物理地址的工作。对于一个内存地址转换,就是把虚拟内存地址,切分成页号和偏移量。根据页号,从页表里面,查询对应的物理页号,直接拿物理页号,加上前面的偏移量,就得到了物理内存地址。

ARP协议

在传输一个IP数据报的时候,确定了源IP地址和目标IP地址后,就会通过主机路由表确定IP数据包下一跳,然而,网络层的下一层是数据链路层,所以还要知道下一跳的MAC地址。由于主机的路由表中可以找到下一跳的IP地址,所以可以通过ARP协议,求得下一跳的MAC地址。

主机会通过广播发送ARP请求,这个包中包含了想要知道的MAC地址的主机IP地址。当同个链路中的所有设备收到ARP请求时,会去拆开ARP请求包里的内容。如果ARP请求包中的目标IP地址与自己的IP地址一致,那么这个设备就将自己的MAC地址塞入ARP响应包返回给主机

HTTP状态码

2XX 成功,报文已经收到并被正确处理

3XX 重定向,资源位置发生变动,需要客户端重新发送请求

4XX 客户端错误,请求报文有误,服务器无法处理

5XX 服务器错误,服务器在处理请求时内部发生了错误

TCP头部格式

源端口号(16位) 目标端口号(16位)

序列号(32位)

确认应答号(32位)

首部长度(4位)保留(6位)(URG,ACK,PSH,RST,SYN,FIN) 窗口大小(16位)

校验和(16位)

紧急指针(16位)

IO多路复用

IO多路复用是一种IO的处理方法,指的是复用一个线程,处理多个socket中的事件。能够资源复用用,防止创建过多线程导致的上下文切换的开销

B+树的特点

一种自平衡的多路查找树,所有叶节点都位于同一层,保证了树的平衡,使得搜索,插入,删除操作的时间复杂度为对数级别

非叶子节点仅包含索引信息,不存储具体的数据记录,他们只用来引导搜索到正确的叶节点。非叶子节点的子树指针与关键字数量相同,每个子树指针指向一个子树,子树中的所有键值都在某个区间内

所有数据记录都存储在叶节点中,且叶节点中的数据是按关键字排序的。叶节点包含实际的数据和关键字,他们是数据存储和检索的实体单元。叶节点之间通过指针相互链接,形成一个链表,便于范围查询和顺序遍历

参考资料

小林coding

这篇关于计算机基础知识复习8.29的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1120140

相关文章

PyQt5 GUI 开发的基础知识

《PyQt5GUI开发的基础知识》Qt是一个跨平台的C++图形用户界面开发框架,支持GUI和非GUI程序开发,本文介绍了使用PyQt5进行界面开发的基础知识,包括创建简单窗口、常用控件、窗口属性设... 目录简介第一个PyQt程序最常用的三个功能模块控件QPushButton(按钮)控件QLable(纯文本

无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案

《无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案》:本文主要介绍了无法启动此程序,详细内容请阅读本文,希望能对你有所帮助... 在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是"api-ms-win-core-path-l1-1-0.dll丢失

如何测试计算机的内存是否存在问题? 判断电脑内存故障的多种方法

《如何测试计算机的内存是否存在问题?判断电脑内存故障的多种方法》内存是电脑中非常重要的组件之一,如果内存出现故障,可能会导致电脑出现各种问题,如蓝屏、死机、程序崩溃等,如何判断内存是否出现故障呢?下... 如果你的电脑是崩溃、冻结还是不稳定,那么它的内存可能有问题。要进行检查,你可以使用Windows 11

linux-基础知识3

打包和压缩 zip 安装zip软件包 yum -y install zip unzip 压缩打包命令: zip -q -r -d -u 压缩包文件名 目录和文件名列表 -q:不显示命令执行过程-r:递归处理,打包各级子目录和文件-u:把文件增加/替换到压缩包中-d:从压缩包中删除指定的文件 解压:unzip 压缩包名 打包文件 把压缩包从服务器下载到本地 把压缩包上传到服务器(zip

计组基础知识

操作系统的特征 并发共享虚拟异步 操作系统的功能 1、资源分配,资源回收硬件资源 CPU、内存、硬盘、I/O设备。2、为应⽤程序提供服务操作系统将硬件资源的操作封装起来,提供相对统⼀的接⼝(系统调⽤)供开发者调⽤。3、管理应⽤程序即控制进程的⽣命周期:进程开始时的环境配置和资源分配、进程结束后的资源回收、进程调度等。4、操作系统内核的功能(1)进程调度能⼒: 管理进程、线

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

go基础知识归纳总结

无缓冲的 channel 和有缓冲的 channel 的区别? 在 Go 语言中,channel 是用来在 goroutines 之间传递数据的主要机制。它们有两种类型:无缓冲的 channel 和有缓冲的 channel。 无缓冲的 channel 行为:无缓冲的 channel 是一种同步的通信方式,发送和接收必须同时发生。如果一个 goroutine 试图通过无缓冲 channel

java常用面试题-基础知识分享

什么是Java? Java是一种高级编程语言,旨在提供跨平台的解决方案。它是一种面向对象的语言,具有简单、结构化、可移植、可靠、安全等特点。 Java的主要特点是什么? Java的主要特点包括: 简单性:Java的语法相对简单,易于学习和使用。面向对象:Java是一种完全面向对象的语言,支持封装、继承和多态。跨平台性:Java的程序可以在不同的操作系统上运行,称为"Write once,

计算机视觉工程师所需的基本技能

一、编程技能 熟练掌握编程语言 Python:在计算机视觉领域广泛应用,有丰富的库如 OpenCV、TensorFlow、PyTorch 等,方便进行算法实现和模型开发。 C++:运行效率高,适用于对性能要求严格的计算机视觉应用。 数据结构与算法 掌握常见的数据结构(如数组、链表、栈、队列、树、图等)和算法(如排序、搜索、动态规划等),能够优化代码性能,提高算法效率。 二、数学基础

【408数据结构】散列 (哈希)知识点集合复习考点题目

苏泽  “弃工从研”的路上很孤独,于是我记下了些许笔记相伴,希望能够帮助到大家    知识点 1. 散列查找 散列查找是一种高效的查找方法,它通过散列函数将关键字映射到数组的一个位置,从而实现快速查找。这种方法的时间复杂度平均为(