跳转至

计算机网络

cookie、session 和 token 的区别

Cookie 是存储在客户端的小型文本文件,用于跟踪和识别用户。 Session 是服务器端用来存储用户信息的机制。服务器能够通过 SessionID 来识别用户。 Token,也称作令牌,是一种服务端无状态的认证方式,适合于 REST API 的场景。Token 由用户唯一标识、时间戳和签名组成。

死锁是什么?如何避免死锁?

概念:死锁是指在一组进程中,每个进程都在等待其他进程释放资源,而这些资源又被这组进程中的其他进程占有,导致所有进程都无法向前推进的状态。 避免:产生死锁的四个必要条件是:互斥条件、持有并等待条件、不可剥夺条件、环路等待条件。破环其中一个条件就可以。

TCP 拥塞控制流量控制

  1. 流量控制(Flow Control)

目的:解决发送方与接收方速率不匹配的问题,防止接收方缓冲区溢出。 核心机制

  • 滑动窗口协议:接收方通过TCP头部的Window Size字段告知发送方当前可接收的数据量(即接收窗口rwnd)。
  • 动态调整:发送方根据rwnd实时调整发送速率,确保发送数据不超过接收方的处理能力。 关键场景:例如视频播放器缓冲不足时,会通过缩小窗口通知服务器降低发送速率,避免卡顿。

  • 拥塞控制(Congestion Control)

在某段时间内,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要变化,这种就叫拥塞拥塞控制就是防止过多的数据注入到网络中,这样可以使网络中的路由器或者链路不至于过载,前提是网络能够承受现有的网络负荷。

但流量控制往往是指点对点通信量的控制,是一个端到端的问题,流量控制所要做的就是抑制发送端发送数据的速率(通过调整接收窗口的大小,以便接收端来得及接收)

目的:解决网络拥堵问题,防止过多数据涌入导致路由器丢包或网络瘫痪。 核心机制(经典四阶段)

  • 慢启动(Slow Start):初始窗口指数增长(1→2→4→8...),直到达到阈值(ssthresh)或出现丢包。
  • 拥塞避免(Congestion Avoidance):窗口线性增长(每RTT增加1),逐步逼近网络容量上限。
  • 规定:
  • 为了防止拥塞窗口cwnd增长过大引起网络拥塞,还需要设置一个慢开始门限ssthresh状态变量
  • 拥塞窗口指数级上升的时候,执行的是慢开始算法
  • 拥塞窗口增加按线性规律增长的时候,执行拥塞避免算法
  • cwnd < ssthresh ,使用慢开始
  • cwnd > ssthresh , 使用拥塞避免
  • cwnd = ssthresh, 都可以
  • 快重传(Fast Retransmit):收到3个重复ACK时立即重传丢失报文,无需等待超时。采用快重传算法可以让发送方尽早知道发生了个别报文段的丢失
  • 快恢复(Fast Recovery):重传后窗口减半,直接进入拥塞避免阶段(而非重启慢启动)。
  • 拥塞避免阶段,拥塞窗口是按照线性规律增大,这就是加法增大AI,而一旦出现超时或3个重复确认,就要把ssthresh设定为当前拥塞窗口的一半,并大大减少拥塞窗口的数值(拥塞窗口也减小一半)。这叫乘法减小MD,合在一起就是所谓的AIMD算法
  • 当cwnd = 1的时候,是超时检测丢失报文段;当cwnd = ssthresh 的时候,是3个重复确认

http断点重传是什么?

HTTP 断点续传(断点重传)是指在下载大文件时,如果网络中断或暂停下载,下次可以从已经下载的位置继续下载,而不需要从头开始重新下载。

核心原理: - 通过 Range 请求头指定从哪个字节开始下载 - 服务器通过 Content-Range 响应头告知返回的是部分内容 - 状态码为 206 Partial Content 表示部分内容成功返回

优势:节省带宽、减少下载时间、支持断点续传,特别适合大文件下载。

http和https的区别

对比维度 HTTP HTTPS
端口 默认 80 默认 443
安全性 明文传输,容易被窃听和篡改 基于 SSL/TLS 加密传输,更加安全
证书 需要不证书,或可以免费申请 需要申请 CA 证书,有免费也有收费
速度 更快,无需加密解密 较慢,增加了 TLS 握手过程
SEO 不友好 搜索引擎更偏好

总结:HTTPS = HTTP + SSL/TLS,是加密的 HTTP。

介绍一下http头部字段和http2

常见 HTTP 头部字段

通用头: - Cache-Control:控制缓存行为,如 no-cachemax-age - Connection:连接管理,keep-alive 保持连接 - Date:发送消息的日期时间

请求头: - Host:指定服务器域名和端口 - User-Agent:客户端浏览器信息 - Accept:客户端能接受哪些 MIME 类型 - Authorization:认证信息,如 Bearer token - Cookie:发送 cookie 到服务器 - Range:断点续传,指定请求范围

响应头: - Server:服务器软件信息 - Set-Cookie:设置 cookie 到客户端 - Content-Type:响应体的媒体类型 - Content-Length:响应体长度 - Location:重定向地址 - ETag:资源标识,用于缓存验证


HTTP/2 新特性: 1. 二进制分帧:将数据分割为更小的帧,采用二进制编码,相比 HTTP/1.x 的文本解析更高效 2. 多路复用:同一个 TCP 连接上可以同时发送多个请求和响应,对头阻塞问题 3. 头部压缩:使用 HPACK 算法压缩头部,减少冗余头部的大小 4. 服务器推送:服务器可以主动向客户端推送资源,无需客户端请求 5. HTTPS 强制:HTTP/2 通常要求基于 TLS 部署,安全性更高

对比 HTTP/1.1:性能提升明显,特别是在多请求场景下。

http请求格式大致是哪些

HTTP 请求由四个部分组成:

1. 请求行(Request Line)

<方法> <URL> <HTTP版本>
GET /index.html HTTP/1.1
常见方法:GET、POST、PUT、DELETE、HEAD、OPTIONS、PATCH 等

2. 请求头部(Request Headers) 每行一个键值对,用冒号分隔:

Host: www.example.com
User-Agent: Mozilla/5.0
Accept: text/html,application/json
Content-Type: application/json
Content-Length: 123

3. 空行 必须有一个空行分隔头部和请求体

4. 请求体(Request Body) - GET 方法通常没有请求体 - POST 方法会把数据放在请求体中发送给服务器

完整示例

POST /api/login HTTP/1.1
Host: api.example.com
Content-Type: application/json
Content-Length: 48

{"username":"admin","password":"123456"}

HTTPS的过程

HTTPS 通信过程分为 TCP 三次握手TLS 握手应用数据传输

TLS 握手过程(简化版)

  1. Client Hello:客户端发送支持的 TLS 版本、加密套件、随机数 Client Random 给服务器
  2. Server Hello:服务器选择双方都支持的 TLS 版本和加密套件,返回自己的证书、随机数 Server Random
  3. 密钥交换
  4. 客户端验证服务器证书合法性
  5. 客户端生成预主密钥(Pre-Master Secret),用服务器公钥加密后发送
  6. 双方根据三个随机数(Client Random + Server Random + Pre-Master Secret)生成会话密钥
  7. Finished:双方发送加密后的握手结束消息,验证握手成功
  8. 开始加密通信:之后所有应用数据都使用会话密钥加密传输

核心:非对称加密用来交换会话密钥,对称加密用来加密实际传输的数据,兼顾安全性和性能。

多路复用解释一下

多路复用是指在同一个 TCP 连接中,同时传输多个 HTTP 请求和响应,而不需要建立多个 TCP 连接。

HTTP/1.1 的问题: - 虽然有 Connection: keep-alive 复用 TCP 连接,但同一连接同一时间只能处理一个请求 - 必须等一个请求响应完成才能发下一个请求,这就是队头阻塞问题 - 浏览器为了并发只能建立多个 TCP 连接(通常 6-8 个),但会增加 TCP 握手开销

HTTP/2 的多路复用如何工作: - 将每个请求/响应分割成多个独立的二进制帧 - 不同请求的帧可以交错发送在同一个 TCP 连接上 - 接收端根据帧头部的流标识符重新组装成完整的请求/响应 - 真正实现了一个 TCP 连接上并行处理多个请求,消除了队头阻塞

优势: - 减少 TCP 连接数量,降低握手开销和服务器负载 - 减少 TCP 慢启动对性能的影响 - 并发请求更快,页面加载性能提升

※※※OSI七层、TCP/IP五层模型

如果问TCP/IP模型,这里就不说表示层和会话层,数据链路层和物理层一起称为网络 接口层 • 自上而下分别是应用层,表示层,会话层,传输层,网络层,数据链路层,物理层; ○ 应用层为各种各样的应用提供网络服务,因为网络应用非常的多,所以就要求 应用层采用不同的应用协议来解决不同的应用请求,因此应用层是最复杂的一层。 典型的协议有http 80,ftp 21,SMTP 25等; ○ 表示层主要处理在两个进程之间交换信息的方式;(一个系统的信息另一个系 统看得懂) ○ 会话层主要负责两个进程之间的会话管理,包括建立,管理及终止进程间的会 话; ○ 传输层主要负责两个进程之间数据的传输服务; ○ 网络层主要负责将传输层产生的TCP报文段或者UDP数据报封装成IP数据报; (选择合适的网间路由分发数据) ○ 数据链路层主要负责将网络层产生的IP数据报封装成帧; ○ 物理层主要就是实现比特流的透明传输;

ip,tcp,icmp分别在哪一层

在 TCP/IP 五层模型中:

  • IP:网络层
  • TCP(传输控制协议):传输层
  • ICMP(Internet 控制报文协议):网络层

说明:ICMP 虽然是网络层协议,但其报文封装在 IP 数据报中传输,用于传递控制消息(如 ping、路径发现、错误报告等)。

网络层和传输层负责的内容有什么区别

对比维度 网络层 传输层
寻址对象 IP 地址(主机间) 端口号(进程间)
负责范围 主机到主机(host-to-host) 进程到进程(process-to-process)
主要功能 路由选择、分组转发、异构网络互联 为应用进程提供端到端的通信服务
数据单元 IP 数据报 TCP 报文段 / UDP 用户数据报
服务类型 无连接、不可靠服务 面向连接可靠(TCP)/ 无连接不可靠(UDP)
路径选择 会根据路由表选择不同路径转发 不关心路径,只负责端到端传输

一句话总结:网络层负责把数据从一个主机送到另一个主机,传输层负责把数据送到主机上的具体进程。

网络层了解有什么协议?

核心协议: - IP(Internet Protocol):网际协议,核心协议,负责寻址和路由 - ICMP(Internet Control Message Protocol):Internet 控制报文协议,用于网络错误探测和报告(ping、traceroute) - ARP(Address Resolution Protocol):地址解析协议,根据 IP 地址获取 MAC 地址 - RARP(Reverse ARP):反向地址解析协议,根据 MAC 地址获取 IP 地址(现在较少使用) - DHCP(Dynamic Host Configuration Protocol):动态主机配置协议,动态分配 IP 地址 - IGMP(Internet Group Management Protocol):Internet 组管理协议,用于多播管理 - OSPF(Open Shortest Path First):开放最短路径优先,内部网关路由协议 - BGP(Border Gateway Protocol):边界网关协议,外部网关路由协议

ARP协议的原理?

ARP(地址解析协议)的作用是:根据目标 IP 地址,获取对应的 MAC 地址

工作原理

  1. 发送 ARP 请求:当主机需要发送数据给同一局域网内的另一台主机,知道对方 IP 但不知道 MAC 地址时,会广播发送一个 ARP 请求报文:
  2. "我的 IP 是 A,MAC 是 X,我想知道 IP 为 B 的主机的 MAC 地址是什么?"

  3. 所有主机接收:局域网内所有主机都收到这个 ARP 请求

  4. 目标主机回复:只有 IP 地址匹配的主机会回复一个 ARP 响应报文:

  5. "IP 为 B 的 MAC 地址是 Y"

  6. 缓存更新:发送方收到响应后,会将 IP-MAC 映射关系存入本地 ARP 缓存,后续直接使用

特点: - ARP 是广播请求,单播响应 - 本地有 ARP 缓存,避免频繁发送 ARP 请求 - ARP 工作在网络层和数据链路层之间,解决同一网段内 IP 转 MAC 的问题

TCP和UDP的区别

对比维度 TCP UDP
连接性 面向连接,需要三次握手建立连接 无连接,不需要建立连接
可靠性 可靠传输,保证数据不丢失不重复 不保证可靠,尽力而为
有序性 保证数据按序到达 不保证顺序
流量控制 有滑动窗口流量控制 没有
拥塞控制 有拥塞控制机制 没有
服务类型 面向字节流 面向报文
首部开销 20 字节(固定) 8 字节
连接数量 一对一 支持一对一、一对多、多对多
速度 较慢,因为连接、确认、重传开销 较快,开销小

TCP和UDP的适用场景

TCP 适用场景: - 文件传输(FTP):需要完整可靠 - 网页浏览(HTTP/HTTPS):内容不能出错 - 邮件传输(SMTP/POP3):邮件不能丢 - 远程登录(SSH/Telnet):交互需要可靠

UDP 适用场景: - 实时音视频通话:对延迟敏感,允许少量丢包 - 在线视频直播:追求低延迟,偶尔卡顿可以接受 - DNS 查询:查询简单快速,一次请求一次响应 - 物联网传感器数据上报:定期上报,丢一两次不影响 - 游戏:即时交互,低延迟优先

总结:对可靠性要求高选 TCP,对低延迟要求高选 UDP。

TCP的拥塞控制机制?

TCP 拥塞控制主要有四个阶段:慢启动、拥塞避免、快重传、快恢复

核心变量: - cwnd(拥塞窗口):发送方根据网络拥堵情况动态调整的窗口 - rwnd(接收窗口):接收方告知的可用缓冲区大小 - ssthresh(慢启动阈值):慢启动和拥塞避免的分界点

四个阶段

  1. 慢启动(Slow Start)
  2. 初始 cwnd = 1(或更小),每收到一个 ACK,cwnd++
  3. 拥塞窗口指数增长(1 → 2 → 4 → 8...)
  4. cwnd >= ssthresh 时,退出慢启动,进入拥塞避免

  5. 拥塞避免(Congestion Avoidance)

  6. 每经过一个 RTT,cwnd 只增加 1
  7. 拥塞窗口线性增长,缓慢探测网络容量
  8. 直到发生丢包

  9. 丢包处理

  10. 超时重传ssthresh = cwnd / 2cwnd = 1,重新进入慢启动
  11. 快重传:收到 3 个重复 ACK,判断不是拥塞而是随机丢包,立即进入快恢复

  12. 快恢复(Fast Recovery)

  13. ssthresh = cwnd / 2cwnd = ssthresh
  14. 直接进入拥塞避免,不重新慢启动

核心思想:AIMD(加法增大,乘法减小),不丢包就慢慢增大窗口,出现丢包就迅速减半阈值。

TCP流量控制窗口和拥塞控制窗口有什么不同

对比 流量控制窗口(rwnd) 拥塞控制窗口(cwnd)
解决问题 发送方和接收方速率不匹配 网络本身拥塞
谁维护 接收方维护,通过 TCP 头部告知发送方 发送方自己维护
控制对象 限制发送方发送速率不超过接收方处理能力 限制发送方发送速率不超过网络承载能力
触发原因 接收方缓冲区满了 网络中路由器丢包了
调整方式 接收方每次回复 ACK 时动态更新 发送方根据丢包情况按拥塞控制算法调整
作用层面 端到端的流量控制 整个网络的拥塞控制

发送方实际窗口实际发送窗口 = min(cwnd, rwnd),同时受两个窗口限制。

说说io多路复用?

I/O 多路复用是一种 I/O 模型,允许单个线程同时监听多个文件描述符(socket),当某个描述符就绪(可读/可写)时,通知用户进程进行处理。

核心思想:用一个线程(或少量线程)管理多个 socket,避免为每个连接创建一个线程,节省资源。

常见实现

实现 平台 时间复杂度 特点
select POSIX O(n) 支持多平台,文件描述符数量有限(默认 1024),每次都要遍历全部
poll POSIX O(n) 突破数量限制,原理同 select,还是需要遍历
epoll Linux O(1) 就绪 事件驱动,只返回就绪的描述符,性能最好,支持水平触发和边缘触发
kqueue macOS/BSD O(1) 就绪 类似 epoll,性能好
IOCP Windows - 完成端口,Windows 下异步 I/O

适用场景: - 网络服务器需要处理大量并发连接(如 Redis、Nginx、Tomcat) - 同时处理多个 socket 读写事件

优点: - 相比多线程/多进程,节省线程资源,减少上下文切换开销 - 单线程就能处理大量并发连接

计算机网络的IP结构

IPv4 地址长度为 32 位,通常采用点分十进制表示,结构分为两部分:

两级结构(分类地址)

<网络号> + <主机号>

按网络号长度分类

类别 首字节范围 网络号长度 主机号长度 用途
A 类 1-126 8 位 24 位 大型网络
B 类 128-191 16 位 16 位 中型网络
C 类 192-223 24 位 8 位 小型网络
D 类 224-239 - - 多播
E 类 240-255 - - 保留研究

CIDR(无分类编址): - 现在互联网普遍使用 CIDR,不再按 A/B/C 分类 - 格式:IP地址/前缀长度,例如 192.168.1.0/24 - 前缀长度就是网络号位数,剩余位数是主机号位数

特殊地址: - 127.0.0.1:回环地址,指向本机 - 0.0.0.0:表示本机所有 IP 地址 - 网络号全 0:表示本网络 - 主机号全 1:广播地址 - 私有地址:10.0.0.0/8、172.16.0.0/12、192.168.0.0/16,用于内网

IPv6:128 位地址,用冒分十六进制表示,解决 IPv4 地址耗尽问题。

※TCP连接管理

• TCP是面向连接的协议,因此每个TCP连接都有三个阶段:连接建立,数据传送 和连接释放 ○ TCP连接的建立——三次握手 ▪ 第一次握手,就是客户端向服务端发送一个连接请求报文,在报文段中将 SYN置为1;第二次握手,就是服务端向客户端发送一个确认连接报文,在报 文段中将SYN和ACK都置为1;第三次握手,就是客户端向服务端发送一个 确认的报文,表明自己收到了服务端的确认信息,在报文段中将ACK置为1; 这样经过三次握手,TCP连接就建立了。 ○ TCP连接的释放——四次挥手 ▪ 第一次挥手,就是客户端向服务端发送一个连接释放请求的FIN包;第二 次挥手,就是服务端向客户端发送一个确认的ACK包,表示我接收到了断开 连接的请求,不过服务端可能还有一些数据正在处理;第三次挥手,就是服务 端处理完了所有的数据,向客户端发送FIN包,表示服务端现在可以断开连接 了;第四次挥手,就是客户端向服务端发送一个确认的ACK包,此时TCP连 接还未释放,必须经过计时器设置的时间2MSL(MSL:TCP报文在Internet 上最长生存时间)后,客户端才断开连接了;这样经过四次挥手,TCP连接就 断开了。

※TCP 是如何做到可靠传输的

TCP协议主要通过校验和,序号,确认号,超时重传,流量控制等机制来保证数据 的可靠传输 ○ 校验和 就是说 如果接收方计算出来的校验和与发送方的不一致,那么数据就 会被丢弃;(在计算校验和时,需要在TCP报文段的前面加上12字节的伪首部) ○ 序号 就是本报文段发送的数据的第一个字节的序号,用来保证数据能有序的 提交给应用层。 ○ 确认号 就是期望收到对方的下一个报文段的数据的第一个字节的序号。 ○ 超时重传 就是TCP每发送一个报文段,就对这个报文段设置一次计时器,如 果设置的重传时间到了但没有收到确认,就要重传这一报文段。

○流量控制 就是 基于滑动窗口实现的,主要就是接收方在向发送方发送确认报 83. TCP 和 UDP的区别 文的时候,通过设置窗口字段来将接收窗口的大小通知给发送方,这样就可以控制 发送方的发送速率,以免发送方发送速度过快,导致数据丢失。

TCP 和 UDP的区别

TCP 准确性相对高,适合文件传输,远程登录 UDP效率要求相对高,适合QQ聊天,在线视频 第一,TCP面向连接,而UDP面向无连接 第二,TCP可靠,而UDP不可靠 第三,TCP面向字节流,而UDP面向报文 第四,TCP首部是20B,而UDP首部是8B 第五,TCP只支持一对一通信,而UDP支持广播通信 第六,UDP传输比TCP更快,所以更适合即时通信

TCP的四次挥手

TCP 连接释放需要四次挥手:

  1. 第一次挥手:客户端发送 FIN=1,请求断开连接,进入 FIN-WAIT-1 状态
  2. 第二次挥手:服务器收到 FIN 后回复 ACK=1,确认客户端断开请求,进入 CLOSE-WAIT 状态,客户端收到 ACK 后进入 FIN-WAIT-2 状态
  3. 第三次挥手:服务器处理完剩余数据后,发送 FIN=1 请求断开连接,进入 LAST-ACK 状态
  4. 第四次挥手:客户端收到 FIN 后回复 ACK=1,进入 TIME-WAIT 状态,服务器收到 ACK 后进入 CLOSED 状态
  5. 客户端:等待 2MSL 时间后进入 CLOSED 状态,真正释放连接

TIME-WAIT 状态的意义

TIME-WAIT 状态需要等待 2MSL(最长报文寿命,RFC 推荐 2 分钟),主要有两个核心原因:

1. 保证 TCP 连接可靠关闭 - 确保最后一个 ACK 报文能够到达服务器 - 如果客户端发出的最后一个 ACK 丢失,服务器会重发 FIN,客户端在 TIME-WAIT 状态能够重新发送 ACK - 如果客户端直接进入 CLOSED,就无法处理服务器重发的 FIN,可能导致服务器无法正常关闭

2. 防止"延迟重复的连接报文"干扰新连接 - 网络中可能存在一些属于本次连接的延迟报文,在连接关闭后才到达目的地 - 如果没有 2MSL 等待,关闭连接后马上建立一个相同四元组(源IP、源端口、目的IP、目的端口)的新连接 - 这些延迟的旧报文可能会被误送到新连接中,导致数据混乱 - 等待 2MSL 可以让网络中这些残留的报文自然消失,保证下一个新连接不受干扰

总结:TIME-WAIT 是主动关闭连接的一方(通常是客户端)需要经历的状态,等待 2MSL 是为了保证连接可靠关闭和避免旧连接残留报文干扰新连接。

浏览器输入URL到显示页面的过程

  1. 首先浏览器会向DNS请求解析域名的ip地址
  2. 然后和该服务器建立TCP连接,浏览器会向服务器发出HTTP请求
  3. 服务器处理完请求后就会将HTTP响应结果发送给浏览器
  4. 然后关闭TCP连接,浏览器对响应结果进行解析并且渲染页面

常见状态码及其所代表的含义

HTTP 状态码由三位数字组成,第一位表示类别:

1xx:信息性状态码 - 请求已接收,需要继续处理

状态码 含义
100 Continue 客户端应继续发送请求。服务器收到请求头,告知客户端继续发送请求体

2xx:成功状态码 - 请求成功被处理

状态码 含义
200 OK 请求成功,正常返回响应数据
201 Created 请求成功,并且服务器创建了新资源(常用于 POST/PUT)
204 No Content 请求成功,但响应没有内容(常用于 DELETE 后)
206 Partial Content 部分内容,断点续传或范围请求成功

3xx:重定向状态码 - 需要客户端进一步操作

状态码 含义 区别
301 Moved Permanently 永久重定向 资源永久移动到新位置,搜索引擎会更新地址
302 Found 临时重定向 资源临时移动到新位置,搜索引擎保留原地址
304 Not Modified 未修改 资源未修改,客户端使用本地缓存即可,不返回内容
307 Temporary Redirect 临时重定向 与 302 类似,但要求重定向后保持请求方法不变

301 vs 302 总结: - 301:永久跳转,浏览器会缓存重定向结果 - 302:临时跳转,每次都请求原服务器


4xx:客户端错误状态码 - 请求有错误,服务器无法处理

状态码 含义
400 Bad Request 请求参数错误,语法错误,服务器无法理解
401 Unauthorized 未授权,需要身份认证(登录)
403 Forbidden 禁止访问,服务器拒绝请求,权限不足
404 Not Found 资源不存在,服务器找不到请求的资源
405 Method Not Allowed 请求方法不被允许(比如用 POST 访问了只支持 GET 的接口)
408 Request Timeout 请求超时
409 Conflict 请求冲突,比如多个用户同时修改同一个资源
413 Payload Too Large 请求体太大,服务器拒绝处理
429 Too Many Requests 请求频率太高,被限流了

5xx:服务器错误状态码 - 服务器处理请求出错

状态码 含义
500 Internal Server Error 服务器内部错误(通常是程序异常)
501 Not Implemented 服务器不支持该请求方法,无法完成处理
502 Bad Gateway 网关/代理错误,从上游服务器收到了无效响应
503 Service Unavailable 服务不可用,服务器暂时无法处理请求(通常是过载、维护)
504 Gateway Timeout 网关超时,上游服务器超时没有响应
505 HTTP Version Not Supported 服务器不支持请求中使用的 HTTP 版本

面试常考

  • 304:协商缓存命中,资源未修改,使用本地缓存
  • 401 vs 403:401 是没登录,403 是登录了但没权限
  • 502 vs 504:502 是网关收到错误响应,504 是网关超时
  • 301 vs 302:一个永久一个临时,对 SEO 影响不同

页面置换算法 • 缺页中断:在作业运行的过程中,如果发现要访问的页面不在内存中,就发生了缺 页中断,此时操作系统就会将对应的页面调入到内存中。 • 页面置换算法就是 当发生缺页中断的时候,如果当前内存中没有空闲的空间,那 么操作系统就必须在内存中选择一个页面将其移出内存,用来选择淘汰哪一个页面的规 则就叫做页面置换算法 • 主要有四种算法:先进先出,最少使用,最近最少使用,最佳页面置换算法; ○ 先进先出就是 淘汰最先进入内存的页面;最少使用就是 淘汰最少使用过的页 面;最近最少使用就是 淘汰最近的一段时间内未被使用的页面;最佳页面置换就 是 淘汰以后永不使用或者很长时间内不会被访问的页面,这怎么可以知道撒,所 以是一种无法实现的算法;

评论