计算机基础知识复习8.30

TLS握手过程

TLS第一次握手

由客户端向服务端发起加密通信请求,也就是clientHello请求。在这一步,客户端主要向服务器发送以下信息:

(1)客户端支持的TLS协议版本,如TLS1.2版本

(2)客户端生成的随机数(client random),后面用于生成会话密钥条件之一

(3)客户端支持的密码套件列表,如RSA加密算法

TLS第二次握手

服务器收到客户端请求后,向客户端发出响应,也就是serverHello。服务器回应的内容有如下内容

(1)确认TLS协议版本,如果浏览器不支持,则关闭加密通信

(2)服务器生产的随机数(server random),也就是后面用于生产会话密钥条件之一

(3)确认的密码套件列表,如RSA加密算法

(4)服务器的数字证书

TLS第三次握手

客户端收到服务器的回应之后,首先通过浏览器或者操作系统中的CA公钥,确认服务器的数字证书的真实性。

如果证书没有问题,客户端会从数字证书中取出服务器的公钥,然后使用它加密报文,向服务器发送如下信息:

(1)一个随机数,该随机数会被服务器公钥加密

(2)加密通信算法改变通知,表示随后的信息都将用会话密钥加密通信

(3)客户端握手结束通知,表示客户端的握手阶段已经结束,这一项同时把之前所有内容的发生的数据做个摘要,用来供服务端校验

TLS第四次握手

服务端收到客户端的第三个随机数之后,通过协商的加密算法,计算出本次通信的会话密钥,然后,向客户端发送最后的消息:

(1) 加密通信算法改变通知,表示随后的消息都将用会话密钥加密通信

(2) 服务器握手结束通知,表示服务器的握手阶段已经结束。这一项同时把之前所有内容的发生的数据做个摘要,用来供客户端校验

第一次握手丢失了,会发生什么

当客户端想和服务端建立TCP连接的时候,首先第一个发的就是SYN报文,然后进入到SYN_SENT状态,在这之后,如果客户端迟迟收不到服务端的SYN-ACK报文,就会触发超时重传机制,重传SYN报文,而且重传的SYN报文的序列号都是一样的

第二次握手丢失,会发生什么

当服务端收到客户端的第一次握手后,就会回SYN-ACK报文给客户端,这个就是第二次握手,此时服务端会进入SYN-RCVD状态

第二次握手的SYN-ACK报文其实有两个目的:

第二次握手里的ACK,是对第一次握手的确认报文

第二次握手里的SYN,是对服务端发起建立TCP连接的报文

因为第二次握手报文里是包含对客户端的第一次握手的ACK确认报文,所以,如果客户端迟迟没有收到第二次握手,那么客户端就觉得自己的SYN报文第一次握手丢失了,于是客户端会触发超时重传机制,重传SYN报文

第三次握手丢失了,会发生什么

客户端收到服务端的SYN-ACK报文后,就会给服务端回一个ACK报文,也就是第三次握手,此时客户端状态进入到ESTABLISH状态。

因为这个第三次握手的ACK是对第二次握手的SYN的确认报文,所以当第三次握手丢失了,如果服务端那一方迟迟收不到这个确认报文,就会触发超时重传机制,重传SYN-ACK报文,直到收到第三次握手,或者达到最大重传次数

缺页中断

当CPU访问的页面不在物理内存时,便会产生一个缺页中断,请求操作系统将所缺页调入到物理内存。那她与一般中断的主要区别在于:

缺页中断在指令执行期间产生和处理中断信息,而一般中断在一条指令执行完成后检查和处理中断信号。

缺页中断返回到该指令的开始重新执行该指令,而一般中断返回到该指令的下一指令执行

1.在CPU里访问一条Load M指令,然后CPU会去找M所对应的页表项

2.如果该页表项的状态位是有效的,那么CPU就可以直接去访问物理内存了,如果状态位是无效的,则CPU会发送缺页中断请求

3.操作系统收到了缺页中断,则会执行缺页中断处理函数,先会查找该页面在磁盘中的页面的位置。

4.找到磁盘中对应的页面后,需要把该页面换入到物理内存中,但是在换入前,需要在物理内存中找空闲页,如果找到空闲页,就把页面换入到物理内存中

5.页面从磁盘换入到物理内存完成后,则把页表项中的状态位修改为有效的

6.最后,CPU重新执行导致缺页异常指令

内存页面置换算法

FIFO置换算法:选择在内存驻留时间很长的页面进行中置换

LRU置换算法:通过历史的使用情况来推测要淘汰的页面

LFU置换算法:当发生缺页中断时,选择访问次数最少的那个页面,并将其淘汰

进程调度算法

先来先服务调度算法

每次从就绪队列中选择最先进入队列的进程,然后一直运行,直到进程退出或被阻塞,才会继续从队列中选择第一个进程接着运行

最短作业优先调度算法

优先选择运行时间最短的进程来运行,缺点是长作业迟迟不能被运行

高响应比优先调度算法

每次进行进程调度时,先计算响应比优先级,然后把响应比优先级最高的进程投入运行。

时间片轮转调度算法

每个进程被分配一个时间段,称为时间片轮转,即允许该进程在该时间段中运行

最高优先级调度算法

希望调度程序能够从就绪队列中选择最高优先级的进程进行运行

多级反馈队列调度算法

设置多个队列,赋予每个队列不同优先级,每个队列优先级从高到低,同时优先级越高时间片越短

新的进程会被放入到第一级队列的末尾,按照先来先服务的原则排队等待被调度,如果在第一级队列规定的时间片没运行完成,则将其转入到第二级队列的末尾,以此类推,直至完成

当较高优先级的队列为空,才调度较低优先级的队列中的进程运行。如果进程运行时,有新进程进入较高优先级的队列,则停止当前运行的进程并将其移入到原队列末尾,接着让较高优先级的进程运行。

进程间的通信方式

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

消息队列:是保存在内核中的消息链表,在发送数据时,会分成一个一个独立的数据单元,也就是消息体,消息体是用户自定义的数据类型,消息的发送方和接收方要约定好消息体的数据类型,所以每个消息体都是固定大小的存储块,不像管道是无格式的字节流数据。如果进程从消息队列中读取了消息体,内核就会把这个消息体删除

共享内存:拿出一块虚拟地址空间来,映射到相同的物理内存中,A进程写入的东西,B进程马上可以看到

信号量:实现进程间的互斥与同步,而不是用于缓存进程间通信的数据

socket:要实现跨网络与不同主机上的进程之间通信,就需要socket通信

参考资料

小林coding

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值