一、常见的 HTTP 状态码有哪些?
2xx 成功:200(OK)、201(Created)、204(No Content)
3xx 重定向:301(永久重定向)、302(临时重定向)、304(未修改,使用缓存)
4xx 客户端错误:400(错误请求)、401(未授权)、403(禁止)、404(未找到)
5xx 服务端错误:500(内部错误)、502(错误网关)、503(服务不可用)、504(网关超时)
二、HTTP 和 HTTPS 的区别是什么?HTTPS 的加密原理是什么?
端口:HTTP 默认 80,HTTPS 默认 443
传输:HTTP 明文传输,HTTPS 基于 TLS 加密传输
安全缺陷:HTTP 存在窃听、数据篡改、服务器身份伪造三大风险
HTTPS 三大保证:①机密性(加密传输);②完整性(哈希校验);③身份认证(数字证书)
HTTPS 多一次 TLS 握手,有轻微性能损耗。
HTTPS 混合使用对称加密 + 非对称加密,配合数字证书:
-
对称加密:加解密共用同一密钥,速度快,用于传输业务数据
-
非对称加密:公钥加密、私钥解密,运算慢,仅用于交换对称密钥
-
数字证书:CA 机构颁发,存储域名、服务器公钥、CA 签名,证明服务器合法身份
为什么不全程用非对称加密?网页传输大量图片、JS、文本,海量数据用非对称加密会严重卡顿。
三、TLS/SSL 握手流程?
1.客户端发送Client Hello(TLS版本、随机数、支持的加密套件)
2.服务端返回Server Hello (选定版本、加密套件、随机数)+服务器证书
3.客户端校验证书合法性(CA签名、域名、有效期)
4.客户端生成预主密钥,用服务端公钥加密发送
5.服务端用私钥解密拿到预主密钥
6.双方通过客户端随机数、服务端随机数、预主密钥算出会话对称密钥
7.双方发送Finished报文验证握手未被篡改,后续全部用对称加密传输
四、什么是 XSS 攻击?如何防范?
XSS(跨站脚本攻击)是通过注入恶意脚本执行非预期操作的攻击。
三种类型:
-
存储型:代码存储在数据库,用户访问时执行(评论区)
-
反射型:代码通过 URL 参数返回执行
-
DOM 型:前端 JS 动态插入数据时执行
防御手段:
-
输入过滤 + 输出转义
-
CSP(Content Security Policy)限制脚本来源
-
HttpOnly Cookie,防止通过 JS 获取
-
前端框架(React/Vue)默认转义 HTML
五、什么是 CSRF 攻击?如何防范?
CSRF(跨站请求伪造)利用用户已登录状态,诱导其访问恶意链接,伪造合法请求。浏览器会自动带上用户 Cookie,从而冒充用户身份。
防御手段:
-
CSRF Token 验证(每个请求附带随机 Token)
-
SameSite Cookie:阻止跨站请求携带 Cookie
-
验证码 / 二次确认
-
Referer / Origin 校验
六、TCP 三次握手的过程?为什么不是两次?
1.客户端向服务端发送 SYN
2.服务端收到 SYN 后,返回 SYN + ACK
3.客户端发送 ACK
为什么不是两次? 两次无法确认客户端的接收能力,避免因网络延迟造成的资源浪费。
七、从输入 URL 到页面渲染完成,经历了哪些步骤?
1.URL解析(域名、协议、端口)
2.DNS解析(域名转ip)
3.建立TCP连接(三次握手)
4.HTTPS的TLS握手
5.服务器处理并返回响应
6.客户端解析HTML、CSS、JS
7.构建渲染树绘制页面
八、WebSocket 是什么?解决了什么问题?
WebSocket是一种基于TCP的全双工通信协议,允许客户端与服务器之间建立持久连接,主动发送数据。(传统HTTP是请求-响应模式,客户端必须先发请求,服务器才能响应数据。实时场景中效率低)
核心优势:
-
连接建立后持续保持
-
服务器可以主动推送数据
-
通信开销更低
-
实现真正的实时通信
九、WebSocket 和 SSE 的区别?
| 对比 | WebSocket | SSE |
|---|---|---|
| 方向 | 全双工(双向) | 单向(服务端→客户端) |
| 协议 | 独立协议(ws/wss) | HTTP(EventSource API) |
| 自动重连 | 需手动实现 | 内置 |
| 二进制数据 | 支持 | 不支持(仅文本) |
| 适用场景 | 聊天、游戏、实时监控 | 通知推送、股票行情 |
十、HTTP 轮询、WebSocket、SSE 分别适用于什么场景?
-
HTTP 轮询:更新频率低的场景,如订单状态、任务进度
-
WebSocket:实时性要求高的场景,如实时监控、股票行情、游戏、聊天
-
SSE:服务端单向推送,如通知、消息提醒
十一、什么是跨域?跨域的根本原因是什么?
跨域的根本原因是浏览器同源策略(Same-Origin Policy)。同源指协议、域名、端口三者完全一致。
同源策略是浏览器最核心的安全机制,目的是保护用户数据安全,避免恶意网站窃取隐私信息。
十二、跨域有哪些解决方案?
思路一:绕开浏览器限制
-
JSONP :利用
<script>标签可跨域加载资源,只能用 GET 请求,需要后端配合 -
代理服务器:开发环境通过 webpack-dev-server 代理转发
-
Nginx 反向代理
思路二:告诉浏览器这是安全的
-
CORS (主流方案):服务端设置
Access-Control-Allow-Origin响应头 -
postMessage:跨文档通信
十三、Ajax、Fetch、Axios 的区别?
1.Ajax :一种技术统称,基于 XMLHttpRequest 对象实现异步请求
2.Fetch:浏览器原生 API,基于 Promise,旨在替代 XMLHttpRequest
Fetch 特点:
-
基于 Promise 设计
-
不是 Ajax 的进一步封装,而是原生 JS
-
没有使用 XMLHttpRequest 对象
3.Axios:第三方库,基于 Promise,支持请求/响应拦截、自动转换 JSON、取消请求等高级功能
十四、强缓存和协商缓存有什么区别?
-
强缓存:直接从本地缓存获取资源,不请求服务器,返回状态码 200
- 相关头部:
Expires、Cache-Control
- 相关头部:
-
协商缓存:发送请求到服务器比对,若未改变则读取本地缓存,返回状态码 304
- 相关头部:
ETag、Last-Modified
- 相关头部:
优先级:强缓存 > 协商缓存。
十五、前端网络性能优化有哪些方法?
-
减少 HTTP 请求数:文件合并、CSS 雪碧图、使用 Base64
-
使用 CDN:内容分发网络,用户就近获取资源
-
合理使用缓存:强缓存 + 协商缓存
-
资源压缩:Gzip、JS/CSS 压缩
-
DNS 预解析 :
<link rel="dns-prefetch"> -
按需加载和异步加载
-
HTTP/2 多路复用:减少连接开销
十六、OSI 七层模型每一层的名称和功能是什么?TCP/IP 四层/五层模型与 OSI 七层模型的对应关系?
OSI 七层模型从下到上依次为:
| 层级 | 名称 | 主要功能 | 典型设备/协议 |
|---|---|---|---|
| 7 | 应用层 | 为用户提供各种应用服务 | HTTP、FTP、DNS、SMTP |
| 6 | 表示层 | 数据加密、解密、压缩、解压缩,格式转换 | 加密协议 |
| 5 | 会话层 | 建立、维护和管理会话(登录验证、断点续传) | NetBIOS |
| 4 | 传输层 | 数据分段、传输和重组,提供端到端通信 | TCP、UDP |
| 3 | 网络层 | 数据包的路由选择和转发,IP 地址封装与解析 | 路由器 |
| 2 | 数据链路层 | 将比特流封装成帧,MAC 地址解析,差错控制 | 交换机、网桥 |
| 1 | 物理层 | 传输比特流(0/1),数模/模数转换 | 集线器、中继器 |
OSI 七层模型是理论标准,TCP/IP 是实际互联网采用的协议体系。
对应关系:
-
应用层(TCP/IP) = OSI 应用层 + 表示层 + 会话层
-
传输层(TCP/IP) = OSI 传输层
-
网络层(TCP/IP) = OSI 网络层
-
网络接口层(TCP/IP) = OSI 数据链路层 + 物理层
TCP/IP 五层模型则将网络接口层拆分为数据链路层和物理层,是考研和面试中最常被提及的折中方案。
数据封装过程:发送方每层不断封装首部与尾部,添加传输信息;接收方逐层解封装。
十七、IPv4 和 IPv6 的区别?
-
地址长度:IPv4 32 位,约 43 亿个地址;IPv6 128 位,地址空间极大
-
安全性:IPv6 原生支持 IPSec,安全性更好
-
配置方式:IPv4 需手动配置或 DHCP;IPv6 支持无状态自动配置
-
过渡策略:双栈(同时运行 IPv4/IPv6)、隧道(将 IPv6 封装在 IPv4 中传输)、转换(NAT64)
十八、ARP 协议的作用是什么?工作原理是什么?
ARP(地址解析协议)用于将 IP 地址解析为 MAC 地址。
工作原理:
-
主机 A 在局域网内广播 ARP 请求:"谁的 IP 是 192.168.1.1?请告诉我你的 MAC 地址"
-
目标主机 B 收到请求后,单播回复自己的 MAC 地址
-
主机 A 将 IP-MAC 映射存入 ARP 缓存
跨网段场景 :如果目标不在同一局域网,数据包会先发往网关,由网关进行路由转发。
十九、路由器和交换机有什么区别?
| 对比 | 路由器 | 交换机 |
|---|---|---|
| 工作层级 | 网络层(三层) | 数据链路层(二层) |
| 转发依据 | IP 地址 | MAC 地址 |
| 主要功能 | 在不同网络间转发数据包 | 在同一网络内转发数据帧 |
| 路由表 | 有,用于路径决策 | 无,使用 MAC 地址表 |
注:现代三层交换机也具备路由功能,但核心区别仍是基于 IP 还是 MAC 转发。
二十、什么是路由协议?OSPF 和 RIP 的区别?
路由协议用于路由器之间交换路由信息、构建路由表。
| 对比 | RIP | OSPF |
|---|---|---|
| 类型 | 距离矢量协议 | 链路状态协议 |
| 度量标准 | 跳数(最大 15 跳) | 带宽/开销(Dijkstra 算法) |
| 收敛速度 | 慢 | 快 |
| 适用场景 | 小型网络 | 大型复杂网络 |
OSPF 通过向自治系统内所有路由器发送链路状态信息来构建拓扑数据库,然后使用 Dijkstra 算法计算最短路径。
二十一、DNS 的作用是什么?DNS 解析过程是怎样的?
DNS(域名系统)用于将域名解析为 IP 地址。
解析过程 (以访问 www.example.com 为例):
1.浏览器查询浏览器缓存 → 本地 hosts 文件
2.向本地 DNS 服务器(通常由 ISP 提供)发起递归查询
3.本地 DNS 服务器依次查询根域名服务器 → 顶级域名服务器 (.com)→ 权威域名服务器 (example.com)
4.返回最终 IP 地址
二十二、DHCP 的作用是什么?
DHCP(动态主机配置协议)自动为网络中的设备分配 IP 地址、子网掩码、网关、DNS 等网络参数。
工作流程(DORA) :
-
Discover:客户端广播发现 DHCP 服务器
-
Offer:DHCP 服务器提供 IP 地址
-
Request:客户端请求使用该 IP
-
Acknowledge:服务器确认分配
二十三、NAT 是什么?有什么作用?
NAT(网络地址转换)将私有 IP 地址映射为公共 IP 地址。
主要作用:
-
解决 IPv4 地址不足:多个设备共享一个公网 IP
-
提高安全性:隐藏内部网络结构
-
实现内网访问外网
常见类型:静态 NAT(一对一)、动态 NAT、PAT(端口多路复用,最常用)。
二十四、VPN 是什么?工作原理是什么?
VPN(虚拟专用网络)在公共网络上建立安全的通信隧道,实现远程访问和数据传输。
工作原理:
1.客户端与 VPN 服务器建立加密隧道(通常使用 IPSec 或 SSL/TLS)
2.所有数据通过隧道加密传输
3.服务器解密后转发到目标网络
二十五、正向代理和反向代理的区别?
| 对比 | 正向代理 | 反向代理 |
|---|---|---|
| 代理对象 | 客户端(为客户端服务) | 服务器(为服务器服务) |
| 谁配置 | 客户端主动配置 | 服务端部署,客户端无感知 |
| 典型场景 | 翻墙、访问控制、缓存 | 负载均衡、安全防护、CDN |
| 隐藏的是 | 客户端的身份 | 服务端的真实地址 |
二十六、负载均衡有哪些常见算法?
-
轮询(Round Robin) :按顺序轮流分发
-
加权轮询:按权重比例分发
-
最小连接数:分发到当前连接最少的服务器
-
源 IP 哈希:同一 IP 始终分发到同一服务器(保持会话)
-
随机:随机选择服务器