网络模型
五层网络模型:应用层、传输层、网络层、数据链路层、物理层
七层网络模型:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层
TCP流量控制&拥塞控制
流量控制作用于接收者,通过滑动窗口协议实现,接收者的ack中携带接收窗口大小,以此控制发送方的数据发送。
拥塞控制作用于网络,防止过多数据注入网络中,出现网络负载过大的情况。常用方法:
(1)慢开始,拥塞避免
(2)快重传,快恢复
TCP可靠性如何保证?
1.三握四挥
2.校验和,存储头部和数据的校验和。
3.流量控制
4.拥塞控制
5.ARQ协议,发送完一个分组就停止,收到回复时发送下一个分组。
6.超时重传
输入一个url请求过程
url -> dns缓存 -> dns服务器 ->tcp三次握手建立连接 -> 发送http请求 -> 经过7层网络模型包装数据 ->接受服务器响应html ->前端渲染
HTTP协议组成
1.起始行
2.请求头/响应头
3.消息正文
SSL
参考:SSL/TLS协议运行机制的概述 - 阮一峰的网络日志
虚拟内存和物理内存
屏蔽细节,对上层提供统一访问机制。操作系统将不同进程的虚拟地址和不同内存的物理地址映射起来。虚拟地址通过CPU的MMU内存管理单元转换成物理地址。
页是最小的内存单元,Linux下默认4KB,虚拟地址和物理地址通过页表进行映射。
采用分页的优点是解决了分段的内存碎片,在内存空间不足的情况下可以根据LRU缓存淘汰算法对页进行换入换出。(详细参考小林coding)
内核态用户态
用户态切换到内核态哥途径:
1.系统调用。用户态主动要求切换到内核态。比如Linux创建进程时用户态的fork()会调用到内核态。
2.中断。外设完成用户请求后,发出中断信号,CPU停止执行下一条指令,处理中断程序。
3.异常。缺页异常。
进程的状态
1.创建状态 new。正在被创建,尚未到就绪状态。
2.就绪状态 ready。进程获得了除处理器以外的一切资源,等带处理器分配的时间片运行。
3.运行状态 running。进程正在处理器上运行。
4.阻塞状态 waiting。等待资源可用或IO操作完成。
5.结束状态 terminated。进程正从系统中消失,正常结束或者是被其他原因中断退出。
进程通信方式
1.管道
有名管道和匿名管道
2.信号
3.消息队列
4.信号量