计算机网络 和 操作系统

1. 计算机网络

1.1 TCP建立连接的三次握手、四次挥手

  • 三次握手(假设A为客户端,B为服务器)
    • B处于Listen监听状态,登台客户的连接请求
    • A向B发送连接请求报文,SYN = 1,ACK = 0,选择一个初始的序号seq = x,A进入SYNt-SENT状态
    • B收到连接请求报文,如果同意连接,则想A发送连接确认报文,SYN = 1,ACK = 1,确认号为ack = x+1,选择一个初始的序号seq = y,B进入SYN-RCVD状态
    • A收到B的连接确认报文之后,检查ack是否为x+1,此时操作系统为该TCP连接分配TCP缓存和变量,还要向B发出确认,确认号为ack = y+1,序号为seq = x+1
    • B收到A的确认后,连接建立,A和B均进入ESTABLISHED状态
    • 三次握手原因
      • 第三次握手是为了方式失效的连接请求到达服务器,让服务器错误打开连接
      • 客户端发送的连接请求如果在网络中滞留,那么就会隔很长一段时间才能收到服务器端发挥的连接确认。客户端等待一个超时重传时间之后,就会重新请求链接。但是这个滞留的连接请求最后还是会到达服务器,如果不进行三次握手,那么服务器就会打开两个连接。如果有第三次握手,客户端会忽略服务器之后发送的对滞留连接请求的连接确认,不进行第三次握手,因此就不会再次打开连接。
  • 四次挥手
    计算机网络 和 操作系统_第1张图片
    • A发送连接释放报文,FIN = 1
    • B收到之后发出确认,此时TCP属于半关闭状态,B能向A发送数据但是A不能向B发送数据
    • 当B不再需要连接时,发送连接释放报文,FIN = 1
    • A收到后发出确认,进入TIME-WAIT状态,登台2MSL(最大报文存活时间)后释放连接
    • B收到A的确认后释放连接
    • 四次挥手原因:
      • 客户端发送了FIN连接释放报文之后,服务器收到了这个报文,就进入了CLOSE-WAIT状态。这个状态是为了让服务端发送还未传送完毕的数据,传送完毕之后,服务器会发送FIN连接释放报文
      • 客户端接收到服务器端的FIN报文后进入TIME-WAIT状态,此时并没有直接进入CLOSED状态,还要等待2MSL的时间,理由如下
        • 确保最后一个确认报文能够到达,如果B没收到A发送来的确认报文,那么就会重新发送连接释放请求报文,A等待一段时间就是为了处理这种情况的发生
        • 等待一段时间是为了让本连接持续时间内所产生的所有报文都从网络中消失,使得下一个新的连接不会出现旧的连接请求报文

1.2 TCP和UDP

  • TCP
    • 用户传输协议
    • 提供面向连接、可靠的数据传输服务,单位为报文段
    • 主要提供完整性服务
  • UDP
    • 用户数据报协议
    • 提供无连接、尽最大努力交付的数据传输服务,单位为用户数据报
    • 主要提供及时性服务

1.3 Web页面请求过程

  • DHCP配置主机信息
  • ARP解析MAC地址
  • DNS解析域名
  • HTTP请求页面
    • 有了HTTP服务器的IP地址之后,主机就能够生成TCP套接字,该套接字将用于向Web服务器发送HTTP GET报文
    • 生成TCP套接字之前,必须先于服务器建立TCP连接,具体过程见三次握手
    • 连接建立后,浏览器生成HTTP GET报文,交付给HTTP服务器
    • 服务器处理请求并返回HTTP报文
    • 浏览器解析渲染页面
    • 连接结束

1.4 http状态码

计算机网络 和 操作系统_第2张图片

  • 1XX 信息
    • 100:到目前位置都很正常,可继续发送请求或者忽略这个响应
  • 2XX 成功
    • 200:OK
    • 204:请求成功处理,但是返回的响应报文不包含实体的主题部分。一般在只需要从客户端往服务器发送信息,而不需要返回数据时使用
    • 206:表示客户端进行了范围请求
  • 3XX 重定向
    • 301:永久性重定向
    • 302:临时性重定向 303 GET
    • 304:Not Modified
  • 4XX 客户端错误
    • 400:Bad Request,请求报文中存在语法错误
    • 401:Unauthorized,表示发送的请求中需要有认证信息
    • 403:Forbidden,请求被拒绝
    • 404:Not Found
  • 5XX 服务器错误
    • 500:Internal Server Error,服务器正在执行请求时发生错误
    • 503:Service Unavailable,服务器暂时处于超负载或正在进行停机维护, 无法处理请求

1.5 OSI七层模型、TCP/IP网络模型

  • 五层协议
    • 应用层:为特定的应用程序提供数据传输服务,HTTP、DNS等协议。单位为报文
    • 传输层:为进程提供通用数据传输服务。由于应用层协议很多,定义通用的传输层协议就可以支持不断增多的应用层协议。运输层协议包括两种:传输控制协议和用户数据报协议,单位分别是报文段用户数据报
    • 网络层:为主机提供数据传输服务。传输层的协议是为主机中的进程提供数据传输服务,网络层吧传输层传递下来的报文段或者用户数据报封装成分组
    • 数据链路层:网络层针对的是主机之间的数据传输服务,而主机之间可以有很多链路,链路层协议就是为同意链路的主机提供数据传输服务。数据链路层把网络传下来的分组封装成
    • 物理层:考虑在传输媒体上传输数据比特流,而不是指具体的传输媒体。物理层的作用是尽可能屏蔽传输媒体和通信手段的差异,使得链路层感觉不到这些差异。
  • OSI七层模型
    • 应用层
    • 表示层:数据压缩、加密以及数据描述,这使得应用程序不必关心在各台主机中数据内部格式不同的问题。
    • 会话层:建立及管理会话。
    • 传输层
    • 网络层
    • 数据链路层
    • 物理层
  • TCP/IP网络模型
    • TCP/IP模型是一系列网络协议的总称,这些协议的目的是使得计算机之间可以进行信息交换。
    • 四层架构
      • 应用层
      • 传输曾
      • 网络层
      • 链路层
    • 相当于五层协议中数据链路层和物理层合并为网络接口层。
    • TCP/IP体系结构不严格遵循OSI分层概念,应用层可能会直接使用IP层或者网络接口层。

1.6 http思维导图

计算机网络 和 操作系统_第3张图片

2. 操作系统

2.1 进程和线程

  • 进程
    • 是并发执行的程序在执行过程中分配和管理资源的基本单位,是一个动态概念,竞争计算机系统资源的基本单位。
  • 线程
    • 是进程的一部分,一个没有线程的进程可以看作是单线程的。线程又被称为轻权进程或者轻量级进程,是CPU调度的一个基本单位。
    • 一个程序至少有一个进程,一个进程至少有一个线程。资源分配给进程,同一个进程下所有线程共享该进程的资源。

2.2 进程之间的通信方式

  • 无名管道:半双工,数据只能单向流动且只能在具有亲缘关系的进程间使用。
  • 高级管道:将另一个程序当作一个新的进程在当前程序进程中启动,则这个进程算是当前进程的子进程。
  • 有名管道:半双工:允许没有亲缘进程之间的通信。
  • 消息队列:有消息的链表,存放在内核中,并由消息队列标识符标识。解决了信号传递量少、管道只能承载无格式字节流以及缓冲区大小受限的缺点。
  • 信号量:是一个计数器,用来控制多个进程对共享资源的访问,它常作为一种锁机制。方式某进程正在访问共享资源时,其他进程也访问该资源。
  • 信号:用于通知接收进程某个事件已经发生。
  • 共享内存:就是映射一段能被其他进程所访问的内存。这段共享内存由一个进程创建,但是多个进程可以访问,共享内存是最快的IPC方式,往往与其他通信机制配合使用。
  • 套接字:可用于不同机器之间的进程通信。

2.3 线程的哪些资源共享,那些资源不共享

  • 共享资源
    • 堆:由于堆实在进程空间中开辟出来的
    • 全局变量:与具体某一函数是无关的
    • 静态变量:其存放位置和全局变量一样,存于堆中开辟的.bss和.data段,是共享的
    • 文件等公有资源:使用这些公共资源的线程必须同步
  • 独享资源
    • 寄存器:线程中放的是副本

你可能感兴趣的:(面试总结,网络)