网络&操作系统知识大纲

网络相关

1、HTTP VS HTTPS

https+非对称加密(证书校验)+对称加密(通信过程)

非对称加密算法涉及到需要向ca认证机构(证书签发机构,类似官方权威)申请证书

https://blog.csdn.net/a407479/article/details/80634789

HTTP 明文传输,数据都是未加密的,安全性较差,HTTPS(SSL+HTTP) 数据传输过程是加密的,安全性较好。

使用 HTTPS 协议需要到 CA(Certificate Authority,数字证书认证机构) 申请证书,一般免费证书较少,因而需要一定费用。证书颁发机构如:Symantec、Comodo、GoDaddy 和 GlobalSign 等。

HTTP 页面响应速度比 HTTPS 快,主要是因为 HTTP 使用 TCP 三次握手建立连接,客户端和服务器需要交换 3 个包,而 HTTPS除了 TCP 的三个包,还要加上 ssl 握手需要的 9 个包,所以一共是 12 个包。

http 和 https 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443。

HTTPS 其实就是建构在 SSL/TLS 之上的 HTTP 协议,所以,要比较 HTTPS 比 HTTP 要更耗费服务器资源。

HTTP详解:http://www.ruanyifeng.com/blog/2016/08/http.html

对称加密、非对称加密:www.html.cn/qa/other/20015.html


2、404排查原因

3、TCP 为什么要有 TIME_WAIT 状态?

https://draveness.me/whys-the-design-tcp-time-wait/#fn:3

 TIME_WAIT 仅在主动断开连接的一方出现,被动断开连接的一方会直接进入 CLOSED 状态,进入 TIME_WAIT 的客户端需要等待 2 MSL 才可以真正关闭连接。

TCP 协议需要 TIME_WAIT 状态的原因和客户端需要等待两个 MSL 不能直接进入 CLOSED 状态的原因是一样的:

防止延迟的数据段被其他使用相同源地址、源端口、目的地址以及目的端口的 TCP 连接收到;

保证 TCP 连接的远程被正确关闭,即等待被动关闭连接的一方收到 FIN 对应的 ACK 消息;


4、HTTP版本迭代

【HTTP0.9】

仅仅能支持get方法,并且只能请求和响应HTML格式的资源

【HTTP1.0】

开始包含头信息并且增加POST和HEAD请求方法

同时增加了响应体的内容格式:

text/html

text/json

image/png

image/jpeg

【HTTP1.1】

①:引入长连接机制

②:管道机制实现同时发送多个HTTP请求

③:Content-length 与分块传输

④:文件断点续传

【HTTP2.0】

1)双工模式:不仅仅客户端可以发生多个HTTP请求,服务端也可以同时响应多个HTTP请求

2)基于IO复用技术,一个线程可以处理多个HTTP请求,避免队头堵塞的现象。同时HTTP多个请求 可能包含大量的HTTP请求头字段重复。HTTP2.0采取字段表形式,传输不再传输完整字段,可以仅仅传输相应的字段索引。

3)二进制协议:HTTP1.1其请求行、请求头为文本格式,而请求体可以不同的格式,而HTTP2.0头信息和体信息均为二进制格式,即所谓的头信息帧和数据帧。


5、TCP UDP差异


6、TCP3次握手

7、TCP拥塞控制

https://blog.csdn.net/qq_41431406/article/details/97926927

在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络性能就要变坏,这种情况就叫做网络拥塞。若出现拥塞而不进行控制,整个网络的吞吐量将随输入负荷的增大而下降。

TCP的四种拥塞控制算法

1)慢开始  2)拥塞避免  3)快重传  4)快恢复


操作系统相关:

1、阻塞vs非阻塞


2、生产者消费者模型

https://blog.csdn.net/u010983881/article/details/78554671


3、进程线程区别联系,多线程、多进程

https://www.jianshu.com/p/a4fa4edbeb8a

进程是表示资源分配(具体是什么资源?)的基本单位,又是调度运行的基本单位。

线程是进程中执行运算的最小单位,亦即执行处理机调度的基本单位。(CPU调度)

多进程、多线程:https://www.cnblogs.com/linuxAndMcu/p/11064916.html

协程:https://www.jianshu.com/p/6dde7f92951e

协程(Coroutines)是一种比线程更加轻量级的存在,正如一个进程可以拥有多个线程一样,一个线程可以拥有多个协程。

协程不是被操作系统内核所管理的,而是完全由程序所控制,也就是在用户态执行。这样带来的好处是性能大幅度的提升,因为不会像线程切换那样消耗资源。


4、select、poll、epoll

https://www.zhihu.com/question/59975081

从IO层面来看,epoll绝对是同步的;

从消息处理层面来看,epoll是异步的.

五种IO模型:

IO多路复用  ——对应Reactor模式,Linux下常用(redis)

阻塞IO

非阻塞IO

异步IO  ——对应Proactor,Windows下常用(IOCP)

基于信号驱动 的 I/O


5、进程间通信

https://www.cnblogs.com/LUO77/p/5816326.html

1)管道pipe:管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。

2)命名管道FIFO:有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。

4)消息队列MessageQueue:消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。

5)共享存储SharedMemory:共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号两,配合使用,来实现进程间的同步和通信。

6)信号量Semaphore:信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。

7)套接字Socket:套解口也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同及其间的进程通信。

8)信号 ( sinal ) : 信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。


6、Page cache 

https://www.cnblogs.com/ronnieyuan/p/12377059.html


7、CPU空闲但系统负载高的问题定位

案例:https://blog.csdn.net/dtlscsl/article/details/81563491

详解:https://www.cnblogs.com/weifeng1463/p/9007369.html


8、CPU缓存一致性协议MESI

https://www.cnblogs.com/yanlong300/p/8986041.html

https://www.cnblogs.com/xiaolincoding/p/13886559.html


9、free命令详解

-m:以MB单位展示

-k:KB

-b:B

-h:友好方式展示

详解:https://www.cnblogs.com/ultranms/p/9254160.html


10、Linux进程管理常用命令详解

https://www.cnblogs.com/jiangzhaowei/p/8971265.html

ctrl+c强行中断当前程序的执行。

ctrl+z将任务中断,但是此任务并没有结束,他仍然在进程中,只是放到后台并维持挂起的状态。如需其在后台继续运行,需用“bg 进程号”使其继续运行;再用"fg 进程号"可将后台进程前台化。

ctrl+\表示退出。

ctrl+d表示结束当前输入(即用户不再给当前程序发出指令),那么Linux通常将结束当前程序。


11、Linux信号详解

信号详解

kill -9 、kill -15 差异

你可能感兴趣的:(网络&操作系统知识大纲)