快速复习计算机网络和操作系统

285 阅读3分钟

计算机网络

OSI七层模型

  • 应用层

  • 表现层

  • 会话层

  • 传输层

  • 网络层

  • 数据链路层

  • 物理层

HTTP

超文本传输协议

  • 超文本

  • 传输

  • 协议

HTTP如何优化

  • 减少发送请求

    • 缓存

    • 懒加载

    • 多个资源合并

  • 减少重定向

    • 服务器重定向
  • 压缩

    • 有损压缩

    • 无损压缩

键入网址后发生了什么

  1. 解析URL

  2. DNS解析

  3. TCP三次握手

  4. HTTP请求(可能流水线/长连接等等等等)

  5. 浏览器解析熏染

POST 和 GET

  1. 提交 / 获取 资源

  2. 否/是 安全且幂等

  3. 否/是 可以缓存,作为书签

  4. 2 / 1 次 HTTP请求

  5. 本质上是HTTP的不同方法,区别是人为定义且公认的

TCP / UDP

三次握手

client: closed - - - - -> syn_sent - - - - - - - - - - - -> established

event: - - - - -- - syn - - - - - - - - - - - - - - - ack----------------

event: - - - - - - - - - - - - - - - syn,ack - - - - - -- - - - - --- ---

server: closed -> listening -> syn_recv -> established

四次挥手

client:--ESTABLASHED---FIN_WAIT_1------FIN_WATE_2--------TIME_WATE----CLOSED

event:----------FIN-------------------------ACK----------------------

event:---------------ACK-------------FIN--------------------------

server:ESTABLASHED------CLOSED_WATE-----------LAST_ASK--------CLOSED

UDP与TCP区别

  • 面向数据报,面向流

  • 不可靠,可靠

  • 不需要建立连接,需要建立连接

  • 一对一、一对多,一对一

  • 首部

  • 拥塞控制、流量控制,无

  • 都是基于IP

为什么三次握手

  • 防止历史连接初始化传输(RFC写的)

  • 足够上下文确认自己和对方能发能收

  • 同步双方的序列号

为什么四次挥手

  • server收到FIN时可能还有数据要发

  • 如果没有数据要发,表现出来也可以是三次

为什么四次挥手后等2MSL

  • 确保server能正常关闭,万一最后一个ACK丢失

  • 防止旧的数据包造成RST

  • MSL,报文最大生存时间

SYN攻击

  • 短时间内发送大量SYN,占满半连接队列

  • 丢弃 / cookie作为seq_num

流量控制

  • 防止接受方的接受窗口溢出

  • 通过维护如下实现:

    • 发送窗口

    • 接受窗口

拥塞控制

  • 防止发送方发送的数据报使网络拥塞

  • 有如下四种算法

    • 慢启动

    • 拥塞避免

    • 拥塞发生:超时重传,出现超时事件

    • 快速恢复:快速重传,出现3个冗余ACK事件

IP

IP

  • 主机到主机间的通信

  • MAC作用在实现直连的设备,数据链路层

  • IP作用在没有实现直连的设备,网络层

ping

  • ICMP协议:确认IP包是否成功到达,报告被废弃的原因,改善网络设置

  • ICMP报文(查询/差错):类型,序号,时间

操作系统

线程上下文切换

  • 是否处于同于进程内

    • 否:切换共享资源,如内存,打开的文件,设备等资源
  • CPU上下文等切换

    • 寄存器,PC值

    • 栈,私有变量等

进程,线程

  • 资源分配 / 调度 的基本单位

  • 一个进程内的线程共享全局变量,共享内存,打开的文件设备等资源

  • 线程实现方式:1 : N,1 : 1, M : N

进程间通信方式

  • 匿名管道

  • 有名管道

  • 消息队列

  • 共享内存

  • 信号量

  • 信号

  • Socket

各种算法

进程调度算法

  • FIFO (先来先服务)

  • 最短作业优先

  • 高响应比优先(响应比 = (等待 + 要求) / 要求)

  • RR时间片

  • 最高优先级

  • 多级反馈队列

内存调度算法

  • OPT

  • FIFO

  • LRU

  • LFU

  • 时钟

磁盘调度算法

  • FCFS(先来先服务)

  • 最短巡道时间优先

  • 扫描算法

  • 循环扫描算法(变化在于:只服务一个方向上的请求)

  • LOCK(和扫描算法的变化在于:不用扫描到最边缘,没有即可返回)

  • CLOCK

  • 互斥锁

  • 自旋锁

  • 读写锁

  • 悲观锁

  • 乐观锁

  • 独占锁

  • 共享锁