【计算机网络】面试全解|OSI/TCPIP、HTTP全版本、HTTPS、DNS一站式梳理

大家好,我是程序员二叉。


简介

本文汇总计算机网络高频面试核心考点,从OSI七层与TCP/IP五层网络模型入手,完整梳理网页访问全链路、HTTP各版本迭代差异、请求方法与状态码、HTTPS加密原理、DNS解析流程等重难点内容,兼顾理论定义与实际场景,适合求职面试、期末备考、技术复盘快速查阅。欢迎点赞收藏关注。


一、OSI 七层模型 & TCP/IP 五层模型(重点计算机网络)

1. OSI 七层(从上→下)

层级 名称 核心作用
7 应用层 面向应用程序,提供网络应用接口:HTTP、FTP、DNS、SMTP
6 表示层 数据加密、解密、编码、压缩、格式转换(HTTPS 加解密在这里)
5 会话层 建立 / 管理 / 断开应用会话连接
4 传输层 端到端数据传输、流量控制、差错校验:TCP、UDP
3 网络层 路由寻址、跨网段转发、分片:IP、ICMP、ARP
2 数据链路层 相邻节点帧封装、MAC 寻址、差错校验:以太网、MAC 帧
1 物理层 比特流传输、硬件电气信号:网线、光纤、集线器

2. TCP/IP 五层(实际工业标准,面试必考)

合并 OSI 上层:应用层、传输层、网络层、数据链路层、物理层

  • 应用层:HTTP/DNS/FTP,应用交互协议
  • 传输层:TCP(可靠连接)、UDP(无连接)
  • 网络层:IP 寻址、路由
  • 链路层:MAC、帧封装
  • 物理层:二进制比特信号传输

二、输入网址回车 → 页面渲染完整全流程

  1. DNS 解析:域名→IP(本地缓存→根域名→顶级域→权威 DNS,拿到服务器 IP)
  2. 建立 TCP 三次握手:客户端↔服务端建立可靠 TCP 连接(传输层)
  3. 发送 HTTP/HTTPS 请求:应用层组装请求报文,经层层封装(TCP 头→IP 头→MAC 头→比特流)
  4. 数据路由转发:经过多层路由器,依靠 IP 路由寻址到达目标服务器
  5. 服务器逐层解封装:剥物理→链路→网络→传输头部,应用层拿到 HTTP 请求
  6. 服务端处理业务:后端查数据库、拼接 HTML 页面
  7. 返回响应报文:封装响应数据原路传回客户端
  8. TCP 四次挥手断开连接
  9. 浏览器解析 HTML/CSS/JS,渲染页面、加载图片资源

三、HTTP 与 HTTPS 区别

对比项 HTTP HTTPS
安全 明文传输,中间人可抓包篡改 SSL/TLS 加密传输
端口 80 443
证书 CA 签发数字证书
开销 小,无加密运算 加密解密,CPU 开销更大
协议 应用层明文 HTTP+SSL/TLS

四、HTTP1.0 / 1.1 / HTTP2 / HTTP3 版本差异

1. HTTP/1.0

  • 短连接:一次请求一次 TCP,请求完立即断开
  • 无长连接、管线化,并发请求需要多开 TCP 连接,开销大
  • 无 Host 请求头

2. HTTP/1.1(最经典)

  • 默认长连接 Keep-Alive,一个 TCP 连接复用多次请求
  • 支持管线化(理论串行批量发请求,实际浏览器没普及)
  • 新增 Host 头、缓存字段(Cache-Control)、断点续传
  • 缺点:队头阻塞,前面请求没返回,后面请求全部阻塞

3. HTTP/2(二进制帧多路复用,TCP)

  • 二进制帧传输(不再文本报文)
  • 单 TCP 多路复用:同一连接并行收发多个请求,解决队头阻塞
  • 头部压缩 HPACK、服务器推送 Server Push
  • 底层仍是 TCP,TCP 层丢包依然全连接阻塞

4. HTTP/3(QUIC 协议,UDP 底层)

  • 基于UDP+QUIC,彻底摆脱 TCP 层队头阻塞
  • 0-RTT/1-RTT 握手,连接建立更快
  • 连接迁移(切换 Wi‑Fi / 流量 IP 不变),移动端体验更好

五、HTTP 常用请求方法

  • GET:查询资源,数据拼在 URL
  • POST:提交数据(表单、上传),请求体传参
  • PUT:全量更新资源
  • DELETE:删除指定资源
  • HEAD:只返回响应头,无响应体(探测资源)

补充:PATCH 局部更新、OPTIONS 预检请求


六、GET vs POST 核心区别(面试五点:参数 / 缓存 / 长度 / 安全 / 编码)

  1. 参数位置
    GET:参数拼在 URL;POST:放请求 Body 体内
  2. 缓存
    GET 默认被浏览器缓存;POST 默认不缓存
  3. 数据长度
    GET 受 URL 长度限制;POST 无长度限制
  4. 安全性
    GET 参数暴露在地址栏,明文可见;POST 参数在请求体,相对安全(二者都明文,HTTPS 才加密)
  5. 编码
    GET 仅 URL 编码;POST 支持多种编码(form-data/json 等)

额外:GET 幂等(多次请求结果一致),POST 非幂等。


七、HTTP 状态码分类

  • 1xx 信息:请求接收,继续处理(100 继续)
  • 2xx 成功:请求正常处理(200 成功)
  • 3xx 重定向:需要跳转新地址
  • 4xx 客户端错误:请求参数 / 权限错误
  • 5xx 服务端错误:服务器异常

常用状态码释义

  • 200 OK:请求成功
  • 301 Moved Permanently:永久重定向
  • 302 Found:临时重定向
  • 304 Not Modified:资源未修改,走本地缓存
  • 400 Bad Request:请求参数错误
  • 401 Unauthorized:未认证(需要登录)
  • 403 Forbidden:权限不足,禁止访问
  • 404 Not Found:资源不存在
  • 500 Internal Server Error:服务器内部报错

301 永久重定向 & 302 临时重定向

  • 301 永久:浏览器缓存跳转地址,SEO 权重转移,永久更换 URL
  • 302 临时:不缓存跳转,下次访问仍走原地址,临时跳转(登录跳转)

八、对称加密、非对称加密、数字证书

对称加密(AES/DES)

加密解密同一个密钥,速度快;缺点:密钥传输易泄露。

非对称加密(RSA/ECC)

一对密钥:公钥加密、私钥解密;公钥公开,私钥服务器保管;运算慢,适合加密小数据(密钥)。

数字证书(CA 颁发)

绑定域名 + 服务器公钥,CA 用私钥签名;客户端用 CA 公钥验签,证明公钥是目标服务器合法公钥,防中间人篡改公钥。


九、HTTPS 加密流程 + SSL/TLS 握手(经典 1-RTT 握手)

TLS 握手(HTTPS=HTTP+TLS)

  1. 客户端 Hello:客户端发送随机数、支持加密套件列表
  2. 服务端 Hello:返回随机数、选定加密套件、服务器 CA 证书
  3. 客户端校验证书:用内置 CA 根公钥验签证书合法性
  4. 客户端生成预主密钥 (PMK):用服务器公钥加密 PMK发给服务端
  5. 服务端私钥解密拿到 PMK
  6. 双方用三个随机数(客随机 + 服随机 + PMK)生成会话对称密钥
  7. 后续 HTTP 报文全部用对称密钥加密传输

HTTPS 0-RTT:复用上次会话密钥,省去部分握手步骤(HTTP3 常用)

HTTPS 为什么安全?中间人怎么破不了

  1. 证书由权威 CA 签名,中间人无法伪造合法证书
  2. 预主密钥被服务器公钥加密,中间人截获也无法解密
  3. 后续数据对称加密,抓包全是密文

中间人攻击防御

  • 校验 CA 数字证书,非法证书浏览器弹窗告警
  • HSTS:强制浏览器使用 HTTPS,禁用 HTTP 跳转劫持

十、DNS 域名解析完整流程(递归 + 迭代查询)

域名:www.xxx.com → IP

  1. 浏览器本地缓存:查浏览器 DNS 缓存、hosts 文件,有 IP 直接返回
  2. 操作系统缓存:无则查本机 DNS 缓存
  3. 递归查询本地 DNS 服务器(运营商DNS/8.8.8.8)
  4. 本地 DNS 无缓存 → 迭代查询根域名服务器(.
  5. 根 DNS 返回 顶级域服务器(.com) 地址
  6. 本地 DNS 访问.com 顶级域,返回xxx.com权威域名服务器地址
  7. 访问xxx.com权威 DNS,拿到www.xxx.com对应 IP
  8. IP 逐级回传给浏览器,本地 DNS 缓存结果
  9. 浏览器用 IP 发起 TCP 连接访问网站

递归:本地 DNS 帮客户端查到底;迭代:各级 DNS 只返回下级服务器地址。


总结

    1. 网络分层 :OSI七层是理论参考模型,TCP/IP五层为落地标准,分层实现数据封装与解封装,是全网络通信底层基石。
    1. HTTP迭代:从短连接→长连接→多路复用→QUIC(UDP),四代版本逐步解决连接阻塞、传输低效的历史问题。
    1. HTTPS安全 :依托对称+非对称混合加密+CA数字证书,补齐HTTP明文传输的安全漏洞,抵御中间人劫持。
    1. DNS寻址:依托多级域名服务器,通过递归+迭代查询实现域名→IP映射,是域名访问网站的前置必备环节。
    1. 面试用途:整套知识点串联浏览器访问网站全链路,是后端开发、运维岗位高频面试核心内容。
相关推荐
布朗克1681 小时前
18 面向对象综合实战——设计一个图书管理系统
java·面试·职场和发展·面向对象实战
zavoryn2 小时前
Python 面试高频:装饰器、迭代器、生成器和上下文管理器一次讲清
开发语言·python·面试
JAVA96513 小时前
JAVA面试-并发篇 05-并发包AQS队列实现原理是什么
java·开发语言·面试
kyriewen14 小时前
浏览器缓存最强攻略:强缓存、协商缓存、CDN、更新策略,一篇搞定
前端·面试·浏览器
Oo92016 小时前
Prompt 在 NLP 中的应用——从一条 HTTP 请求说起
http
米丘17 小时前
HTTP 3xx 重定向类状态码
http·node.js
JAVA社区18 小时前
Java高级全套教程(十四)—— SpringData超详细实战详解
java·开发语言·spring cloud·面试·职场和发展
代码中介商18 小时前
HTTP 完全指南(一):请求与响应报文结构深度详解
网络·网络协议·http
ricardo197318 小时前
Web Worker + 时间切片:破解主线程阻塞的两种武器
前端·面试