【面试问题】


操作系统

操作系统的功能和基本特征

操作系统是控制和管理整个计算机系统的硬件和软件资源,合理的组织、调度计算机的工作与资源的分配,进而为用户和其他软件提供方便接口与环境的程序集合。
功能:存储器管理功能,处理机管理功能,设备管理功能,文件管理功能,用户接口管理
基本特征:并发性,共享性,虚拟性,异步性
在这里插入图片描述

操作系统的发展和分类

在这里插入图片描述

中断

中断的概念和作用: 发生中断,就意味着需要操作系统介入开展管理工作,CPU会立即进入核心态。中断是CPU从用户态进入核心态的唯一途径。
中断的分类: 内中断,外中断。中断信号来自CPU内部还是外部。
外中断的处理过程: 1. 每条指令结束后,CPU检查是否有外部中断信号 2. 若有外部中断信号,则需要保护被中断进程的CPU环境 3. 根据中断信号类型转入响应的中断处理程序 4. 恢复原进程的CPU环境并退出中断,返回原进程继续往下执行。

系统调用

系统调用是操作系统提供给应用程序使用的接口,应用程序通过系统调用来请求获得操作系统的服务,系统调用会使处理器从用户态进入核心态。

同步和互斥

同步亦称直接制约关系,它是指为完成某种任务而建立的两个或多个进程,这些进程因为需要在某些位置上协调它们的工作次序而产生的制约关系。进程间的直接制约关系就是源于它们之间的相互合作。
互斥亦称间接制约关系,是指当一个进程访问某临界资源时,另一个想要访问该临界资源的进程必须等待,当前访问临界资源的进程访问结束,释放该临界资源后,另一个进程才能去访问。

进程和线程

进程是程序的一次执行过程,是进程实体(程序段、数据段、PCB)的运行过程,是系统进行资源分配和调度的一个独立单位。
PCB(进程控制块)是进程存在的唯一标志。
线程是一个基本的CPU执行单元,也是程序执行流的最小单位。

  1. 一个进程中可以有多个线程,多个线程共享进程的堆和方法区,但是每个线程有自己的程序计数器、虚拟机和本地方法栈。
  2. 进程是资源分配的最小单位,线程是CPU调度的最小单位。线程几乎不拥有系统资源
  3. 切换进程,系统开销较大;切换同进程内的线程,系统开销很小。

在这里插入图片描述
进程控制相关的原语

  1. 更新PCB中的信息
    a.所有的进程控制原语一定都会修改进程状态标志
    b.剥夺当前运行进程的CPU使用权必然需要保存其运行环境
    c.某进程开始运行前必然要恢复其运行环境
  2. 将PCB插入合适的队列
  3. 分配/回收资源

作业调度和进程调度

作业调度的主要任务是按一定的原则从外存上处于后备状态的作业中挑选作业进入内存,为它们创建进程,分配必要的资源,并将其放入就绪队列中。
进程调度是根据某种算法(先来先服务、最短作业优先、时间片轮转、优先级、多级反馈),决定就绪队列中哪个进程应获得处理机,并由分派程序将处理机分配给被选中的进程。

死锁产生的必要条件

死锁: 各进程互相等待对方手里的资源,导致各进程都阻塞,无法向前推进。

死锁原因:
① 系统资源不足
② 进程推进顺序不当

产生死锁的必要条件:

  1. 互斥条件
  2. 请求和保持条件
  3. 不剥夺条件
  4. 环路等待条件
    在这里插入图片描述

处理死锁的基本方法:
① 预防死锁:这是一种较简单和直观的事先预防的方法。方法是通过设置某些限制条件,去破坏产生死
锁的四个必要条件中的一个或者几个,来预防发生死锁。预防死锁是一种较易实现的方法,已被广泛
使用。但是由于所施加的限制条件往往太严格,可能会导致系统资源利用率和系统吞吐量降低。
② 避免死锁:该方法同样是属于事先预防的策略,但它并不须事先采取各种限制措施去破坏产生死锁的
的四个必要条件,而是在资源的动态分配过程中,用某种方法去防止系统进入不安全状态,从而避免
发生死锁。
③ 检测死锁:这种方法并不须事先采取任何限制性措施,也不必检查系统是否已经进入不安全区,此方
法允许系统在运行过程中发生死锁。但可通过系统所设置的检测机构,及时地检测出死锁的发生,并
精确地确定与死锁有关的进程和资源,然后采取适当措施,从系统中将已发生的死锁清除掉。
④ 解除死锁:这是与检测死锁相配套的一种措施。当检测到系统中已发生死锁时,须将进程从死锁状态
中解脱出来。常用的实施方法是撤销或挂起一些进程,以便回收一些资源,再将这些资源分配给已处
于阻塞状态的进程,使之转为就绪状态,以继续运行。

银行家算法

最大需求矩阵Max: 这是一个n×m的矩阵,它定义了系统中n个进程中的每一个进程对m类资源的最大需求。如果Max[i,j]=K,则表示进程i需要Rj类资源的最大数目为K。
分配矩阵Allocation: 这也是一个n×m的矩阵,它定义了系统中每一类资源当前已分配给每一进程的资源数。如果Allocation[i,j]=K,则表示进程i当前已分得Rj类资源的 数目为K。
需求矩阵Need: 这也是一个n×m的矩阵,用以表示每一个进程尚需的各类资源数。如果Need[i,j]=K,则表示进程i还需要Rj类资源K个,方能完成其任务。
可利用资源向量Available: 是个含有m个元素的数组,其中的每一个元素代表一类可利用的资源数目。如果Available[j]=K,则表示系统中现有Rj类资源K个。

设Request(i)是进程Pi的请求向量,如果Request(i)[j]=k,表示进程Pi需要K个R(j)类型的资源。当Pi发现资源请求后系统将进行下列步骤
(1)如果Request(i)[j] <= Need[i,j],边转向步骤2),否则认为出错,因为它所请求的资源数已超过它所宣布的最大值。
(2)如果Request(i)[j] <= Available[i,j],便转向步骤3),否则,表示尚无足够资源,Pi需等待。
(3)系统试探着把资源分配给进程Pi,并需要修改下面数据结构中的数值;
Available[j] = Available[j] - Request(i)[j];
Allocation[i,j] = Allocation[i,j] + Request(i)[j];
Need[i,j] = Need[i,j] - Request(i)[j];

银行家算法步骤:

  1. 检查此次申请是否超过了之前声明的最大需求数
  2. 检查此时系统剩余的可用资源是否还能满足这次请求
  3. 试探着分配,更改各数据结构
  4. 用安全性算法检查此次分配是否会导致系统进入不安全状态

安全性算法步骤: 检查当前的剩余可用资源是否能满足某个进程的最大需求,如果可以,就把该进程加入安全序列,并把该进程持有的资源全部回收。不断重复上述过程,看最终是否能让所有进程都加入安全序列。

覆盖技术和交换技术

在这里插入图片描述
覆盖技术:把一个大的程序划分为一系列覆盖,每个覆盖是一个相对独立的程序单位,把程序执行时并不
要求同时装入内存的覆盖组成一组,成为覆盖段,这个覆盖段分配到同一个存储区域,这个存储区域成为
覆盖区,它与覆盖段一一对应。覆盖段的大小由覆盖段中最大的覆盖来确定。(为了解决内存容量太小的问
题,打破了必须将一个程序全部信息装入内存后才能运行的限制)

交换技术:把暂时不用的某个程序及数据部分从内存移到外存中去,以便腾出必要的内存空间;或者把指
定的程序或数据从外存读到相应的内存中,并将控制权交给他,让其在系统上运行的一种内存扩充技术。
处理器的中级调度就是采用交换技术。

区别:
① 与覆盖技术相比,交换技术不要求程序员给出的程序段之间的覆盖结构;
② 交换技术主要在进程和作业之间进行,覆盖技术主要在同一个进程或作业中进行;
③ 覆盖技术只能覆盖于覆盖程序段无关的程序段,交换进程由换出和换入两个过程组成。

连续分区分配vs分连续分区分配

连续分区分配和非连续分区分配
一、连续分区分配(会产生碎片)
优点:连续,设计简单,直接寻址,效率高。缺点:内存利用效率最低,有内部碎片。
1.单一连续分配
适用于单用户单作业
2.固定分区分配
会产生内部碎片
3.动态分配分配
会产生外部碎片
①最佳适应算法(小)
②最坏适应算法(大)
③首次适应算法(从低到高地址)
④循环首次适应算法(每次都从上次分配完的下一个区域开始)
二、非连续分区分配(允许将程序分散装置在到很多个不相邻的小分区,没有外部碎片)
缺点:不连续,设计复杂,间接寻址,效率低。优点:内存利用效率高,无外部碎片。

1.分页式分区
2.分段式分区
3.段页式分区

动态分区分配算法

在这里插入图片描述

页面置换算法

在这里插入图片描述
Belady异常:当为进程分配的物理块增大时,缺页次数不减反增的异常现象。

分页和分段的区别

共同点:两者都采用离散分配方式,且都地址映射机构来实现地址的转换
不同点:
1:页是信息的物理单位采用分页存储管理方式是为了实现离散分配方法。提高内存的利用率,采用分段目的主要在于能更好的满足用户的需求
2:页的大小固定且有系统决定,在采用分页存储管理方式中直接由硬件实现。而段的大小不固定,决定于用户所编写的程序

3:分页的地址空间是一维的,分页完全是系统完全是行为,分段系统中是二维的。

磁盘调度算法

在这里插入图片描述

计算机网络

时延

时延是指一个报文或分组从一个网络的一端传送到另一个端所需要的时间。它包括了发送时延,传播
时延,处理时延,排队时延。(时延=发送时延+传播时延+处理时延+排队时延)一般,发送时延与传播时
延是我们主要考虑的。对于报文长度较大的情况,发送时延是主要矛盾;报文长度较小的情况,传播时延
是主要矛盾。

带宽

带宽指网络系统的通信链路传输数据的能力,即表示单位时间内从网络中的某一点到另一点所能通过的“最高数据率”
网络带宽:强调网络最大的数据传输速率,即传输数据率理论峰值
网络吞吐量:强调网络实际的数据传输速率

网络拥塞

网络中存在太多的数据包导致数据包被延迟或丢失,从而降低了整个网络的传输性能,这种情况叫做拥塞。
如果产生网络拥塞,则网络的性能明显下降,整个网络的吞吐量将随着输入负荷的增大而下降。
拥塞控制:可分为闭环控制和开环控制。开环控制是在设计网络时事先将有关拥塞的因素考虑到,力求网
络在工作时不产生拥塞。闭环拥塞是基于反馈环路的概念。
拥塞控制的 4 种算法:
① 慢开始算法
② 拥塞避免算法
③ 快重传算法
④ 快恢复算法

多道批处理系统、分时系统、实时系统

多道批处理系统:
允许多个程序同时进入内存并允许他们在CPU中交替运行,共享各种软硬件资源,由作业调度程序自动选择作业运行。 特点:多道、宏观并行、微观串行。 资源利用率高、系统吞吐量大、平均周转时间长、无交互能力
分时系统:交互性强
实时系统:可靠性强

简述计算机网络中各层作用

应用层:为操作系统或网络应用程序提供访问网络服务的接口。文件传输,电子邮件,文件服务,虚拟终端 TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet

表示层:对上层数据或信息进行变换以保证一个主机应用层信息可以被另一个主机的应用程序理解。表示层的数据转换包括数据的加密、压缩、格式转换等。数据格式化,代码转换,数据加密 没有协议

会话层:管理主机之间的会话进程,即负责建立、管理、终止进程之间的会话。会话层还利用在数据中插入校验点来实现数据的同步。解除或建立与别的接点的联系 没有协议

传输层:是第一个端到端,即主机到主机的层次。传输层负责将上层数据分段并提供端到端的、可靠的或不可靠的传输。此外,传输层还要处理端到端的差错控制和流量控制问题。在这一层,数据的单位称为数据段(segment)。
提供端对端的接口 TCP,UDP

网络层:负责对子网间的数据包进行路由选择。网络层还可以实现拥塞控制、网际互连等功能。在这一层,数据的单位称为数据包(packet)。
为数据包选择路由 IP,ICMP,RIP,OSPF,BGP,IGMP

数据链路层:在不可靠的物理介质上提供可靠的传输。该层的作用包括物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。在这一层,数据的单位称为帧(frame)。
传输有地址的帧以及错误检测功能 SLIP,CSLIP,PPP,ARP,RARP,MTU

物理层:规定了激活、维持、关闭通信端点之间的机械特性、电气特性、功能特性以及过程特性。该层为上层协议提供了一个传输数据的物理媒体。在这一层,数据的单位称为比特(bit)。
以二进制数据形式在物理媒体上传输数据 ISO2110,IEEE802,IEEE802.2

数据链路层的作用

数据链路层在物理层提供的服务的基础上向网络层提供服务,将原始的、有差错的物理线路改进成逻辑上
无差错的数据链路,从而向网络层提供高质量的服务。功能主要有:①链路管理;②封装成帧;③透明传
输;④差错检测

为什么要进行流量控制

由于接收发双方各自的工作速率和缓存空间的差异,可能出现发送方的发送能力大于接收方的
接收能力的现象,如若此时不适当限制发送方的发送速率(即链路上的信息流量),前而来不及
接收的帧将会被后面不断发送辈的帧"淹没",造成帧的丢失而出错。

流量控制的常见方式?

1、停止-等待流量控制方式基本原理(发送窗口大小=1,接受窗口大小=1)
发送方每发送一帧,都要等待接收方的应答信号,之后才能发送下一帧;接收方每接收一帧,
都要反馈一个应答信号,表示可接收下一帧,如果接收方不反馈应答信号,那么发送方必须一直
等待。每次只允许发送一帧,然后就陷入等待接收方确认信息的过程中,因而传输效率很低。
2、滑动窗口流量控制方式基本原理
在任意时刻,发送方都维持一组连续的允许发送的帧的序号,称为发送窗口;同时接收方也维持
一组连续的允许接收帧的序号,称为接收窗口。发送窗口用来对发送方进行流量控制,而发送窗
口的大小代表在还未收到对方确认信息的情况下发送方最多还可以发送多少个数据帧。同理,在
接收端设置接收窗口是为了控制可以接收哪些数据帧和不可以接收哪些帧。在接收方,只有收到
的数据帧的序号落入接收窗口内时,才允许将该数据帧收下。若接收到的数据帧落在接收窗口之
外,则一律将其丢弃。
3、后退N帧协议(GBN)(发送窗口大小>1,接收窗口大小=1)
在后退N 帧式ARQ 中,发送方无须在收到上一个帧的ACK 后才能开始发送下一帧,而是可以连续
发送帧。当接收方检测出失序的信息帧后,要求发送方重发最后一个正确接收的信息帧之后的所
有未被确认的帧;或者当发送方发送了N 个帧后,若发现该N 个帧的前一个帧在计时器超时后仍
未返回其确认信息,则该帧被判为出错或丢失,此时发送方就不得不重传该出错帧及随后的N 个
帧。换句话说,接收方只允许按顺序接收帧。(接收窗口大小=1则按序接收)
后退N 帧协议一方面因连续发送数据帧而提高了信道的利用率,另一方面在重传时又必须把原来
已传送正确的数据帧进行重传(仅因这些数据帧的前面有一个数据帧出了错),这种做法又使传
送效率降低。由此可见,若信道的传输质量很差导致误码率较大时,后退N 帧协议不一定优于停
止-等待协议。
4、选择重传协议(SR)(发送窗口大小>1,接收窗口大小>1)
为进一K步提高信道的利用率,可设法只重传出现差错的数据帧或计时器超时的数据帧,但此时必
须加大接收窗口,以便先收下发送序号不连续但仍处在接收窗口中的那些数据帧。等到所缺序号
的数据帧收到后再一并送交主机。这就是选择重传ARQ 协议。
在选择重传协议中,每个发送缓冲区对应一个计时器,当计时器超时时,缓冲区的帧就会重传。
另外,该协议使用了比上述其他协议更有效的差错处理策略,即一旦接收方怀疑帧出错,就会发
一个否定帧NAK给发送方,要求发送方对NAK中指定的帧进行重传。

可靠传输机制有哪些?

数据链路层的可靠传输通常使用确认和超时重传两种机制来完成。
确认是一种无数据的控制帧,这种控制帧使得接收方可以让发送方知道哪些内容被正确接收。有
些情况下为了提高传输效率,将确认捎带在一个回复帧中,称为捎带确认。超时重传是指发送方
在发送某个数据帧后就开启一个计时器,在一定时间内如果没有得到发送的数据帧的确认帧,那
么就重新发送该数据帧,直到发送成功为止。
自动重传请求(Auto Repeat reQuest, ARQ) 通过接收方请求发送方重传出错的数据帧来恢复出
错的帧,是通信中用于处理信道所带来差错的方法之一。传统自动重传请求分为三种,即停止-
等待(Stop-and-Wait) ARQ 、后退N 帧(Go-Back-N) ARQ 和选择性重传(Selective Repeat)ARQ,后
两种协议是滑动窗口技术与请求重发技术的结合,由于窗口尺寸开到足够大时,帧在线路上可以
连续地流动,因此又称其为连续ARQ 协议。注意,在数据链路层中流量控制机制和可靠传输机制
是交织在一起的。

列举数据链路层的协议

局域网:
CSMA/CD(带冲突检测的载波侦听多路访问协议),发送数据前,先侦听信道是否空闲,若空闲,则立即发送数据,在发送数据时,边发送边继续侦听,若侦听到冲突,则立即停止发送数据,等待一段随机时间,再重新尝试。(先听后发,边发边听,冲
突停发,随机延迟后重发。)
CSMA/CA协议(碰撞避免):发送数据前,先检测信道是否空闲。空闲则发出RTS (request to send),信道忙则等待。接收端收到RTS后,将响应CTS (clear to send)。发送端收到CTS后,开始发送数据帧。接收端收到数据帧后,将用CRC(循环冗余校验码)来检验数据是否正确,正确则响应ACK帧。发送方收到ACK就可以进行下一个数据帧的发送,若没有则一直重传至规定重发次数为止(采用二进制指数退避算法来确定随机的推迟时间)。1) 预约信道:发送方在发送数据的同时通知其他站点直接传输数据需要的时间长度,以便让其他站点在这段时间内不发送数据,从而避免碰撞。2) 所有站点在正确接收到发送给自己的数据帧后,都需要向发送方发回一个ACK数据帧。
CSMA/CD和CSMA/CA的不同点:CD是有线,CA是无线;CD通过电压来检测,CA采用能量检测、载波检测和能量载波混合检测。
广域网:
PPP(点对点协议),面向字节;不需要的功能:纠错(PPP 协议只负责检错)、流量控制(由 TCP
负责)、序号(PPP 协议是不可靠传输协议,故不需要对帧进行编号)、多点线路(PPP 协议是点对点
的通信方式)、半双工或单工(PPP 只支持全双工链路)。

DHCP动态主机配置协议

动态主机配置协议(Dynamic Host Configuration Protocol, DHCP) 常用于给主机动态地分配IP 地
址,它提供了即插即用联网的机制,这种机制允许一台计算机加入新的网络和获取IP 地址而不用
手工参与。DHCP 是应用层协议,它是基于UDP 的。
DHCP 的工作原理如下:使用客户/服务器方式。需要IP 地址的主机在启动时就向DHCP 服务器
广播发送发现报文,这时该主机就成为DHCP 客户。本地网络上所有主机都能收到此广播报文,
但只有DHCP 服务器才回答此广播报文。DHCP 服务器先在其数据库中查找该计算机的配置信
息。若找到,则返回找到的信息。若找不到,则从服务器的IP 地址池中取一个地址分配给该计算
机。DHCP 服务器的回答报文称为提供报文。

ICMP网际控制报文协议

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

  1. 终点不可达。当路由器或主机不能交付数据报时,就向源点发送终点不可达报文。
  2. 源点抑制。当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知
    道应当把数据报的发送速率放慢。
  3. 时间超过。当路由器收到生存时间(TTL) 为零的数据报时,除丢弃该数据报外,还要向源点发送
    时间超过报文。当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到
    的数据报片都丢弃,并向源点发送时间超过报文。
  4. 参数问题。当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃
    该数据报,并向源点发送参数问题报文。
  5. 改变路由(重定向)。路由器把改变路由报文发送给主机,让主机知道下次应将数据报发
    送给另外的路由器(可通过更好的路由)。

交换机和路由器

  1. 工作层次不同,路由器在网络层、交换机在数据链路层
  2. 寻址依据不同,路由器IP寻址,交换机基于MAC寻址
  3. 交换机不划分广播域,路由器可以划分广播域
  4. 转发的数据对象不同,交换机转发的是数据帧,路由器转发的是分组报文

网络各层的设备分别是什么

物理层:集线器,中继器(均不能隔离冲突域和广播域)
数据链路层:交换机(转发/学习机制、存储转发、隔离冲突域不能隔离广播域),网桥
网络层:路由器(隔离冲突域和广播域)

频分复用 时分复用 波分复用 码分复用

频分复用:给每个信号分配唯一的载波频率并通过单一媒体来传输多个独立信号的方法。
时分复用:把多个信号复用到单个硬件传输信道,它允许每个信号在一个很短的时间使用信道,接着再让
下一个信号使用。
波分复用:就是光的频分复用。用一根光纤同时传输多个频率很接近的光载波信号。
码分复用:码分复用是用一组包含互相正交的码字的码组携带多路信号。每一个用户可以在同样的时间使
用同样的频带进行通信。由于各用户使用经过特殊挑选的不同码型,各用户之间不会造成干扰,因此这种
系统发送的信号有很强的抗干扰能力。

传输层的功能

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

  1. 传输层提供应用进程之间的逻辑通信(即端到端的通信)。与网络层的区别是,网络层提供的
    是主机之间的逻辑通信。从网络层来说,通信的双方是两台主机, IP 数据报的首部给出了这两台
    主机的IP 地址。但“两台主机之间的通信”实际上是两台主机中的应用进程之间的通信,应用进程
    之间的通信又称端到端的逻辑通信。
  2. 复用和分用。复用是指发送方不同的应用进程都可使用同一个传输层协议传送数据;分用是指
    接收方的传输层在剥去报文的首部后能够把这些数据正确交付到目的应用进程。
  3. 传输层还要对收到的报文进行差错检测(首部和数据部分)。而网络层只检查IP 数据报的首
    部,不检验数据部分是否出错。
  4. 提供两种不同的传输协议,即面向连接的TCP 和无连接的UDP 。而网络层无法同时实现两种协
    议(即在网络层要么只提供面向连接的服务,如虚电路;要么只提供无连接服务,如数据报,而
    不可能在网络层同时存在这两种方式)

应用层有什么协议

DNS(域名系统),将网址解析成 IP 地址。使得用户在访问网站时不用记住冗长的IP地址,只需记住方便的域名即可。将用户的域名解析成IP地址。是通过UDP发送的。
DHCP(动态主机设置协议),是一个局域网的网络协议,使用 UDP 协议工作,主要有两个用途:给内
部网络或网络服务供应商自动分配 IP 地址,给用户或者内部网络管理员作为对所有计算机作中央管理的
手段

TCP与UDP区别

UDPTCP
是否连接无连接面向连接
是否可靠不可靠传输,尽最大努力交付,不使用流量控制和拥塞控制可靠传输,使用流量控制和拥塞控制
连接对象个数支持一对一,一对多,多对一和多对多交互通信只能是一对一通信
传输方式面向报文面向字节流
首部开销首部开销小,仅8字节首部最小20字节,最大60字节
使用场景适用于实时应用(IP电话、视频会议等)适用于要求可靠传输的应用,例如文件传输
传输单位用户数据报TCP报文段

TCP三次握手和四次挥手

三次握手
在这里插入图片描述
为什么需要三次握手,两次不行吗?
如客户端发出连接请求,但因连接请求报文丢失而未收到确认,于是客户端再重传一次连接请求。后来收到了确认,建立了连接。数据传输完毕后,就释放了连接,客户端共发出了两个连接请求报文段,其中第一个丢失,第二个到达了服务端,但是第一个丢失的报文段只是在某些网络结点长时间滞留了,延误到连接释放以后的某个时间才到达服务端,此时服务端误认为客户端又发出一次新的连接请求,于是就向客户端发出确认报文段,同意建立连接,不采用三次握手,只要服务端发出确认,就建立新的连接了,此时客户端忽略服务端发来的确认,也不发送数据,则服务端一致等待客户端发送数据,浪费资源。

三次握手过程中可以携带数据吗?
其实第三次握手的时候,是可以携带数据的。但是,第一次、第二次握手不可以携带数据
为什么这样呢?大家可以想一个问题,假如第一次握手可以携带数据的话,如果有人要恶意攻击服务器,那他每次都在第一次握手中的 SYN 报文中放入大量的数据。因为攻击者根本就不理服务器的接收、发送能力是否正常,然后疯狂着重复发 SYN 报文的话,这会让服务器花费很多时间、内存空间来接收这些报文。
也就是说,第一次握手不可以放数据,其中一个简单的原因就是会让服务器更加容易受到攻击了。而对于第三次的话,此时客户端已经处于 ESTABLISHED 状态。对于客户端来说,他已经建立起连接了,并且也已经知道服务器的接收、发送能力是正常的了,所以能携带数据也没啥毛病。

四次挥手
在这里插入图片描述
挥手为什么需要四次?
因为当服务端收到客户端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当服务端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉客户端,“你发的FIN报文我收到了”。只有等到我服务端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四次挥手。

四次挥手释放连接时,等待2MSL的意义?
MSL是Maximum Segment Lifetime的英文缩写,可译为“最长报文段寿命”,它是任何报文在网络上存在的最长时间,超过这个时间报文将被丢弃。

  1. 保证客户端发送的最后一个ACK报文段能够到达服务端
    这个ACK报文段有可能丢失,使得处于LAST-ACK状态的B收不到对已发送的FIN+ACK报文段的确认,服务端超时重传FIN+ACK报文段,而客户端能在2MSL时间内收到这个重传的FIN+ACK报文段,接着客户端重传一次确认,重新启动2MSL计时器,最后客户端和服务端都进入到CLOSED状态,若客户端在TIME-WAIT状态不等待一段时间,而是发送完ACK报文段后立即释放连接,则无法收到服务端重传的FIN+ACK报文段,所以不会再发送一次确认报文段,则服务端无法正常进入到CLOSED状态。
  2. 防止“已失效的连接请求报文段”出现在本连接中
    客户端在发送完最后一个ACK报文段后,再经过2MSL,就可以使本连接持续的时间内所产生的所有报文段都从网络中消失,使下一个新的连接中不会出现这种旧的连接请求报文段。

ping的原理

利用网络上机器IP地址的唯一性,给目标地址发送一个数据包,再要求对方返回一个同样大小的数据包来确定两台网络机器是否连接相通以及时延是多少。

ip地址到物理地址的转换

ip地址到物理地址的转换采用ARP(地址解析协议)一个主机要和另一个主机进行之间通信,必须要知道目标主机的MAC地址。这个MAC地址就是通过ARP获得的。所谓地址解析就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。

香农定理和奈氏准则

香农定理给出了信道信息传送速率的上限(比特每秒)和信道信噪比及带宽的关系。(带宽受限,有噪声)
奈氏准则是在理想低通(无噪声,带宽受限)条件下,为了避免码间串扰,极限码元传输速率等于2W Baud,W是信道带宽,单位是Hz。

ARP工作原理

  1. 每个主机都会在自己的ARP缓冲区中建立一个ARP列表,以表示IP地址和MAC地址之间的对应关系。
  2. 当源主机要发送数据时,首先检查ARP列表中是否有对应IP地址的目的主机的MAC地址,如果有,则直接发送数据,如果没有,就向本网段的所有主机发送ARP数据包,该数据包包括的内容有:源主机IP地址,源主机MAC地址,目的主机的IP地址。
  3. 当本网络的所有主机收到该ARP数据包时,首先检查数据包中的IP地址是否是自己的IP地址写入到ARP列表中,如果已经存在,则覆盖,然后将自己的MAC地址写入ARP响应包中,告诉源主机自己是它想要找到的MAC地址。
  4. 源主机收到ARP响应包后,将目的主机的IP和MAC地址写入ARP列表,并利用此信息发送数据。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。
    广播发送ARP请求,单播发送ARP响应。

为什么有了IP地址还需MAC地址

MAC地址是全球唯一的,举个例子,虽然我们可以只通过身份证可以在全国范围找到这个人,但是有了IP地址,我们能确定它在哪个更小范围的地区。所以我们需要利用IP地址来确定这个人的所在区域,在局域网中,可以使用本地的MAC地址进行通信。
到达目标机器的局域网之后,此时需要利用MAC地址来确定目标机器。因为局域网的IP对应的机器是不固定的(IP可以改变,MAC不可以,是固化在网卡中的) ,所以,在局域网中使用IP寻址是不严谨的。

数据结构

算法的基本概念和特性

算法是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或多个操作。
算法的五个特性:有穷性(算法必须能在执行有限个步骤之后终止并且每一个步骤在可接受的时间内完成),确定性(算法中每一条指令必须有确切的含义,不会产生二义性),可行性(算法中的每一个步骤都可以有效的执行并得到确定的结果),输入输出

排序算法

在这里插入图片描述

数据库原理

关系数据库有哪些操作

选择、投影、连接、除法

数据库事务ACID四大属性,事务的概念?

事务一般是指要做的或所做的事情。在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元。
事务是恢复和并发控制的基本单位。
事务应具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。
原子性:一个事物是一个不可分割的工作单位,事务中包括的诸操作要么都做要么都不做。
一致性:事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性使密切相关的。
隔离性:一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
持久性:持久性也称永久性,指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的,接下来的其他操作或故障不应该对其有任何影响。

并发一致性问题

丢失数据: T1和T2两个事务都对一个数据进行修改,T1先修改,T2随后修改,T2的修改覆盖了T1的修改。简记为同时修改
读脏数据: T1对一个数据做了修改,T2读取这个数据。若T1执行ROLLBACK操作,则T2读取的结果和第一次的结果不一样。简记为读取失败的修改。最简单的场景是修改完成后,紧接着查询检验结果。
不可重复读: T2读取一个数据,T1对该数据做了修改。如果T2再次读取这个数据,此时读取的结果和第一次读取的结果不同。简记为读时修改,重复读取的结果不一样。
幻影读: T1读取某个范围的数据,T2在这个范围内插入新的数据,T1再次读取这个范围的数据,此时读取的结果和第一次读取的结果不同。简记为读时插入,重复读取的结果不一样

SpringBoot,Mybatis,vue

Maven的作用

  1. 项目构建:提供标准的,跨平台的自动化构建项目的方式
  2. 依赖管理:方便快捷的管理项目依赖的资源(jar包),避免资源间的版本冲突等问题
  3. 统一开发结构:提供标准的,统一的项目开发结构
    通过配置文件pom.xml下载依赖

控制器

SpringBoot提供了@Controller和@RestController两种注解来标识此类负责接收和处理HTTP请求。
如果请求的是页面和数据,使用@Controller注解即可;如果只是请求数据,则可以使用@RestController注解。

mvc

MyBatis

MyBatis是一款数据持久层ORM框架(ORM通过使用描述对象和数据库之间映射的元数据将程序中的对象自动持久化到关系数据库中),被广泛地应用于应用系统。
MyBatis能够非常灵活地实现动态SQL,可以使用XML或注解来配置和映射原生信息,能够轻松地将Java的POJO(普通的java对象)与数据库中的表和字段进行映射关联。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值