计算机复试面试基础知识(八股文)(数据库数据结构操作系统计网机组等)

Posted 海马有力量

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机复试面试基础知识(八股文)(数据库数据结构操作系统计网机组等)相关的知识,希望对你有一定的参考价值。

一、数据库部分

数据库绪论
1、简述三层模式、两级映射,分别有什么作用?
模式(逻辑模式):是数据库中全体数据的逻辑结构和特征的描述,是数据库系统模式结构的中间层,即不涉及数据的物理存储细节,也与具体应用程序开发工具语言无关。
外模式(用户模式):是用户能看见和使用的局部数据的逻辑结构和特征描述,是与某一应用有关的数据的逻辑表示,是模式的子集,一个数据库可以有多个外模式。
内模式(存储模式):数据物理结构和存储方式的描述,是数据在数据库内部的表示方式,如存储方式是按照某个属性升序存储,什么索引等。
外模式模式映像:当模式发生改变,数据库管理员对外模式模式映像作相应改变,可使外模式不变,从而应用程序不用修改。保证数据与程序的逻辑独立性。
模式内模式映像:当数据库的存储结构改变了,由数据库管理员对模式内模式映像作相应改变,可以保持模式不变,从而应用程序也不必改变,保证了数据与程序的物理独立性。
三级模式使用户能逻辑地抽象地处理数据而不关心数据在计算机内具体表示方式与存储方式,两级映像保证了数据库系统中的数据有较高的逻辑独立性和物理独立性。

2、说出至少三种数据库类型(层次,网状,关系)并简要解释了一下
层次模型:用树形结构来表示各类实体以及实体间的联系,有且只有一个节点没有双亲节点(根节点),其他的都有且只有一个双亲节点。只能直接表示的是一对多联系。
优点:效率高结构清晰,性能优于关系数据库,不低于网状。
缺点:现实世界很多联系都不是层次的,如节点间多对多联系,还有一个节点具有多个双亲的情况都不好表示。

网状模型:对于非层次关系的联系,用层次表示非树形结构是很不直接的,网状模型可以很好的表示,它允许有一个以上的节点没有双亲,一个节点也可以有多个双亲,可以更直接地描述现实世界。
优点:更直接描述现实世界,性能也较好,存取效率也较高。
缺点:结构比较复杂不利于掌握,用户编程还得了解系统结构细节,加重了编程的负担。

关系模型:通常来看关系就是一张规范二维表,实体还是实体间的联系都用关系来表示,对数据的检索和更新结果也是关系。
优点:概念单一,用户易懂易用,而且存取路径是对用户透明的,从而有更高的数据独立性和安全性,也简化程序员的工作。
缺点:查询效率往往不如格式化数据模型,为了提高性能,增加开发DBMS难度。

关系数据库
3、简述关系与关系模式的区别。
关系实质是一张二维表,关系模式是对关系的描述,关系是关系模式在某一时刻的状态或内容。
关系模式是静态的、稳定的,而关系是动态的,随时间不断变化的,因为关系操作不断更新数据库中的数据。
通俗的说:关系是一张二维表,关系模式是表格的描述(表头),关系名是表名,元组是一行,属性是列,分量是一条记录中的一个列值。

4、什么是关系数据库?关系和二维表有什么区别?
关系数据库,是建立在关系数据库模型基础上的数据库,借助于集合代数等概念和方法来处理数据库中的数据。
在关系模型中,数据结构表示为一个二维表,一个关系就是一个二维表(但不是任意一个二维表都能表示一个关系。表中的第一行通常称为属性名,表中的每一个元组和属性都是不可再分的,且元组的次序是无关紧要的。

5、关系的完整性(实体完整性、参照完整性、用户自定义)和数据库主键的约束性
实体完整性:关系的主码不能取空值,如果主码由若干属性组成都不能为空。实体以主码作为唯一性标识。
参照完整性:一个关系中的外码,或者取空值(若属性组全为空),或者等于它参照的那个关系的主码值。
用户自定义完整性:针对具体关系数据库的约束。

数据库语言SQL
6、什么是DDL、DML、DCL?(数据库语言有哪几种?)
数据定义语言(DDL):Create、Drop、Alter
数据操纵语言(DML):Insert、Update、Delete
数据控制语言(DCL):Grant、Revoke
数据查询语言:Select

7、什么是视图,有什么作用?在数据库哪层?
视图:是从一个或几个基本表导出的表,是一个虚表,数据库只存放视图的定义,不存放视图对应的数据,数据仍放在原来的基本表,基本表数据改变,通过视图查询也改变了,

数据库设计
8、简述数据库设计的几个阶段
需求分析:详细调查现实世界要处理的对象,充分了解各种需求,在此基础确定新系统的功能。
概念结构设计:经常采用自顶向下需求分析,自底向上概念结构设计。对需求分析收集到的数据进行分类组织形成实体、实体的属性,确定实体之间联系,设计分E-R图。逐一设计分E-R图,最后将所有分E-R图综合成一个系统的E-R图。
逻辑结构设计:一般来讲把E-R图向关系模型转换,一个实体型转换为一个关系模式。一个一对一联系可以独立也可以和任意一端合并,一个一对多联系可以独立也可以和N端对应的关系模式合并,一个多对多联系独立转换为一个关系模式。对数据模型规范化,还根据具体需求设计相应的视图。
数据库物理设计:关系模式存取方法的选择,比如索引、聚簇、哈希等存储方式。还应该确定数据库的存取结构,目前许多计算机有多个磁盘或磁盘阵列,因此可以将表和索引放在不同的磁盘上,在查询时磁盘驱动器并行工作,可以提高物理IO读写效率,也可以将比较大的表放在两个磁盘上,以加快存取速度。
数据库的实施与维护:比如备份与恢复等待。

9、什么是E-R图
E-R图:实体-联系图,在概念结构设计中,对需求分析收集到的数据进行分类组织,形成实体的属性,确定实体之间联系,设计E-R图。

10、分别解释1NF、2NF、3NF、BCNF、4NF
范式:关系数据库中的关系是要满足一定要求的,满足不同程度的要求的为不同范式。
规范化:一个低一级范式关系模式通过模式分解可以转化为若干个高一级范式的关系模式的集合。
1NF:满足最低要求的叫第一范式,每一个分量必须是一个不可分的数据项。
2NF:消除关系中的部分函数依赖就称为第二范式,部分函数依赖就是非主属性不完全依赖于码。
3NF:每一个非主属性既不部分依赖于码,也不传递依赖于码。
BCND:所有非主属性对每一个码都是完全函数依赖,没有任何属性完全依赖于非码的任何属性,就是除了码外一定不能有决定因素。

数据库并发控制
11、什么是事物,并发控制是保证事物的?
事物:是一系列的数据操作,这些操作要么全不做,要么全做,不可分割。运行过程中发生某种故障不能继续执行,全部回滚到开始状态。
并发控制中多个用户存取数据库时候可能会产生多个事物同时存取同一个数据的情况,不加控制就会破坏事物的一致性,为了保证事物的一致性所以进行并发控制。

12、ACID(事物的四个性质)
A原子性:要么都做,要么都不做。
C一致性:如果运行中发生故障,必须回滚。不能让数据不一致。比如两人转钱,一半坏了,不一致俩人都没有钱。
I隔离性:一个事物不能被其他事物干扰。
D持续性:事物一旦提交,他对数据库的改变就应该是永久的。接下来的操作和故障不应该对刚才结果有任何影响。

13、数据库中锁有什么作用?什么是只读锁、什么是只写锁?
一个事物对数据加锁可以保证事物的四个特性,加锁后其他事物不能更新此数据对象,不会产生数据不一致性。
写锁(排他锁/ X锁):加写锁其他事物不能在对这个数据加任何类型锁,释放之前不能读取和修改。
读锁(共享锁/ S锁):事物对数据加读锁,其他事物可以读但不可以修改,可以加读锁不能加写锁。

14、什么是触发器,有什么作用?
用户定义在关系表上的一类由事件驱动的特殊过程,一旦定义了,用户对表的增、删、改操作均有数据库系统自动激活相应触发器
触发器可以分为语句触发器和行级触发器,触发器动作体是一个匿名PL/SQL过程块,语句级触发器可以在语句执行前或后执行,而行级触发在触发器所影响的每一行触发一次。行触发器用户可以用new和old引用数据,语句级不能。
15、什么是脏读?幻读?不可重复读?
1、脏读:事务 A 读取了事务 B 更新的数据,然后 B 回滚操作,那么 A 读取到的数据是脏数据
2、不可重复读:事务 A 多次读取同一数据,事务 B 在事务 A 多次读取的过程中,对数据作了更新并提交,导致事务 A 多次读取同一数据时,结果 不一致。
3、幻读:系统管理员 A 将数据库中所有学生的成绩从具体分数改为 ABCDE 等级,但是系统管理员 B 就在这个时候插入了一条具体分数的记录,当系统管理员 A 改结束后发现还有一条记录没有改过来,就好像发生了幻觉一样,这就叫幻读。
不可重复读侧重于修改,幻读侧重于新增或删除(多了或少量行),脏读是一个事务回滚影响另外一个事务。
补:什么是活锁和死锁?解决办法是什么?
1、 活锁:由于系统调度原因,某些事务的加锁请求得不到响应而永远等待下去,称为
活锁。
解决办法:采用合理的调度方法,如先来先服务策略。
2、死锁:两个或多个事务都已封锁了一些数据对象,然后又都请求对方被封锁的数据对象,两个事务永远不能结束,形成死锁。
预防:一次封锁法:要求每个事务必须一次将所有要使用的事务加锁,否则不能继续执行。
顺序封锁法:预先对数据对象规定一个封锁顺序,所有事务都按这个顺序实行封锁。
诊断与解除:超时法:如果一个事务的等待时间超过了规定的时限,就认为发生了死锁。
等待图法:等待图是一个有向图,正运行的事务表示节点,事务等待的情况表示边,如果图中存在回路,则表示系统中存在回路。

二、数据结构部分

线性表
15、单链表的就地逆置
将头结点摘下,然后从第一节点开始,头插法建立单链表,直到最后一个节点为止。

16、单链表可以用什么实现?
指向结构体的指针实现,结构体中有两个成员,每个节点分为数据域和指针域,除了最后一个节点,每个节点指针域都指向下一个节点的地址,最后一个节点指针域指向NULL。
也可以用结构体数组模拟这种操作,数组中每个下标都对应一个数据元素和游标,游标是下一个元素在数组中的下标,把未被使用的数组元素作为备用链表,下标为0的元素游标存放备用链表第一个节点的下标。数组最后一个元素游标存放第一个有效数值元素的下标,相当于头结点作用,游标为0表示指向为空。

栈和队列
17、实现一个队列的方法?为什么队列的顺序存储需要留一个空位?循环有什么好处?
链式存储:把链表改装一下,加尾指针作为队列的尾部可以插入节点,头指针可以删除节点,相当于出队。
顺序存储:正常的顺序存储想要利用空出的空间就必须移动元素,不移动还会浪费空间,循环队列可以解决这个问题,把这段连续的地址空间,想象成逻辑上的环,所以只要有空闲空间就能使用。
但是当front和rear指针相等的时候有两种情况,一种是满,一种是空,为了区分这种情况,保留一个元素空间,我们假定当rear+1与front相等队列就满了。而空的时候是rear等于front。又因为是环也可能存在rear>front的情况,所以取模操作。
另外计算队列长度的时候,rear>front队长为rear-front,但当rear<front队长为两段相加,所以通用公式为(rear-front+队列的总长度)%队列总长度

树与二叉树
18、什么是完全二叉树?
完全二叉树是由满二叉树而引出来的。对于深度为K的,有N个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对应时称之为完全二叉树。

19、什么是二叉排序树,简述它的查找过程,二叉排序树的时间复杂度,遍历后得到什么样的序列?
二叉排序树是一种二叉树,具有了一些独特性质,若左子树不为空,则左子树上所有节点的值均小于它的根节点的值,右子树不为空,则右子树上所有节点的值均大于它的根节点的值,而且它的左右子树也是二叉排序树。构造一个二叉排序树是为了提高动态查找中插入和删除的速度。
查找过程:递归查找二叉排序树中是否存在要查关键字,若成功则指针指向该数据元素的节点,返回成功,如果关键字小于树中这个节点,则去它左子树中继续查找,大于则去右子树中查找。如果树中没有要查的关键字,则指针指向访问的上一个节点,以便于插入。
插入过程:如果当查找失败且指针p为空,则新建根节点,如果要插入的关键字小于p指向节点的数据,则插入到左孩子,否则右孩子。
删除过程:1叶节点直接删除2只有左或右子树删了接下面3左右子树都有的,找到要删除的节点的直接前驱或后继,用这个节点替换要删除的节点,然后在删除这个节点。
二叉排序树,以链接的方式存储,有在执行插入或删除操作时候不用移动元素的优点,插入删除性能较好,而查找的时间复杂度取决与二叉排序树的形状。中序遍历后得到升序系列,所以也称为二叉排序树。

20、什么是平衡二叉树?
为了解决二叉查找树,查找时间依赖于形状的问题,平衡二叉树就是在建立二叉排序树的时候,对它做了一定的限制,使它保持平衡,使每一个节点的左子树和右子树的高度差至多为1。
具体做法:找出距离插入节点最近且平衡因子绝对值大于一的节点,把它当为根的子树叫做最小不平衡子树,进行相应旋转,使之平衡。
插入节点:LL型,向右旋转。RR型,向左旋转。RL型,先右转,再左转。LR型,先左转,再右转。

21、什么是哈夫曼树?哈夫曼树的作用是什么?
哈夫曼树:带权路径长度为从该节点到树根之间的路径长度与节点上权的乘积,带权路径长度WPL最小的二叉树称作哈夫曼树。
构造过程:把带有权值的叶子节点按照从小到大的顺序排列成一个有序序列,取出前两个最小权值的节点作为一个新节点的两个子节点,左孩子一般比右孩子小,新节点权值为两个叶子的和,将新节点插入刚才有序序列适当位置,重新选出头两个最小的,重复上面过程。
哈夫曼编码:为了解决当年远距离电报的数据传输的最优化问题,发明了哈夫曼编码,比如多英文文章传输,假设每个字母固定用一个二进制串表示,文章很长那传送的串会非常长。但英文字母每个字母出现的频率是不一样的,所以可以根据字母频率设定权值,用哈夫曼树来规划它们,构造哈夫曼树以后,把左分支用0表示,右分支用1表示,然后从根到叶子所经过的路径的数字用来编码,当双方约定好同样的哈夫曼树后,发送信息的时候能明显减少串长度。

图的应用
22、什么是有环图,连通图,强连通图?
连通图:无向图任意两点都是连通的,图中极大连通子图(极大子图还是连通的)成为连通分量。
强连通图:有向图从vi到vj和从vj到vi都存在路径称为强连通图,有向图中极大连通子图称作强连通分量。
连通图的生成树:是一个极小连通子图,含有图中全部n个顶点,但只有足以构成一棵树的n-1条边,少于是非连通图,多余必定构成环。
有向树:有向图中一顶点入度为0,其余入度为1
第一个顶点到最后一个顶点相同的路径称为环或回路。序列中顶点不重复出现的路径称为简单路径,除了第一个顶点和最后一个顶点之外,其余顶点不重复出现的回路,称为简单环。

23、图的存储方式有哪些简要叙述(邻接矩阵和邻接表)?
邻接矩阵:将顶点和边分别存储,顶点用一维数组存储,边用二维数组。可以根据这个二维数组获取图中的信息。比如判定两顶点是否有边,只需读取二维数组值。想知道某个顶点的度就是将这一行的值相加。求他的临界点也只需遍历一行,值为1的就是。无向图的边数组是对称的,有向图入度看列,出度看行。
邻接表:对于边数较少,顶点较多的图,如果还用邻接矩阵那是对空间的极大浪费,所以用邻接表,顶点还是一维数组存储,此外数组每一个数据元素还存储指向第一个邻接点的指针,以便于查找边的信息,图中每个顶点的所有邻接点构成一个链表。边表每个节点存储这个顶点在顶点表中的下标,和一个指向下一个节点的指针。想知道某顶点的度,就查找这个顶点的边中节点的个数,要判断是否存在边也只需遍历相应边表。但是对于有向图能得到每个顶点出度,为了便于确定入度可以再建立一个逆邻接表。

24、什么是DFS,遍历后形成什么?时间和空间复杂度多少?遍历节点顺序是否唯一?
DFS:图的深度优先遍历,是一种递归过程,是对树的先序遍历的推广,从某个顶点开始访问,然后对尚未访问的邻接点出发,继续深度优先遍历,直到所有和初始顶点路径相通的顶点都被访问到。对于非连通图,只需对它的连通分量分别进行DFS。
BFS:图的广度优先遍历,类似于树的层序遍历,先初始化一辅助队列,从某个顶点开始访问,访问节点后入队,队列不为空则队列元素出队列,然后判断当前出队列顶点邻接点是否访问过,没有则访问入队,重复这一过程。

25、什么是迪杰斯特拉算法?
用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。并不是一下子就求出最短路径,而是一步步求他们之间顶点的最短路径,在这个过程中都基于已经求出的最短路径的基础上。

26、什么是拓扑排序?什么图可以拓扑排序?
这种用顶点表示活动,用弧来表示活动间的优先关系的有向图叫做顶点表示活动的网络简称为AOV网。通常,在AOV网中,将所有活动排列成一个拓扑序列的过程叫做拓扑排序,而且每个顶点出现且只出现一次,若顶点a在序列中排在顶点b前面,则在图中不存在从顶点b到顶点a的路径。
(1)从有向图中选择一个没有前驱(即入度为0)的顶点并且输出它.
(2)从网中删去该顶点,并且删去从该顶点发出的全部有向边.
(3)重复上述两步,直到剩余的网中不再存在没有前趋的顶点为止.
判定网中是否存在环的方法:对有向图构造其顶点的拓扑有序序列,若网中所有顶点都出现在它的拓扑有序序列中,则该AOV网中一定不存在环。

27、什么是普里姆算法?什么是克鲁斯卡尔算法?
最小生成树:权值之和最小的那颗生成树称为最小生成树。
普里姆算法:在所有“其一个顶点已经落在生成树上,而另一个顶点尚未落在生成树上”的边中取一条权值为最小的边,逐条加在生成树上,直至生成树中含有 n-1条边为止
克鲁斯卡尔:新建一个图G,G中拥有原图中相同的节点,但没有边,将原图中所有的边按权值从小到大排序,从权值最小的边开始,如果这条边连接的两个节点于图G中不在同一个连通分量中,则添加这条边到图G中,重复,直至图G中所有的节点都在同一个连通分量中。

28、什么是关键路径?
用顶点表示事件,弧表示活动,弧上的权值表示活动持续的时间的有向图叫AOE网。
在项目管理中,关键路径最长的那个路径,决定了整个项目的最短完成时间。把关键路径上的活动成为关键活动,关键活动影响了整个工程的时间,即如果关键活动不能按时完成的话,整个工程完成时间就会受到影响。
事件最早发生时间:从开始顶点到下一个顶点最长路径长度。它决定了它后面的活动的最早发生时间。
事件最迟发生时间:工程不推迟的前提,该事件最迟必须发生的时间,从后往前计算,边值最小的。
活动的最迟发生时间:活动终点所表示事件最迟发生时间与该活动所需时间之差。
补:请简述一下迪杰斯特拉算法的过程?
1.数组d中存放源点到其他点的最短距离,每次从数组d中选一个值最小且没有被访问过的点;
2.如果经过此点到其他点距离更短,则更新数组d;
3.标记此点已访问过,遍历其他点,直到所有点被访问完。

查找与排序
29、什么是折半查找?时间复杂度多少?前提条件是什么?过程如何?
1.必须采用顺序存储结构 2.必须按关键字大小有序排列。
首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。
时间复杂度:其算法复杂度为O(log n)
30、什么是哈希表?什么是冲突?
普通的查找方法,查找关键字都需要比较,时间较长,而哈希表的方法是欲查找关键字的存储位置是由某个函数计算出来的,它把记录的存储位置和它的关键字之间建立一个确定的对应关系,使得每个关键字对应一个存储位置。这种关系称为散列函数。
查找步骤:存储数据时候存储在通过散列函数计算的地址,当查找记录时通过同样的散列函数计算地址。
适用情况:一个关键字对应很多不适合,范围查找不适合,排序也不可能。
冲突:两个不同的关键字用散列函数计算出了相同的存储地址称为冲突。
处理冲突的方法:
开放定址法:空闲地址,同义词表项可以存,非同义词也可以。
1.线性探测法:有冲突就顺序查看下一个单元,可能造成堆积。
平方探测法:1方,-1方,2方,-2方。。。这个不堆积但是只能探测一半。
再散列:用别的函数再试试。
伪随机数法:
拉链法:把所有同义词存在一个线性链表中。
31、什么是折半插入排序?时间空间复杂度多少?
正常插入排序插入时候,从后往前查找待插入位置,而折半插入是用折半的方法找到插入的位置,然后插入。仅仅是减少了比较元素的次数,时间复杂度仍为O(N方)

32、什么是快速排序?时间空间复杂度多少?简述基本过程
一般用第一个元素用作基准数,但如果是有序花费时间将是二次。一般可以使用三数取中值分割法。快速排序是对冒泡排序的改进,属于交换排序,基本思想基于分治法,在待排序表中取一个元素作为基准,通过一趟排序将待排序表划分为独立的两部分。左边部分小于基准,右边大于,这个过程称为一趟排序,而后分别递归地对两个子表重复上述过程,直到每部分内只有一个元素或为空,即所有元素放在最终位置上。
当i<j 时且 j对应的值大于基准跳过,碰到小于基准停下来,i小于j且i从前向后跳过小于基准的值。如果i小于j,交换然后缩小区间(i++,j- -) 继续 回到开始但前提i小于j

33、什么是堆?有什么用?什么是堆排序?
堆可以看成是一棵完全二叉树,如果任意一节点都小于它的子孙,称为小项堆,任意节点大于它子孙称为大顶堆。
作用:可以对一组数据进行排序。大数据中找出最大的几个值,用堆比较快。
堆排序:构造堆先自下往上调整,如果建立大根堆,从下往上,从右往左,每个有孩子的节点(如果从数组角度是n/2处向前到1)的关键字小于左右子树中关键字大者,则交换。反复利用上述调整堆的方法建堆,直到根节点。这样将R[1…n]构造为初始堆,将当前初始堆顶记录R[1]和该区间的最后一个记录交换,然后将新的无序区调整为堆(亦称重建堆)。
与直接选择区别:直接选择排序中,为了从R[1…n]中选出关键字最小的记录,必须进行n-1次比较,然后在R[2…n]中选出关键字最小的记录,又需要做n-2次比较。事实上,后面的n-2次比较中,有许多比较可能在前面的n-1次比较中已经做过,但由于前一趟排序时未保留这些比较结果,所以后一趟排序时又重复执行了这些比较操作。
堆排序可通过树形结构保存部分比较结果,可减少比较次数。

34、你认为哪种排序算法最优?
没有最好,只有最适合,若n较小,用简单的排序算法较好比如简单选择,直接插入,如果数据初始状态已经按关键字基本有序,则选用直接插入或冒泡较好。如果n较大应该考虑用那几个时间复杂度较好的算法,快速排序是被认为是目前基于比较的内部排序算法中最好的方法,当待排序关键字是随机分布时,快速排序的平均时间最短。如果对负辅助空间有限制则可以考虑堆排序,另外求大数据的最大的几个数,堆排序最适合。如果要求排序稳定可以考虑归并排序。如果n很大,记录的关键字位数较少且可以分解,采用基数排序较好。当记录本身信息量很大,为了避免移动,可以考虑链表。

三、操作系统部分

操作系统概述
35、操作系统用到了那些数据结构?举例说明
进程调度后备队列,先进先出算法
短进程优先算法用了堆
动态分区分配,首次适应算法。在此算法中,空闲区链按起始地址递增顺序排列,在进行内存分配时,从链首开始顺序查找,直到找到一个能满足其大小要求的空闲区为止。循环首次适应算,循环链表。
目前广泛流行公用缓冲池,池中的缓冲区可供多个进程共享。它把相同类型的缓冲区链成一个队列
索引顺序文件:记录分组,索引表中为每组中的第一个记录建立一个索引项,组与组之间关键字必须有序,组中关键字可以无序。通过索引表找到所在组。
散列文件:没有 顺序特征。
文件分配磁盘块方式:链接分配,索引分配。
系统调用的过程?操作系统的组成?
内核提供一系列具备预定功能的多内核函数,通过一组称为系统调用(system call)的接口呈现给用户。系统调用把应用程序的请求传给内核,调用相应的的内核函数完成所需的处理,将处理结果返回给应用程序。
系统调用通常包括:进程控制、文件系统控制、内存管理、网络管理,进程通信等。
基本功能:处理机管理,处理器的分配和运行实施有效的管理,如进程控制,同步,通信,调度。存储器管理,对内存分配、保护、扩充。设备管理,对计算机系统内的所有设备实施有效管理,比如设备分配,缓冲和虚拟,设备传输控制,设备独立性。文件管理,有效的支持文件的存储、检索和修改等操作,解决文件的共享、保护问题,比如文件存储空间管理、目录管理、文件操作管理。用户接口,方便用户使用操作系统,通常有命令接口,程序接口,图形接口。

36、什么是微内核? 什么是shell?
操作系统:操作系统是控制和管理整个计算机系统硬件和软件资源,并合理组织调度计算机的工作和资源分配。进程管理 存储管理 设备管理 文件管理
微内核:操作系统的一种体系结构,将最基本的功能保留在内核,基于客户服务器模式的微内核结构,将操作系统划分两大部分,微内核和服务器,把操作系统绝大部分功能都放在服务器中实现,交互借助于微内核通信。优点:每个服务进程允许在独立用户进程中,即每个服务器失败不会引起系统其他服务器崩溃,可靠性好。还具有良好的灵活性,可以方便增删服务功能,便于维护修改服务器代码不会影响其他部分,适合分布式处理的计算环境。缺点:效率不高,所有用户进程都要通过微内核相互通信。
Shell:编程人员通过系统调用,api接口来使用操作系统提供的功能,普通用户不编程,所以操作系统给普通用户提供一个shell与用户交互,shell就是覆盖在操作系统上的一个用户界面,可以是图形的比如window,也可以是文本,比如linux,用户可以输入命令操作系统,不是进行直接系统调用。

进程管理
37、作业与进程的区别
一个进程是一个程序对某个数据集的执行过程,是分配资源的基本单位。作业是用户需要计算机完成的某项任务,是要求计算机所做工作的集合。

38、进程和程序有什么区别?
进程是程序及其数据在计算机上的一次运行活动,是一个动态概念,而程序是一组有序的指令集合,是一种静态的概念
进程是程序的一次执行过程它是动态地创建和消亡的具有一定的生命周期是暂时存在的,程序则是一组代码集合,是永久存在可长期保存的。
进程可以创建进程,程序不能创建新程序。

39、进程和线程有什么区别?什么是进程树?
进程是资源拥有的基本单位,线程是独立调度的基本单位,而不用有系统资源,当可访问其隶属进程的系统资源,不仅进程之间可以并发,同一进程内的多个线程也能,进一步提高了并发度,由于创建和撤销进程系统都要为之分配或回收资源,保存当前环境等开销远大于创建或撤销线程。
进程树是一个形象化的比喻,比如一个进程启动了一个程序,而启动的这个进程就是原来那个进程的子进程,形成的一种树形的结构。

40、简述进程的状态与转换
新建完进程分配了必要资源,进入就绪状态,这时只需要得到处理就进程就能运行,进入运行状态后,需要等待某个资源进入阻塞状态,资源到位了进入就绪队列等待处理机。运行完事进入终止状态,资源回收。

41、进程间的通信有几种方式?
共享存储:在通信进程之间存在一块可直接访问的共享空间,通过对这段空间的读写实现进程之间的信息交换,在对共享空间进行写/读操作时,需要使用同步互斥工具。
消息传递:数据交换是以格式化的消息为但单位,操作系统提供的消息传递方式,有直接通信方式和间接通信方式。
管道通信:管道就是连接一个读进程和一个写进程以实现他们之间通信的一个共享文件,向管道提供输入的发送进程以字符流形式将大量数据送入管道,接受管道输出的进程,则从管道中接受数据,为了协调双方通信,管道机制需提供互斥、同步和确定对方的存在。

42、什么叫饥饿?
短作业优先算法时候,长作业一直得不到处理机

43、进程的调度算法有哪些?分别简述
先来先服务,缺点短作业可能等待很长时间,平均响应时间很慢。
短任务优先算法:平均响应时间最优,分为抢占和非抢占,容易饿死长任务。
高响应比:优先权=等待时间+要求服务时间/要求服务时间既照顾了短作业,又不会使长作业得不到服务。
分时(时间片):选择适当时间片,过大退化成FCFS过小切换所用时间多。
优先级:静态优先级不变,动态优先级,执行了降低优先级。
多级反馈队列调度算法:设置多个就绪队列,并为各个队列赋予不同优先级,第一个队列优先级最高,依次降低,各队列中进程内时间片的大小也不相同,最高优先级的时间片最小,依次升高。当一个进程进入内存后,先进入优先级最高队尾,等待调度,当运行时候如果在该时间片结束,便可撤离了,没完成就进入第二个队列末尾等待,依次进行,如果在最后一个队列执行一次还没完成,就在这队列继续排队。仅当第一队列空闲时候,调度程序才会调度第二队中进程运行,优先级高的队列空闲,优先级低才会被调度,如果优先级低的队列正在执行,优先级高队列有进程进入,则调度程序把正在执行的进程放在这队的末尾,优先级高的先执行。
实时最早截止时间优先(EDF):开始截止时间确定优先级。
最低松弛度优先(LLF):根据任务紧急程度来确定优先级。
44、什么是软实时,什么是硬实时?
硬实时系统有一个刚性的、不可改变的时间限制,它不允许任何超出时限的错误。超时错误会带来损害甚至导致系统失败、或者导致系统不能实现它的预期目标。
软实时系统的时限是一个柔性灵活的,它可以容忍偶然的超时错误。失败造成的后果并不严重,仅仅是轻微的降低了系统的吞吐量。

45、什么是PV操作?简述PV操作要点及注意事项。
信号量是最早出现的用来解决进程同步与互斥问题的机制,包括一个称为信号量的变量及对它进行的两个原语操作p操作和v操作,这两个操作是不可中断的程序段,称为原语。
P原语操作的动作是:信号量减1;若减1后仍大于或等于零,则进程继续执行;若减1后小于零,则该进程被阻塞后进入与该信号相对应的队列中V原语操作的动作是:信号量加1;若相加结果大于零,则进程继续执行;若相加结果小于或等于零,则从该信号的等待队列中唤醒一等待进程。
信号量必须成对使用。且在P,V愿语执行期间不允许有中断的发生。P,V原语不但可以解决进程管理当中的互斥问题,而且我们还可以利用此方法解决进程同步与进程通信的问题。同步时候信号量初始为0,互斥时候为1。

46、什么是死锁?有什么解决办法?
死锁:多个进程因竞争资源而造成的一种僵局,若无外力作用,这些进程都将无法向前推进。原因:是资源的争夺,或进程推进顺序非法。
必要条件:资源为临界资源、进程所获得资源在用完之前不可强行夺走,只能主动释放,进程已经保持了至少一个资源,但有提出了新的资源请求,但该资源以被占用了,循环等待条件,存在一种进程资源的循环等待链。
预防死锁:这是一种较简单和直观的事先预防的方法。方法是通过设置某些限制条件,去破坏产生死锁的四个必要条件中的一个或者几个,来预防发生死锁。但是由于所施加的限制条件往往太严格,可能会导致系统资源利用率和系统吞吐量降低。
避免死锁:该方法同样是属于事先预防的策略,但它并不须事先采取各种限制措施去破坏产生死锁的的四个必要条件,而是在资源的动态分配过程中,用某种方法去防止系统进入不安全状态,从而避免发生死锁。
检测死锁:这种方法并不须事先采取任何限制性措施,也不必检查系统是否已经进入不安全区,此方法允许系统在运行过程中发生死锁。但可通过系统所设置的检测机构,及时地检测出死锁的发生,并精确地确定与死锁有关的进程和资源,然后采取适当措施,从系统中将已发生的死锁清除掉。
解除死锁:这是与检测死锁相配套的一种措施。当检测到系统中已发生死锁时,须将进程从死锁状态中解脱出来。常用的实施方法是撤销或挂起一些进程,以便回收一些资源,再将这些资源分配给已处于阻塞状态的进程,使之转为就绪状态,以继续运行。

内存管理
47、简述内存的连续分配管理方式
固定分区分配,划分若干个固定大小区域,建立分区说明表,容易产生内部碎片。
动态分区分配,又称可变分区分配,是一种动态划分内存的分区方法。不预先划分,而是在进程装入内存时候,根据进程大小动态的建立分区。并使分区大小正好适合进程的需要。因此系统中分区的大小数目是可变的。会产生外部碎片。可用紧凑技术解决,不时的动态整理。
首次适应,空闲分区以地址递增次序链接,找到一个能满足要求的分区。
最佳适应:分区按容量递增形成分区链。
最坏适应:分区按容量递减形式分区链。
临近适应:循环首次适应,从上次查找结束位置开始继续查找。
48、程序装入和链接。
编译:将源代码编译成若干个目标模块
链接:链接程序将编译后形成的目标模块,以及所需库函数链接在一起,形成一个完整的装入模块。链接分为静态,装入时动态,运行时动态
装入:由装入程序装入模块装入内存中运行。分为绝对装入,可重定位,静态重定位一次性完成,动态重定位。
49、常用内存保护方法有哪些?
页表机制里,页表寄存器中有页表起始地址,和页表长度,比较页号和页表长度如果大于页表长度则产生越界中断。

50、什么是交换技术?什么是覆盖技术?及其区别
覆盖:把一个用户空间分成一个固定分区和若干个覆盖区,活跃部分放入固定区,其余部分先放即将访问的进覆盖区,其他需要时候在调入覆盖原有的段。
交换:把处于等待状态的程序从内存移到外存,腾出空间这叫换出,然后把准备好竞争CPU运行的程序从外存调入内存,这叫换入。

51、什么是拼接技术?
就是紧凑技术:动态分区分配回收时候,将其余空闲分区合并为一个大的空闲分区。

52、简述内存的非连续非配管理方式(段、页)
非连续分配根据分区大小是否固定分为,分页存储管理和分段存储管理。分页存储管理方式又根据是否要把作业的所有页面都装入内存分为基本分页存储方式,和请求分页存储方式
基本分页存储管理方式:把主存空间分为大小相等且固定的块,相对较小,作为主存的基本单位,每个进程也以块为单位进行划分,进程在执行时,以块为单位逐个申请主存中的块空间。与固定分区技术的区别是块的大小相对于分区较多,而且进程也按照块进行划分,进程运行时按块申请主存可用空间并执行,只会在最后一个不完整块产生内部碎片。
进程在执行过程中需要申请主存空间,就是要为每个页面分配主存中的可用叶框,这就产生了页和叶匡的一一对应。页面大小要适中,太小页表长,页内碎片增大,降低内存的利用率。一般每页大小4KB,所以页内偏移量12位,页号20位,地址最多2的20此方页。
页表:为了便于在内存中找到进程的每个页面所对应的物理块,系统为每个进程创建一张页表,记录页面在内存中对应的物理块号,页表一般在内存中。页表作用是实现从页号到物理块号的映射。页表寄存器PTR存放页表在内存地址,和页表长度。进程未执行放在进程控制块中,执行存入。
TLB快表:若页表全部放在内存中,则存取一个数据或一条指令至少要访问两次内存,一次是访问页表,确定物理地址,一次是取数据和指令。这显然比通常执行指令慢一倍,所以增加一个具有并行查找能力的高速缓存存储器–快表。又称联想寄存器,用来存放当前访问的若干表项,比较的时候是将页与块表中的所有页号同时进行比较,找到取出,如果没有则访问主存中页表,读出后同时放入快表中,以便后面可能再次访问,但若块表以满则按着一定算法对旧页表进行替换。
页表占空间太大可以用两级页表,进程执行只需调入最高级页表就可以,进程的页表和进程本身的页面,可以再后面的执行中再调入。
分段管理:分页是从计算机角度考虑设计,提高内存利用率,而且通过硬件机制,对用户完全透明,分段管理方式的提出考虑了用户程序员以满足编程方便,信息保护和共享等多方面需求。段内要求连续,段间不要求连续,作业地址空间是二维的。最大段长64KB,段号为16位,段内偏移量为16位。段式系统中段号和段内偏移量必须由用户显示提供。段表映射了逻辑空间和内存空间。段表项记录了起址和段长。分段系统共享是通过两个作业的段表中相应表指向被共享的段的同一个物理副本实现的。不能修改的代码称为纯代码和可重入代码这样代码不能修改数据是可以共享的。
段页式:将两种存储管理方法结合起来,形成了段页式存储管理方式。作业地址空间首先分成若干逻辑段,每段都有自己段号,然后每一段分成若干大小固定的页。对内存空间管理仍然和分页一样。逻辑地址三部分,段号,页号,偏移量。段表项报考段号,页表长度,页表起始地址。页表项包括页号和块号。
53、简述虚拟存储器的原理
传统存储管理方式一次性,驻留性不换出。局部性原理,空间局部性,一旦程序访问了某个存储单元,在不久之后,其附近的存储单元页将被访问,指令通常说顺序存放,顺序执行的,数据也一般以数组等方式簇聚存储的。时间局部性,某一指令一旦执行,不久以后该指令可能再次执行,数据被访问过,不久以后数据有可能再次被访问。原因是程序有循环。基于局部性原理,在程序装入时候,可以将程序的一部分装入内存,其余部分留在外存,就可以启动程序执行,在程序执行过程中,访问的信息不存在内存,由系统将所需的部分调入内存然后继续执行程序,另一方面将暂时不使用的内存换出道外存。从而腾出空间存放将要掉入内存的信息,这样系统好像为用户提供了一个比实际内存大的多的存储器,称为虚拟存储器。
实现:请求分页,请求分段,请求段页式存储管理
硬件支持:内存外存,也表机制,中断机构,地址变换机构。
请求分页管理方式:建立在基本分页管理方式,为了支持虚拟存储器功能,增加了请求调页和页面置换功能。每当要访问的页面不在内存时候,便产生了一个缺页中断,请求操作系统将所缺的页面调入内存,此时将缺页进程阻塞,调完唤醒,内存有空闲块则分配,将要掉入的页装入该块,并修改页表中相应表项,若此时没有空闲块,则按着一定算法置换。修改过还写回,与一般中断比可以再指令执行期间产生和处理中断信号。
54、简述各种页面置换算法(LRU、CLOCK)LRU是如何实现的?
最佳,以后不会使用的淘汰。不可能实现。
先进先出:优先淘汰最早进入内存的页面。
最近最久未使用LRU置换算法:淘汰最近最长时间未访问过的页面,该算法未每个页面设置一个访问字段,来记录页面自上次被访问以来所经历的时间,淘汰页面时候选择现有页面中值最大的。需要栈支持。可利用一个特殊的栈来保存当前使用的各个页面的页面号。每当进程访问某页面时,便将页面的页面号从栈中移出,将它压入栈顶。因此,栈顶始终是最新被访问页面的编号民,而栈底则是最近最久未使用的页面的页面号。
Clock算法:LRU接近最佳置换算法,性能好但是开销大,FIFO简单但是性能差,CLOCK算法比较小的开销接近LRU的性能,最近未用(NRU),给每一帧关联一个附加位,称为使用位,当某一页首次装入主存,该帧使用位设置1,随后再被访问页被置1,替换算法把候选帧集合看成一个循环缓冲区,并且有一个指针与之关联, 当某一页被替换时该指针被设置成指向缓冲区的下一帧。当需要替换一页时候,操作系统扫描缓冲区,以查找使用位为0的一帧,每当遇到为1的改0,如果所有都为0则替换第一个,所有都为1则全改0一圈回来后替换第一个,由于循环检查各页情况,所以CLOCK。
优化:加一个修改位,改了的为1, 系统先找没访问过页没修改过的,不对使用位修改,找不到的找没访问,改了的,这次过去使用位改0,找不到,回原点从新来,这回一定能找到了。由于修改的页面需要写回。这样节省时间。

55、什么是TLB(快表)?有什么用?原理?
TLB块表:若页表全部放在内存中,则存取一个数据或一条指令至少要访问两次内存,一次是访问页表,确定物理地址,一次是取数据和指令。这显然比通常执行指令慢一倍,所以增加一个具有并行查找能力的高速缓存存储器–快表。又称联想寄存器,用来存放当前访问的若干表项,比较的时候是将页与块表中的所有页号同时进行比较,找到取出,如果没有则访问主存中页表,读出后同时放入快表中,以便后面可能再次访问,但若块表以满则按着一定算法对旧页表进行替换。

IO管理和文件
56、什么是设备无关性?
应用程序独立于具体使用的物理设备。为了实现设备独立性,在程序中使用逻辑设备名来请求,使用某类设备,在系统中设置逻辑设备表。用于将逻辑设备名映射为物理设备名。这样多个进程可以分时使用同一个设备了。

57、磁盘调度算法有哪些?
先来先服务:仅适用于请求磁盘IO的进程数目较少的场合最简单的一种磁盘调度算法,根据进程请求访问磁盘的先后次序进行调度。优点:简单,公平,每一个请求的进程都能够得到处理,不会出现长期得不到处理的进程。缺点:未对寻道进行优化,致使平均寻道时间可能较长。
最短寻道时间优先:该算法选择这样的进程,其要求访问的磁道,与当前磁头所在的磁道距离最近,以使每次的寻道时间最短,但这种算法不能保证平均寻道时间最短优点:较FCFS有更好的寻道性能缺点:可能导致老进程饥饿,可能会出现磁臂黏着
扫描算法:也叫电梯调度算法在SSTF算法基础上优化而得到,可以防止老进程饥饿。该算法不仅考虑到被访问磁道和当前磁头之间的距离,更优先考虑的是磁头当前的移动方向。(应该选取同方向且距离最近的磁道访问。)优点:磁头双向移动,不会产生饥饿,平均寻道时间短。缺点:可能会出现磁臂黏着
循环扫描算法:为了减少延迟,CSCAN规定磁头单向移动,当从里到最外后,磁头立即返回到最里的欲访问磁道,然后继续向外。优点:磁头单向移动,不会产生饥饿,平均寻道时间短。
58、文件共享的方式又哪些?
硬连接:基于索引节点的共享方式,诸如文件的物理地址以及其他的文件属性等信息,不再是放在目录项中,而是放在索引节点中。文件目录只设置文件名以及指向相应索引节点的指针,索引节点还应有一个链接计数。
软连接:符号链为让B共享用户A的一个共享文件F,可以由系统创建一个LINK类型的新文件也取名为F,并将文件F写入用户B的目录中,指向这个链接文件,其实就是快捷方式。
59、文件分配方式有哪些?
连续分配:每个文件在磁盘上占一组连续块,支持顺序访问和直接访问,优点是简单,存取速度快。缺点是文件长度不宜动态增加。增加需大量移动。
链接分配:采取离散分配,消除外部碎片,提高了磁盘利用率,根据当前需要分配必需的盘块,当文件动态增长时,可以动态再为它分配盘块。隐式链接:每个文件对应一个磁盘块的链表,磁盘块分布在磁盘的任何地方,除最后一个盘块外,每个盘块都由指向下一个盘块的指针。显示连链接:把指针显式存放在内存中一张连接表中,该表在整个磁盘设置一张,每个表项中存放链接指针,即下一个盘块号。显著提高了检索速度,大大减少了访问磁盘的次数,由于分配给文件的所有盘块号都放在该表中,故称该表为文件分配表(FAT)
索引分配:把每个文件的所有盘块号都集中放在一起构成索引块表。为了处理大文件,可以链接多个索引块,也可以多层索引。
混合索引:把多种索引分配方式相结合的分配方式。
60、文件存储空间管理
空闲表法:与内存动态分配相似
空闲链表法:将所有空闲盘区拉成一条空闲链。
位示图:磁盘上每个盘块都有一个二进制位与之对应

61、简述缓冲池原理
缓冲池:由多个系统公用的缓冲区组成,缓冲区按其使用情况可以形成三个队列,空缓冲队列、装满输入数据的缓冲队列(输入队列)和装满输出数据的队列(输出队列),还有四个缓冲区:用于收容输入数据缓冲区、用于提取输入数据的工作缓冲区、用于收容输出数据的工作缓冲区以及用于提取输出数据的工作缓冲区。
当输入进程需要输入数据时,从空缓冲队列队首摘下一个空缓冲区,把它作为收容输入工作缓冲区,然后把输入数据输入其中,装满后再挂到输入队列末尾。当计算机进程要输入数据时,便从输入队列取得一个空缓冲区作为提取输入工作缓冲区,计算进程从中提取数据,数据用完后再将它挂到空缓冲队列尾。当计算机进程需要输入数据时,便从空缓冲队列的队首取得空缓冲区,作为收容输出工作缓冲区,当其中装满输出数据后,再将它挂到输出队列队尾。当要输出时,有输出进程从输出队列中取得一个装满输出数据的缓冲区,作为提取输出工作缓冲区,提取完挂到空缓冲队列队尾。

四、计算机网络部分

计算机网络概述
62、三网融合,指哪三网?
电信网络:主要业务是电话,传真等。
有线电视网络:单向电视节目传输网络。
计算机网络:我们现在用的很多的局域网和Internet等。

63、组成网络协议的三个要素
语法:用户数据与控制信息的结构和格式
语义:需要发出何种控制信息,完成何种动作以,解释比特流每一部分的意义
时序:对事件实现顺序的详细说明

64、OSI参考模型和TCP/IP模型有几层,简述各层原理及作用,TCP/IP有哪些协议?
OSI物理层,透明的传输比特流。
数据链路层,两个相邻节点间的链路上,透明地传送帧中的数据,数据传送时,数据链路层将网络层交下来的IP数据包组成帧,每个帧包括数据和必要控制信息,以使得接收端能够知道从哪开始和结束,进行硬件地址寻址进行硬件地址寻址,还使接收端能检测到所收到的帧中有无差错,有就丢失。
网络层,为分组交换网上的不同主机提供通信服务,把运输层产生的报文段或用户数据报封装成分组,关键问题是逻辑地址寻址,实现不同网络之间的路径选择。
运输层,运输层负责端到端的通信,对一个主机同时运行的多个进程提供服务,这是复用,运输层把收到的信息分别交付给上面应用层相应进程,为高层提供可靠透明有效的数据传输服务,实现进程到进程的传输管理,差错控制,流量控制等。
会话层(Session Layer):建立、管理、终止会话。(在五层模型里面已经合并到了应用层)
表示层(Presentation Layer):数据的表示、安全、压缩。(在五层模型里面已经合并到了应用层)
应用层 (Application): 网络服务与最终用户的一个接口。协议有:HTTP FTP TFTP SMTP SNMP DNS
TCP/IP协议不是TCP和IP这两个协议的合称,而是指因特网整个TCP/IP协议族。TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet ,TCP,UDPIP,ICMP,OSPF,EIGRP,IGMP,RIP,PPP,MTU,ARP,RARP

65、计算机网络通信过程,什么是同步通信和异步通信?
同步通信:同步通信是一种比特同步通信技术,要求发收双方具有同频同相的同步时钟信号,只需在传送报文的最前面附加特定的同步字符,使发收双方建立同步,此后便在同步时钟的控制下逐位发送/接收。
异步通信:相对于同步通信,异步通信在发送字符时,所发送的字符之间的时隙可以是任意的。但是接收端必须时刻做好接收的准备,发送端可以在任意时刻开始发送字符,因此必须在每一个字符的开始和结束的地方加上标志,即加上开始位和停止位,以便使接收端能够正确地将每一个字符接收下来。

66、各设备(集线器、交换机、路由器)在那层工作,分别是什么?
中继器:中继器从一个网络电缆里接收信号, 放大它们,将其送入下一个电缆。
集线器:相当于多接口中继器,可将各节点连接成一个局域网,但任何时刻都只能有一个节点通过公共信道发送数据。逻辑上仍然是一个总线网,使用CSMA/CD协议。不能隔离碰撞域。不能连接不同技术和速率的网络。
网桥:相比较而言,网桥对从关卡上传下来的信息更敏锐一些。网桥是一种对帧进行转发的技术,根据MAC分区块,可隔离碰撞。网桥将网络的多个网段在数据链路层连接起来。
交换机:工作在数据链路层相当于多端口的网桥,允许端口之间建立多个并发连接,实现多个节点之间并发传输,每个端口所占带宽不会因为端口数量增加而减少
路由器:使用物理层或数据链路层的中继系统时只是把一个网络扩大了,而从网络层的角度看,它仍然是通一个网络,一般并不称之为网络互连,网络互联通常是指用路由器进行网络互联和路由选择。

67、网络按地理位置划分为几种?分别介绍
广域网WAN,城域网MAN,局域网LAN,个人区域网WPAN

物理层
68、什么是基带信号?什么是宽带信号?什么是模拟信号?什么是数字信号?
基带信号:将数字信号1或0直接用不同的电压来表示,然后送到电路上去传输。
宽带信号:将基带信号调制后形成的频分复用模拟信号。由于基带信号经过调制,其频谱移动到较高的频率处。由于每一路基带信号的频谱都被移动到不同的频段上,因此合在一起后并不

计算机考研复试面试常问问题 计算机网络篇(下)

计算机考研复试面试常问问题 计算机网络篇(下)

在复习过程中,我用心查阅并整理了在考研复试面试中可能问到的大部分问题,并分点整理了答案,可以直接理解背诵并加上自己的语言润色!极力推荐打印下来看,效率更高!绝对良心之作!

此系列一共有8篇:编程语言篇|数据结构篇|操作系统篇|组成原理篇|计算机网络篇|数据库篇|软件工程篇|计算机专业英语篇(还未全部完成,敬请期待,你们的支持和关注是我最大的动力!)

个人整理,不可用于商业用途,转载请注明出处。

作者各个平台请搜索:程序员宝藏。快来探索属于你的宝藏吧!

需要pdf直接打印版,可在公众号"程序员宝藏"回复复试上岸获取(会持续更新)

需要408电子书2021版,可在公众号"程序员宝藏"回复408电子书获取

需要408初试视频2021版,可在公众号"程序员宝藏"回复408视频获取

需要复试机试视频,可在公众号"程序员宝藏"回复机试必过获取

相对于408初试,复试需要的少多了,加油,大家都可以上岸!!!让我们一起努力!!!

 

 


第四章、网络层

快速唤起记忆知识框架:

技术图片

17.路由器的主要功能?

路由器主要完成两个功能:一是路由选择(确定哪一条路径),二是分组转发(当一个分组到达时所采取的动作)。前者是根据特定的路由选择协议构造出路由表,同时经常或定期地和相邻路由器交换路由信息而不断地更新和维护路由表。后者处理通过路由器的数据流,关键操作是转发表查询、转发及相关的队列管理和任务调度等。

  1. 路由选择。指按照复杂的分布式算法,根据从各相邻路由器所得到的关于整个网络拓扑的变化情况,动态地改变所选择的路由。

  2. 分组转发。指路由器根据转发表将用户的IP 数据报从合适的端口转发出去。路由表是根据路由选择算法得出的,而转发表是从路由表得出的。转发表的结构应当使查找过程最优化,路由表则需要对网络拓扑变化的计算最优化。在讨论路由选择的原理时,往往不去区分转发表和路由表,而是笼统地使用路由表一词。

18.动态路由算法?

1、距离-向量路由算法(例如RIP算法)

在距离-向量路由算法中,所有结点都定期地将它们的整个路由选择表传送给所有与之直接相邻的结点。这种路由选择表包含:1.每条路径的目的地(另一结点)。2.路径的代价(也称距离)。

在这种算法中,所有结点都必须参与距离向量交换,以保证路由的有效性和一致性,也就是说,所有的结点都监听从其他结点传来的路由选择更新信息,并在下列情况下更新它们的路由选择表:

  1. 被通告一条新的路由,该路由在本结点的路由表中不存在,此时本地系统加入这条新的路由。

  2. 发来的路由信息中有一条到达某个目的地的路由,该路由与当前使用的路由相比,有较短的距离(较小的代价)。此种情况下,就用经过发送路由信息的结点的新路由替换路由表中到达那个目的地的现有路由。

2、链路状态路由算法(例如OSPF算法)

链路状态路由算法要求每个参与该算法的结点都具有完全的网络拓扑信息,它们执行下述两项任务。第一,主动测试所有邻接结点的状态。两个共享一条链接的结点是相邻结点,它们连接到同一条链路,或者连接到同一广播型物理网络。第二,定期地将链路状态传播给所有其他结点(或称路由结点)

距离-向量路由算法与链路状态路由算法的比较:在距离-向量路由算法中,每个结点仅与它的直接邻居交谈,它为它的邻居提供从自已到网络中所有其他结点的最低费用估计。在链路状态路由算法中,每个结点通过广播的方式与所有其他结点交谈,但它仅告诉它们与它直接相连的链路的费用。相较之下,距离~向量路由算法有可能遇到路由环路等问题。

3、一个自治系统内部所使用的路由选择协议称为内部网关协议(IGP), 也称域内路由选择,具体的协议有RIP 和OSPF 等。

路由信息协议(Routing Information Protocol, RIP) 是内部网关协议IGP) 中最先得到广泛应用的协议。RIP 是一种分布式的基于距离向量的路由选择协议,其最大优点就是简单。

RIP 规定:

  1. 网络中的每个路由器都要维护从它自身到其他每个目的网络的距离记录(因此这是一组距离,称为距离向量)。

  2. 距离也称跳数(Hop Count), 规定从一个路由器到直接连接网络的距离(跳数)为1 。而每经过一个路由器,距离(跳数)加1 。

  3. RIP 认为好的路由就是它通过的路由器的数目少,即优先选择跳数少的路径。

  4. RIP 允许一条路径最多只能包含15 个路由器(即最多允许15 跳)。因此距离等于16 时,它表示网络不可达。可见RIP 只适用于小型互联网。距离向量路由可能会出现环路的情况,规定路径上的最高跳数的目的是为了防止数据报不断循环在环路上,减少网络拥塞的可能性。

  5. RIP 默认在任意两个使用RIP 的路由器之间每30 秒广播一次RIP 路由更新信息,以便自动建立并维护路由表(动态维护)。

开放最短路径优先(OSPF) 协议是使用分布式链路状态路由算法的典型代表,也是内部网关协议(IGP) 的一种。OSPF 与RIP 相比有以下4 点主要区别:

  1. OSPF 向本自治系统中的所有路由器发送信息,这里使用的方法是洪泛法。而RIP 仅向自已相邻的几个路由器发送信息。

  2. 发送的信息是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。”链路状态”说明本路由器和哪些路由器相邻及该链路的“度量”(或代价)。而在RIP 中,发送的信息是本路由器所知道的全部信息,即整个路由表。

  3. 只有当链路状态发生变化时,路由器才用洪泛法向所有路由器发送此信息,并且更新过程收敛得快,不会出现RIP" 坏消息传得慢"的问题。而在RIP 中,不管网络拓扑是否发生变化,路由器之间都会定期交换路由表的信息。

除以上区别外, OSPF 还有以下特点:

  1. OSPF 对不同的链路可根据IP 分组的不同服务类型(TOS) 而设置成不同的代价。因此,OSPF 对千不同类型的业务可计算出不同的路由,十分灵活。

  2. 如果到同一个目的网络有多条相同代价的路径,那么可以将通信量分配给这几条路径。这称为多路径间的负载平衡。

  3. 所有在OSPF 路由器之间交换的分组都具有鉴别功能,因而保证了仅在可信赖的路由器之间交换链路状态信息。

4、 自治系统之间所使用的路由选择协议称为外部网关协议(EGP), 也称域间路由选择,用在不同自治系统的路由器之间交换路由信息,并负责为分组在不同自治系统之间选择最优的路径。具体的协议有BGP 。

边界网关协议(Border Gateway Protocol, BGP) 是不同自治系统的路由器之间交换路由信息的协议,是一种外部网关协议。边界网关协议常用于互联网的网关之间。路由表包含已知路由器的列表、路由器能够达到的地址及到达每个路由器的路径的跳数。内部网关协议主要设法使数据报在一个AS 中尽可能有效地从源站传送到目的站。在一个AS内部不需要考虑其他方面的策略。然而BGP 使用的环境却不同,主要原因如下:

  1. 因特网的规模太大,使得自治系统之间路由选择非常困难。
  2. 对于自治系统之间的路由选择,要寻找最佳路由是很不现实的。
  3. 自治系统之间的路由选择必须考虑有关策略。

边界网关协议(BGP) 只能力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而并非寻找一条最佳路由。BGP 采用的是路径向量路由选择协议,它与距离向量协议和链路状态协议有很大的区别。BGP 是应用层协议,它是基于TCP 的。

BGP 的工作原理如下:每个自治系统的管理员要选择至少一个路由器(可以有多个)作为该自治系统的"BGP 发言人“。一个BGP 发言人与其他自治系统中的BGP 发言人要交换路由信息,就要先建立TCP 连接(可见BGP 报文是通过TCP 传送的,也就是说BGP 报文是TCP 报文的数据部分),然后在此连接上交换BGP 报文以建立BGP 会话,再利用BGP 会话交换路由信息。当所有BGP 发言人都相互交换网络可达性的信息后,各BGP 发言人就可找出到达各个自治系统的较好路由。


19.网络层转发分组的流程?

  1. 从数据报的首部提取目的主机的IP 地址D, 得出目的网络地址N。

  2. 若网络N 与此路由器直接相连,则把数据报直接交付给目的主机D, 这称为路由器的直接交付;否则是间接交付,执行步骤3) 。

  3. 若路由表中有目的地址为D 的特定主机路由(对特定的目的主机指明一个特定的路由,通常是为了控制或测试网络,或出千安全考虑才采用的),则把数据报传送给路由表中所指明的下一跳路由器;否则执行步骤4)

  4. 若路由表中有到达网络N 的路由,则把数据报传送给路由表指明的下一跳路由器;否则,执行步骤5) 。

  5. 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行步骤6) 。

  6. 报告转发分组出错。

注意:得到下一跳路由器的IP 地址后并不是直接将该地址填入待发送的数据报,而是将该IP 地址转换成MAC 地址(通过ARP),将其放到MAC 帧首部中,然后根据这个MAC 地址找到下一跳路由器。在不同网络中传送时, MAC 帧中的源地址和目的地址要发生变化,但是网桥在转发帧时,不改变帧的源地址,请注意区分。


20.IP地址和MAC地址?

IP 地址是网络层使用的地址,它是分层次等级的。MAC地址是数据链路层使用的地址,它是平面式的。在网络层及网络层之上使用IP 地址, IP 地址放在IP 数据报的首部,而MAC 地址放在MAC 帧的首部。通过数据封装,把IP 数据报分组封装为MAC 帧后,数据链路层看不见数据报分组中的IP地址。

由于路由器的隔离, IP 网络中无法通过广播方式依靠MAC 地址来完成跨网络的寻址,因此在IP 网络的网络层只使用IP 地址来完成寻址。寻址时,IP每个路由器依据其路由表(依靠静态路由或动态路由协议生成)选择到目标网络(即主机号全为0 的网络地址)需要转发到的下一跳(路由器的物理端口号或下一网络地址),而IP 分组通过多次路由转发到达目标网络后,改为在目标LAN 中通过数据链路层的MAC 地址以广播方式寻址。这样可以提高路由选择的效率。

注意:路由器由于互联多个网络,因此它不仅有多个IP 地址,也有多个硬件地址。

21.ARP地址解析协议?

无论网络层使用什么协议,在实际网络的链路上传送数据帧时,最终必须使用硬件地址。所以需要一种方法来完成IP 地址到MAC 地址的映射,这就是地址解析协议(Address Resolution Protocol)。每台主机都设有一个ARP 高速缓存,用来存放本局域网上各主机和路由器的IP地址到MAC 地址的映射表,称ARP 表。使用ARP 来动态维护此ARP 表。

ARP 工作在网络层,其工作原理如下:主机A 欲向本局域网上的某台主机B 发送IP 数据报时,先在其ARP 高速缓存中查看有无主机B 的IP 地址。如有,就可查出其对应的硬件地址,再将此硬件地址写入MAC 帧,然后通过局域网将该MAC 帧发往此硬件地址。如果没有,那么就通过使用目的MAC 地址为FF-FF-FF-FF-FF-FF 的帧来封装并广播ARP 请求分组,使同一个局域网里的所有主机收到ARP 请求。主机B 收到该ARP 请求后,向主机A 发出响应ARP 分组,分组中包含主机B 的IP 与MAC 地址的映射关系,主机A 在收到后将此映射写入ARP 缓存,然后按查询到的硬件地址发送MAC 帧。ARP 由于“看到了"IP 地址,所以它工作在网络层,而NAT路由器由于“看到了“端口,所以它工作在传输层。

注意: ARP 用于解决同一个局域网上的主机或路由器的IP 地址和硬件地址的映射问题。如果所要找的主机和源主机不在同一个局域网上,那么就要通过ARP 找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络。剩下的工作就由下一个网络来做,尽管ARP 请求分组是广播发送的,但ARP 响应分组是普通的单播,即从一个源地址发送到一个目的地址。


22.DHCP动态主机配置协议?

动态主机配置协议(Dynamic Host Configuration Protocol, DHCP) 常用于给主机动态地分配IP 地址,它提供了即插即用联网的机制,这种机制允许一台计算机加入新的网络和获取IP 地址而不用手工参与。DHCP 是应用层协议,它是基于UDP 的。

DHCP 的工作原理如下:使用客户/服务器方式。需要IP 地址的主机在启动时就向DHCP 服务器广播发送发现报文,这时该主机就成为DHCP 客户。本地网络上所有主机都能收到此广播报文,但只有DHCP 服务器才回答此广播报文。DHCP 服务器先在其数据库中查找该计算机的配置信息。若找到,则返回找到的信息。若找不到,则从服务器的IP 地址池中取一个地址分配给该计算机。DHCP 服务器的回答报文称为提供报文。 DHCP 服务器聚合DHCP 客户端的交换过程如下:

  1. DHCP 客户机广播"DHCP 发现“消息,试图找到网络中的DHCP 服务器,以便从DHCP服务器获得一个IP 地址。

  2. DHCP 服务器收到"DHCP 发现消息后,向网络中广播"DHCP 提供“消息,其中包括提供DHCP 客户机的IP 地址和相关配置信息。

  3. DHCP 客户机收到"DHCP 提供“消息,如果接收DHCP 服务器所提供的相关参数,那么通过广播"DHCP 请求“消息向DHCP 服务器请求提供IP 地址。

  4. DHCP 服务器广播"DHCP 确认“消息,将IP 地址分配给DHCP 客户机。DHCP 允许网络上配置多台DHCP 服务器,当DHCP 客户机发出DHCP 请求时,有可能收到多个应答消息。这时, DHCP 客户机只会挑选其中的一个,通常挑选最先到达的。

DHCP 服务器分配给DHCP 客户的IP 地址是临时的,因此DHCP 客户只能在一段有限的时间内使用这个分配到的IP 地址。DHCP 称这段时间为租用期。租用期的数值应由DHCP 服务器自己决定, DHCP 客户也可在自已发送的报文中提出对租用期的要求。

23.ICMP网际控制报文协议?

为了提高IP 数据报交付成功的机会,在网络层使用了网际控制报文协议(Internet Control Message Protocol, ICMP) 来让主机或路由器报告差错和异常情况。ICMP 报文作为IP 层数据报的数据,加上数据报的首部,组成IP 数据报发送出去。ICMP 是IP 层协议。ICMP 报文的种类有两种,即ICMP 差错报告报文和ICMP 询问报文。ICMP 差错报告报文用于目标主机或到目标主机路径上的路由器向源主机报告差错和异常情况。共有以下5种类型:

  1. 终点不可达。当路由器或主机不能交付数据报时,就向源点发送终点不可达报文。

  2. 源点抑制。当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报的发送速率放慢。

  3. 时间超过。当路由器收到生存时间(TTL) 为零的数据报时,除丢弃该数据报外,还要向源点发送时间超过报文。当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,并向源点发送时间超过报文。

  4. 参数问题。当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃 该数据报,并向源点发送参数问题报文。

  5. 改变路由(重定向)。路由器把改变路由报文发送给主机,让主机知道下次应将数据报发 送给另外的路由器(可通过更好的路由)。


第五章、传输层

快速唤起记忆知识框架

技术图片

24.传输层的功能?

从通信和信息处理的角度看,传输层向它上面的应用层提供通信服务,它属千面向通信部分的最高层,同时也是用户功能中的最低层。传输层位于网络层之上,它为运行在不同主机上的进程之间提供了逻辑通信,而网络层提供主机之间的逻辑通信。显然,即使网络层协议不可靠(网络层协议使分组丢失、混乱或重复), 传输层同样能为应用程序提供可靠的服务。

传输层的功能如下:

l) 传输层提供应用进程之间的逻辑通信(即端到端的通信)。与网络层的区别是,网络层提供的是主机之间的逻辑通信。从网络层来说,通信的双方是两台主机, IP 数据报的首部给出了这两台主机的IP 地址。但“两台主机之间的通信”实际上是两台主机中的应用进程之间的通信,应用进程之间的通信又称端到端的逻辑通信。

  1. 复用和分用。复用是指发送方不同的应用进程都可使用同一个传输层协议传送数据;分用是指接收方的传输层在剥去报文的首部后能够把这些数据正确交付到目的应用进程。

  2. 传输层还要对收到的报文进行差错检测(首部和数据部分)。而网络层只检查IP 数据报的首部,不检验数据部分是否出错。

  3. 提供两种不同的传输协议,即面向连接的TCP 和无连接的UDP 。而网络层无法同时实现两种协议(即在网络层要么只提供面向连接的服务,如虚电路;要么只提供无连接服务,如数据报,而不可能在网络层同时存在这两种方式)。


25.UDP协议?

RFC 768 定义的UDP 只是做了传输协议能够做的最少工作,它仅在IP 的数据报服务之上增加了两个最基本的服务:复用和分用以及差错检测。如果应用程序开发者选择UDP 而非TCP,那么应用程序几乎直接与IP 打交道。为什么应用开发人员宁愿在UDP 之上构建应用,也不选择TCP? 既然TCP 提供可靠的服务,而UDP 不提供,那么TCP 总是首选吗?答案是否定的,因为有很多应用更适合用UDP,主要是因为UDP 具有如下优点:

  1. UDP 无须建立连接。因此UDP 不会引入建立连接的时延。试想如果DNS 运行在TCP 而非UDP 上,那么DNS 的速度会慢很多。HTTP 使用TCP 而非UDP, 是因为对于基于文本数据的Web网页来说可靠性是至关重要的。

  2. 无连接状态。TCP 需要在端系统中维护连接状态。此连接状态包括接收和发送缓存、拥塞控制参数和序号与确认号的参数。而UDP 不维护连接状态,也不跟踪这些参数。因此,某些专用应用服务器使用UDP 时,一般都能支持更多的活动客户机

  3. 分组首部开销小。TCP 有20B 的首部升销,而UDP 仅有8B 的升销。

  4. 应用层能更好地控制要发送的数据和发送时间。UDP 没有拥塞控制,因此网络中的拥塞不会影响主机的发送效率。某些实时应用要求以稳定的速度发送,能容忍一些数据的丢失,但不允许有较大的时延,而UDP 正好满足这些应用的需求。UDP 常用于一次性传输较少数据的网络应用如DNS 、SNMP 等,因为对千这此应用,若采用TCP, 则将为连接创建、维护和拆除带来不小的开销。UDP 也常用于多媒体应用(如IP 电话、实时视频会议、流媒体等),显然,可靠数据传输对这些应用来说并不是最重要的,但TCP的拥塞控制会导致数据出现较大的延迟,这是它们不可容忍的。

UDP 提供尽最大努力的交付,即不保证可靠交付,但这并不意味着应用对数据的要求是不可靠的,因此所有维护传输可靠性的工作需要用户在应用层来完成。应用实体可以根据应用的需求来灵活设计自己的可靠性机制。


26.TCP协议?

TCP 是在不可靠的IP 层之上实现的可靠的数据传输协议,它主要解决传输的可靠、有序、无丢失和不重复问题。TCP 是TCP/IP 体系中非常复杂的一个协议,主要特点如下:

  1. TCP 是面向连接的传输层协议。

  2. 每条TCP 连接只能有两个端点,每条TCP 连接只能是点对点的(一对一)。

  3. TCP 提供可靠的交付服务,保证传送的数据无差错、不丢失、不重复且有序。

  4. TCP 提供全双工通信,允许通信双方的应用进程在任何时候都能发送数据,为此TCP 连接的两端都设有发送缓存和接收缓存,用来临时存放双向通信的数据。发送缓存用来暂时存放以下数据:(1)发送应用程序传送给发送方TCP 准备发送的数据;(2)TCP 已发送但尚未收到确认的数据。接收缓存用来暂时存放以下数据:(1)按序到达但尚未被接收应用程序收取的数据;(2)不按序到达的数据。

TCP连接的建立

在TCP 连接建立的过程中,要解决以下三个问题:

  1. 要使每一方都能够确知对方的存在。

  2. 要允许双方协商一些参数(如最大窗口值、是否使用窗口扩大选项、时间戳选项及服务质量等)。

  3. 能够对运输实体资源(如缓存大小、连接表中的项目等)进行分配。

三次握手建立连接

第一步:客户机的TCP 首先向服务器的TCP 发送一个连接请求报文段。这个特殊的报文段中不含应用层数据,其首部中的SYN标志位被置为1 。另外,客户机会随机选择一个起始序号seq = x(连接请求报文不携带数据,但要消耗一个序号)。

第二步:服务器的TCP 收到连接请求报文段后,如同意建立连接,就向客户机发回确认,并为该TCP 连接分配TCP 缓存和变量。在确认报文段中, SYN 和ACK 位都被置为1, 确认号字段的值为x+ 1, 并且服务器随机产生起始序号seq= y( 确认报文不携带数据,但也要消耗一个序号)。确认报文段同样不包含应用层数据。

第三步:当客户机收到确认报文段后,还要向服务器给出确认,并且也要给该连接分配缓存和变量。这个报文段的ACK 标志位被置1, 序号字段为x+ 1, 确认号字段ack=y+ 1 。该报文段可以携带数据,若不携带数据则不消耗序号。

成功进行以上三步后,就建立了TCP 连接,接下来就可以传送应用层数据。TCP 提供的是全双工通信,因此通信双方的应用进程在任何时候都能发送数据。另外,值得注意的是,服务器端的资源是在完成第二次握手时分配的,而客户端的资源是在完成第三次握手时分配的,这就使得服务器易于受到SYN 洪泛攻击。

技术图片

四次握手释放连接

第一步:客户机打算关闭连接时,向其TCP 发送一个连接释放报文段,并停止发送数据,主动关闭TCP 连接,该报文段的FIN 标志位被置1, seq= u, 它等于前面已传送过的数据的最后一个字节的序号加1 (FIN 报文段即使不携带数据,也要消耗一个序号)。TCP 是全双工的,即可以想象为一条TCP 连接上有两条数据通路。发送FIN 报文时,发送FIN 的一端不能再发送数据,即关闭了其中一条数据通路,但对方还可以发送数据。

第二步:服务器收到连接释放报文段后即发出确认,确认号是ack = u + 1, 而这个报文段自己的序号是V, 等于它前面已传送过的数据的最后一个字节的序号加1 。此时,从客户机到服务器这个方向的连接就释放了, TCP 连接处于半关闭状态。但服务器若发送数据,客户机仍要接收,即从服务器到客户机这个方向的连接并未关闭。

第三步:若服务器已经没有要向客户机发送的数据,就通知TCP 释放连接,此时其发出FIN= 1 的连接释放报文段。

第四步:客户机收到连接释放报文段后,必须发出确认。在确认报文段中, ACK 字段被置为1, 确认号ack= w + 1, 序号seq= u + 1 。此时TCP 连接还未释放,必须经过时间等待计时器设置的时间2MSL 后, A 才进入连接关闭状态。

技术图片

对上述TCP 连接建立和释放的总结如下:

  1. 连接建立。分为3 步: 1、SYN = 1, seq = x 。 2、SYN= 1, ACK= 1, seq= y, ack = x + 1 。 3、ACK= 1, seq= x + 1, ack = y + l 。
  2. 释放连接。分为4 步: 1、FIN= 1, seq =u 。 2、ACK = 1, seq = v, ack = u + 1 。 3、FIN= 1, ACK= 1, seq= w, ack = u + 1 。 4、ACK= 1, seq= u + 1, ack = w + 1。

27.拥塞控制的四种算法?

所谓拥塞控制,是指防止过多的数据注入网络,保证网络中的路由器或链路小致过载。出现拥塞时,端点并不了解到拥塞发生的细节,对通信连接的端点来说,拥塞往往表现为通信时延的增加。当然,拥塞控制和流量控制也有相似的地方,即它们都通过控制发送方发送数据的速率来达到控制效果。

拥塞控制与流量控制的区别:拥塞控制是让网络能够承受现有的网络负荷,是一个全局性的过程,涉及所有的主机、所有的路由器,以及与降低网络传输性能有关的所有因素。相反,流量控制往往是指点对点的通信量的控制,即接收端控制发送端,它所要做的是抑制发送端发送数据的速率,以便使接收端来得及接收。

1、慢开始算法(接收窗口rwnd,拥塞窗口cwnd) 在TCP 刚刚连接好并开始发送TCP 报文段时,先令拥塞窗口cwnd = 1, 即一个最大报文段长度MSS 。每收到一个对新报文段的确认后,将cwnd 加1, 即增大一个MSS 。用这样的方法逐步增大发送方的拥塞窗口cwnd, 可使分组注入网络的速率更加合理。使用慢开始算法后,每经过一个传输轮次(即往返时延RTT), 拥塞窗口cwnd 就会加倍,即cwnd 的大小指数式增长。这样,慢开始一直把拥塞窗口cwnd 增大到一个规定的慢开始门限ssthresh(阔值),然后改用拥塞避免算法**。**

2、拥塞避免算法 拥寒避免算法的做法如下:发送端的拥塞窗口cwnd 每经过一个往返时延RTT 就增加一个MSS的大小,而不是加倍,使cwnd 按线性规律缓慢增长(即加法增大),而当出现一次超时(网络拥塞)时,令慢开始门限ssthresh 等于当前cwnd 的一半(即乘法减小)。

技术图片

3、快重传 快重传技术使用了冗余ACK 来检测丢包的发生。同样,冗余ACK 也用千网络拥塞的检测(丢了包当然意味着网络可能出现了拥塞)。快重传并非取消重传计时器,而是在某些情况下可更早地重传丢失的报文段。当发送方连续收到三个重复的ACK 报文时,直接重传对方尚未收到的报文段,而不必等待那个报文段设置的重传计时器超时。

4、快恢复 快恢复算法的原理如下:发送端收到连续三个冗余ACK (即重复确认)时,执行“乘法减小”算法,把慢开始门限ssthresh 设置为出现拥塞时发送方cwnd 的一半。与慢开始(慢开始算法将拥塞窗口cwnd 设置为1) 的不同之处是,它把cwnd 的值设置为慢开始门限ssthresh 改变后的数值,然后开始执行拥塞避免算法("加法增大")‘使拥塞窗口缓慢地线性增大。由于跳过了cwnd 从1 起始的慢开始过程,所以被称为快恢复。


28.为何不采用“三次握手“释放连接,且发送最后一次握手报文后要等待2MSL 的时间呢?

原因有两个:

  1. 保证A 发送的最后一个确认报文段能够到达B 。如果A 不等待2MSL, 若A 返回的最后确认报文段丢失,则B 不能进入正常关闭状态,而A 此时已经关闭,也不可能再重传。

  2. 防止出现“已失效的连接请求报文段“。A 在发送最后一个确认报文段后,再经过2MSL可保证本连接持续的时间内所产生的所有报文段从网络中消失。

服务器结束TCP 连接的时间要比客户机早一些,因为客户机最后要等待2MSL 后才可进入CLOSED 状态。


29.为什么不采用“两次握手”建立连接呢?

这主要是为了防止两次握手情况下已失效的连接请求报文段突然又传送到服务器而产生错误。考虑下面这种情况。客户A 向服务器B 发出TCP 连接请求,第一个连接请求报文在网络的某个结点长时间滞留, A 超时后认为报文丢失,千是再重传一次连接请求, B 收到后建立连接。数据传输完毕后双方断开连接。而此时,前一个滞留在网络中的连接请求到达服务器B, 而B 认为A 又发来连接请求,此时若使用“三次握手”,则B 向A 返回确认报文段,由于是一个失效的请求,因此A 不予理睬,建立连接失败。若采用的是“两次握手”,则这种情况下B 认为传输连接已经建立,并一直等待A 传输数据,而A 此时并无连接请求,因此不予理睬,这样就造成了B的资源白白浪费。


第六章、应用层

快速唤起记忆知识框架

技术图片

30.DNS域名解析协议?

域名解析是指把域名映射成为IP 地址或把IP 地址映射成域名的过程。前者称为正向解析,后者称为反向解析。当客户端需要域名解析时,通过本机的DNS 客户端构造一个DNS 请求报文,以UDP 数据报方式发往本地域名服务器。域名解析有两种方式:递归查询和递归与迭代相结合的查询。

31.FTP文件传输协议?

文件传输协议(file Transfer Protocol, FTP) 是因特网上使用得最广泛的文件传输协议。FTP提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存取权限。它屏蔽了各计算机系统的细节,因而适合于在异构网络中的任意计算机之间传送文件。FTP 提供以下功能: (1)提供不同种类主机系统(硬、软件体系等都可以不同)之间的文件传输能力。 (2)以用户权限管理的方式提供用户对远程FTP 服务器上的文件管理能力。 (3)以匿名FTP 的方式提供公用文件共享的能力。

FTP 采用客户/服务器的工作方式,它使用TCP 可靠的传输服务。一个FTP 服务器进程可同时为多个客户进程提供服务。FTP 的服务器进程由两大部分组成:一个主进程,负责接收新的请求;另外有若干从属进程,负责处理单个请求。其工作步骤如下: (1)打开熟知端口21 (控制端口),使客户进程能够连接上。 (2)等待客户进程发连接请求。 (3)启动从属进程来处理客户进程发来的请求。主进程与从属进程并发执行,从属进程对客户进程的请求处理完毕后即终止。 (4)回到等待状态,继续接收其他客户进程的请求。


32.SMTP简单邮件传输协议?

简单邮件传输协议(Simple Mail Transfer Protocol, SMTP) 是一种提供可靠且有效的电子邮件传输的协议,它控制两个相互通信的SMTP 进程交换信息。由于SMTP 使用客户/服务器方式,因此负责发送邮件的SMTP 进程就是SMTP 客户,而负责接收邮件的SMTP 进程就是SMTP 服务器。SMTP 用的是TCP 连接,端口号为25 。SMTP 通信有以下三个阶段:(1) 连接建立(2) 邮件传送(3) 连接释放。


33.POP3

邮局协议(Post Office Protocol, POP) 是一个非常简单但功能有限的邮件读取协议,现在使用的是它的第3 个版本POP3 。POP3 采用的是“拉" (Pull) 的通信方式,当用户读取邮件时,用户代理向邮件服务器发出请求,“拉”取用户邮箱中的邮件。POP 也使用客户/服务器的工作方式,在传输层使用TCP, 端口号为110 。接收方的用户代理上必须运行POP 客户程序,而接收方的邮件服务器上则运行POP 服务器程序。POP 有两种工作方式:“下载并保留”和“下载并删除"。在“下载并保留”方式下,用户从邮件服务器上读取邮件后,邮件依然会保存在邮件服务器上,用户可再次从服务器上读取该邮件;而使用“下载并删除“方式时,邮件一旦被读取,就被从邮件服务器上删除,用户不能再次从服务器上读取。

随着万维网的流行,目前出现了很多基于万维网的电子邮件,如Hotmail 、Gmail 等。这种电子邮件的特点是,用户浏览器与Hotmail 或Gmail 的邮件服务器之间的邮件发送或接收使用的是HTTP, 而仅在不同邮件服务器之间传送邮件时才使用SMTP


34.HTTP超文本传输协议?

HTTP 定义了浏览器(万维网客户进程)怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器。从层次的角度看, HTTP 是面向事务的(Transaction-oriented) 应用层协议,它规定了在浏览器和服务器之间的请求和响应的格式与规则,是万维网上能够可靠地交换文件(包括文本、声音、图像等各种多媒体文件)的重要基础。

用户单击鼠标后所发生的事件按顺序如下(以访问清华大学的网站为例):

  1. 浏览器分析链接指向页面的URL (http://www.tsinghua.edu.cn /chn/index.htm) 。
  2. 浏览器向DNS 请求解析www.tsinghuaaedu.CR 的IP 地址。-
  3. 域名系统统DNS 胪祈出清毕大学服务器的IP 地址。
  4. 浏览器与该服务器建立TCP 连接(默认端口号为80) 。
  5. 浏览器发出HTTP 请求: GET /chn/index.htm 。
  6. 服务器通过HTTP 响应把文件index.htm 发送给浏览器。
  7. TCP 连接释放。
  8. 浏览器解释文件index.htm, 并将Web 页显示给用户。

技术图片

参考文献:

[1]谢希仁. 计算机网络.第5版[M]. 电子工业出版社, 2008.

[2]王道论坛组, 王道论坛. 2015年计算机网络联考复习指导[M]. 电子工业出版社, 2014.

以上是关于计算机复试面试基础知识(八股文)(数据库数据结构操作系统计网机组等)的主要内容,如果未能解决你的问题,请参考以下文章

三天吃透Redis面试八股文

三天吃透MySQL面试八股文

一天吃透TCP面试八股文

三天吃透MySQL面试八股文

计算机考研复试面试系列 计算机专业英语篇

计算机考研复试面试常问问题 操作系统篇