面经:计网、OS

OS

  • 同步、异步
    1、同步:需要线程之间协同操作,才能完成一件事。于是就会有 “阻塞” 状态
    2、异步:线程之间不需要互相等待,将事情丢进去,处理完给个结果就行

  • 进程、线程
    1、进程:资源分配、调度的最小单位,线程CPU时间片分配的最小单位
    2、操作系统有上下文的概念,进程切换的代价要比线程高得多

  • 进程状态
    就绪 运行 阻塞

  • 进程通信方式
    1、共享内存 - 最快
    2、信号量 - 实现进程的互斥与同步,传数据不行
    3、管道 - 一端读、一端写,只能用在父子、兄弟进程
    4、消息队列 -- 消息链表

  • 进程调度算法
    1、先进先服务
    2、时间片轮转(先来先服务)
    3、短作业优先
    4、优先级抢占调度
    5、高响应比(先来先服务 和 短作业 一种平衡)
    考虑作业等待时间 + 估计运行时间
    (作业处理时间+作业等待时间)/作业处理时间

  • 避免死锁
    银行家算法睡推算出一个安全序列,保证当前资源能满足即将运行的进程,而后其释放的资源能满足剩下进程运行的条件。

  • 分页、分段


计算机网络

我们常说的OSI七层,实际在TCP/IP协议的推动下,只有五层:分别是物理层、链路层、IP层、传输层 和 应用层

  • 应用层主要定义应用程序之间通信和交互的规则,这一层有很多协议:域名解析DNS、浏览器依赖的HTTPs、邮件SMTP,还有传文件FTP,数据单元我们一般成为报文。

  • TCP主要任务:负责两台主机之间数据传输服务。主要就是TCP、UDP协议

  • 网络层主要任务:选择合适的路由和交换节点,将数据及时送达

  • 数据链路: 将IP报文组装成帧,在一台一台交换机上传送

  • 物理层:传送比特流,01的状态能够屏蔽设备之间的差异


  • 应用层有哪些协议?
    1、浏览器:HTTP、FTP
    2、邮箱:SMTP发、POP收
    3、开发工具:Telnet

  • 网络层协议:ARP地址转换协议,RIP、OSPF是路由协议

  • 链路层协议:PPP点对点协议、CSMA/CD

  • ARP工作原理?
    作用:完成IP 和 物理地址的映射。
    1、看看自己缓存有没有与目标IP与之对应的Mac地址
    2、没有就广播,将目标IP、自己的信息广播出去


  • 常用端口号:
    浏览器传文件FTP:20、21
    远程登录 SSH:22 Telnet:23
    SMTP:25(发邮件)
    DNS:53
    HTTP:80
    (这些端口都是服务器要打开的,而不是客户端)

  • HTTPS 引入SSL/TLS协议,完成加密通信。
    使用不对称加密算法完成 对称加密 秘钥的分发
    使用对称加密,完成两者通信。
    but 但黑客将自己伪装成“服务器”,劫持真服务器发来的公钥,用自己一套的加密公钥发给Client,这样客户端发的秘钥就被知道了。
    于是;引入第三方认证机构CA。
    服务器不再传自己公钥,我传证书(由CA私钥加密颁发的证书),客户端用CA公钥解密,完成服务器公钥的传送。

黑客没办法劫持的根本在于:他没有CA的私钥,如果他不用CA的私钥加密服务器公钥,那么客户端使用的公钥就解不开他发来的“假包”。


  • 三次握手

三次握手的目的是建立可靠的通信信道,说到通讯,简单来说就是数据的发送与接收,而三次握手最主要的目的就是双方确认自己与对方的发送与接收是正常的。
第一次握手:Client 什么都不能确认;Server 确认了对方发送正常,自己接收正常
第二次握手:Client 确认了:自己发送、接收正常,对方发送、接收正常;Server 确认了:对方发送正常,自己接收正常
第三次握手:Client 确认了:自己发送、接收正常,对方发送、接收正常;Server 确认了:自己发送、接收正常,对方发送、接收正常
所以三次握手就能确认双方收发功能都正常,缺一不可

总结: 我们以SYN、ACK为例吧,SYN由客户端发给服务器,请求同步,第二次握手时,服务器发给客户端SYN、ACK表示:你发我收是可以的,那么“我发你收”可以吗?于是又来了一个SYN想问一下,SYN传过去后,表示“我发你收”可以做到。于是双方就能通信,甚至说可以在第三次握手的时候就将部分想要的信息带过去。

  • 四次挥手

1、客户端向服务器发送链接释放报文,并停止发送数据
2、服务器收到到,立马确认,然后准备进入关闭等待
3、等没有数据可发,发送链接释放报文
4、客户端收到后,发一个确认报文,服务器收到后就可以关TCP链接,客户端还得等等
2MSL(max segement lifetime) 就能保证B肯定收到A的确认报文,同时网络中所有这段链接时间的报文全部消失

  • TCP如何保证可靠传输的?
    1、接收端:会进行数据校验,出现错误就会丢弃,等待发送端超时重发
    2、接收端:应答机制,收到一批报文后,会发送确认
    3、发送端:超时重发,如果收不到应答,发送端继续重发
    4、发送端:还可以流量控制、拥塞避让

拥塞避让:慢开始、拥塞避免、快重传、快恢复

  • 滑动窗口
    滑动窗口是为了避免网络堵塞情况,发送方会在接收方发过来的报文中,提取到接收方还有多大的缓冲区可以用于接收数据,这样就避免发送方无脑的将数据包注入网络导致网络情况恶化。

它不同于ARQ机制:
停等ARQ:传一个等一个确认
连续ARQ:发送窗口里面都可以发,发完等待确认,可能只确认一部分,那么就需要Go-back N 回传对方没接收到的报文


  • 浏览器输入url发生了什么?
    0、浏览器需要解析URL,生成请求报文
    1、DNS解析,拿到目标服务器的IP地址
    2、TCP,三次握手建立可靠链接
    3、前端就可以发送HTTP请求
    4、后端服务器返回请求报文
    5、浏览器渲染页面
    6、结束链接

展开来讲:
探究!一个数据包在网络中的心路历程

HTTP生成报文,会根据这个url,分为web服务器 + 文件名

DNS的主要请求步骤有
1、先向本地域名服务器请求解析,如果没有,请求它帮忙解析,这样也有利于缓存
2、本地域名去请求根域名,顶级域名,再请求二级域名,最后拿到IP,将其缓存下来,然后返回给客户端

TCP三次握手后,保证双方都有发送和接受的能力

后端肯定要知道响应代码:
1xx:还在处理
2xx:正常接受 200 正常
3xx: 重定向
4xx: 客户端有错误 400 请求有问题,403请求非法 404请求没有资源
5xx:服务器有错 500 后端出bug,503网关有问题

  • Session 与Cookie
    两者都是为了跟踪浏览器状态的。
    Cookie存在浏览器,Session存在服务器
    Cookie因为是用户在用,所以可以保存用户信息:1、自动填表 2、保持登录 3、登录一个网站,访问该网站下的子页面就不需要重复登录
    Session:主要是保存用户在服务器上的操作
posted @ 2022-07-15 21:30  spongie  阅读(58)  评论(0编辑  收藏  举报