计算机网络及通信原理

一、常见的 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

    • 相关头部:ExpiresCache-Control
  • 协商缓存:发送请求到服务器比对,若未改变则读取本地缓存,返回状态码 304

    • 相关头部:ETagLast-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 地址

工作原理

  1. 主机 A 在局域网内广播 ARP 请求:"谁的 IP 是 192.168.1.1?请告诉我你的 MAC 地址"

  2. 目标主机 B 收到请求后,单播回复自己的 MAC 地址

  3. 主机 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 始终分发到同一服务器(保持会话)

  • 随机:随机选择服务器

相关推荐
酉鬼女又兒17 天前
零基础入门计算机网络运输层:端到端通信核心作用、端口号分类规则、复用分用工作机制及UDP与TCP协议全方位对比详解
网络·网络协议·tcp/ip·计算机网络·考研·udp·php
我是一颗柠檬17 天前
【计算机网络全面教学】网络设备与故障排查,从集线器到Wireshark抓包实战Day7(2026年)
网络·计算机网络·wireshark
梁辰兴17 天前
计算机网络基础:报文鉴别
网络·计算机网络·计算机·计算机网络基础·梁辰兴·报文鉴别
JAVA面经实录91718 天前
操作系统面试题
java·服务器·数据库·计算机网络·面试
JAVA面经实录91718 天前
操作系统(面试全覆盖)
java·计算机网络·面试
JAVA面经实录91718 天前
高频算法面试题
java·计算机网络·算法·面试
@insist12318 天前
系统架构设计师-计算机网络基础体系全梳理
计算机网络·系统架构·软考·系统架构设计师·软件水平考试
Yvonne爱编码18 天前
JAVA EE初阶---DAY 2 计算机网络
java·开发语言·计算机网络·算法·java-ee·php
梁辰兴18 天前
计算机网络基础:对称加密密码体制
网络·计算机网络·计算机·对称加密·计算机网络基础·梁辰兴