前后端开发必备的计算机网络知识

前后端开发必备的计算机网络知识

做 Web 前后端,不必把《计算机网络》整本啃完,但要把「浏览器 / App 如何把请求送到服务、服务如何回响应」这条链路吃透。本文按日常开发会踩到的问题组织,偏实用。


一、先建立一张总图

一次典型的前端调后端:

text 复制代码
浏览器 / App
    ↓ DNS 解析域名 → IP
    ↓ TCP 三次握手(HTTPS 还有 TLS 握手)
    ↓ 发送 HTTP 请求(方法、路径、头、Body)
网关 / Nginx / 反向代理(可选)
    ↓
后端服务(Spring / Node / ...)
    ↓
数据库 / Redis / MQ(内网再连一次)
    ↓
HTTP 响应(状态码、头、Body)
    ↓
前端渲染 / 处理错误

前后端天天打交道的,主要是:DNS、TCP/TLS、HTTP、端口、代理、CORS、Cookie、缓存、超时与重试


二、IP、端口、域名

1. IP 与端口

概念 含义 开发里常见
IP 主机在网络中的地址 127.0.0.1 本机,10.0.2.2 虚拟机看宿主机
端口 同一台机器上区分进程 前端 5173,后端 8081,MySQL 3306,Redis 6379
localhost 本机回环 只表示「自己」,容器里的 localhost ≠ 宿主机

URL 形态:

text 复制代码
https://api.example.com:443/api/books?page=1
└协议┘ └────主机名────┘ └端口┘└路径┘ └查询┘

省略端口时:HTTP 默认 80,HTTPS 默认 443

2. DNS

浏览器输入域名后,先查 DNS 得到 IP,再连 IP。

开发相关点:

  • 改了 DNS / hosts,要清浏览器或系统 DNS 缓存才生效
  • localhost 一般不走公网 DNS,直接解析到 127.0.0.1 / ::1
  • 前后端分离时,前端域名与 API 域名不同,会引出 CORS(见后文)

3. 公网、内网、端口转发

场景 说明
本机前后端 前端 localhost:5173localhost:8081
Docker / 虚拟机 容器端口要映射到宿主机;VirtualBox 常用 NAT 端口转发
局域网联调 用电脑局域网 IP(如 192.168.x.x),注意防火墙

三、TCP 与连接(够用即可)

HTTP(1.x)通常跑在 TCP 之上。

开发需要记住的

  1. 三次握手:建立连接有成本;短连接频繁握手会慢
  2. 连接复用:HTTP/1.1 Keep-Alive、HTTP/2 多路复用,减少重复建连
  3. 超时:连接超时、读超时、写超时要分开理解
  4. 连接被拒 Connection refused:对端没进程监听该端口(服务没起或端口错)
  5. 连接重置 / 中断:对端崩了、代理超时断开、防火墙掐断

前后端排查口诀:

text 复制代码
能 ping / 端口通不通? → 网络与进程
TLS 报错? → 证书 / HTTPS 配置
HTTP 4xx/5xx? → 应用与权限逻辑

四、HTTP:前后端的共同语言

1. 请求方法

方法 常见语义 注意
GET 查询 参数多在 Query;不应有副作用
POST 创建 / 提交 Body 常见 JSON
PUT / PATCH 全量 / 部分更新 约定要前后端一致
DELETE 删除

REST 是约定,不是协议强制;重要的是 团队对方法与路径的约定一致

2. 状态码(必须熟)

范围 含义 例子
2xx 成功 200 OK,201 Created,204 No Content
3xx 重定向 301/302,前端要理解是否跟随
4xx 客户端问题 400 参数错,401 未登录,403 无权限,404 不存在,409 冲突
5xx 服务端问题 500 异常,502/504 网关/上游超时

联调时先看状态码,再看 Body 里的业务 code

3. Header(头)里常见字段

请求侧

Header 作用
Content-Type Body 格式,如 application/json
Authorization 常放 Bearer <JWT>
Cookie 浏览器自动带上的会话信息
Accept 客户端期望的响应类型
Origin 浏览器跨域时自动带,后端 CORS 会用到

响应侧

Header 作用
Content-Type 响应体类型
Set-Cookie 让浏览器存 Cookie
Cache-Control / ETag 缓存
Access-Control-* CORS 相关
Location 重定向目标

4. Body 与编码

  • JSON:Content-Type: application/json; charset=utf-8
  • 表单:application/x-www-form-urlencodedmultipart/form-data(上传文件)
  • 中文乱码:多半是编码未统一成 UTF-8

5. 幂等与安全(后端必懂,前端要配合)

概念 含义 实践
幂等 同一请求执行多次,效果一样 支付、下单用 idempotencyKey
安全方法 GET 不应改数据 不要用 GET 做删除
重试 网络抖动可能重发 写操作要防重复

五、HTTPS 与 TLS(够排查即可)

HTTPS = HTTP + TLS。

开发相关:

  1. 证书过期 / 域名不匹配 → 浏览器报不安全,客户端 SSL 错误
  2. 本地自签证书 → 浏览器要信任,或开发环境继续用 HTTP
  3. 混合内容:HTTPS 页面不能随意请求 HTTP 接口(会被浏览器拦)
  4. Cookie 的 Secure:仅 HTTPS 发送

生产 API 应走 HTTPS;本地前后端可用 HTTP,但不要把「生产关 HTTPS」当常态。


六、跨域 CORS(前端高频、后端要配)

浏览器的同源策略:协议 + 域名 + 端口 都相同才算同源。

text 复制代码
前端 https://www.example.com
API   https://api.example.com
→ 不同源 → 跨域

简单理解

  1. 浏览器发现跨域,可能先发 OPTIONS 预检(Preflight)
  2. 后端需在响应里带 Access-Control-Allow-Origin 等头
  3. 若要带 Cookie:Allow-Credentials: true,且 Origin 不能是 *

开发常见解法

方案 做法
前端代理 Vite/Webpack proxy/api 转到后端,浏览器只访问同源
后端 CORS Spring CorsConfiguration 放行前端 Origin
网关统一 Nginx 统一加 CORS 头

注意:CORS 是 浏览器 限制;Postman / 服务端调服务端没有 CORS 问题。


七、Cookie、Session、Token

对比

方式 原理 注意
Cookie + Session 服务端存会话,浏览器存 SessionId 注意域名、Path、HttpOnlySameSite
JWT / Token 客户端存 Token,请求头携带 XSS 风险;过期与刷新策略
LocalStorage 存 Token 方便但易被 XSS 读 敏感场景更倾向 HttpOnly Cookie

SameSite(跨站 Cookie)

行为
Strict 跨站几乎不带 Cookie
Lax 常见默认,部分跨站导航会带
None 跨站可带,必须配 Secure

前后端分离 + 不同域名时,登录态问题多半出在 Cookie 域与 SameSite,而不是「后端没写 Session」。


八、缓存:浏览器与 HTTP 缓存

机制 作用
强缓存 Cache-Control: max-age=...,未过期直接用本地
协商缓存 ETag / Last-Modified,问服务器变了没
前端内存 / 状态缓存 Vue/React 里缓存接口结果,与 HTTP 缓存不同层

接口「改了数据页面还是旧的」:先看是不是被浏览器或 CDN 缓存了 GET。


九、反向代理、网关、负载均衡

生产常见:

text 复制代码
用户 → Nginx / API Gateway → 多台后端实例
组件 作用
反向代理 隐藏后端、TLS 终结、静态资源、路径转发
负载均衡 把请求分到多实例
网关 鉴权、限流、路由、协议转换

开发相关配置例子:

nginx 复制代码
location /api/ {
    proxy_pass http://127.0.0.1:8081/api/;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
}

后端若要根据「真实客户端 IP」或「是否 HTTPS」做逻辑,要读 X-Forwarded-*(并只信任自己的代理)。


十、WebSocket 与长连接(了解)

场景 协议
普通 CRUD HTTP 请求响应
聊天、推送、实时看板 WebSocket / SSE

WebSocket 也是先 HTTP 握手再升级;同样有跨域、鉴权、代理超时(Nginx 要调 proxy_read_timeout)问题。


十一、超时、重试、幂等(前后端都要约定)

超时分层

text 复制代码
浏览器 / axios timeout
    → Nginx proxy_read_timeout
        → 后端 MVC 超时
            → 调用 DB / Redis / 第三方的超时

任一层过短,都会表现为前端「请求失败」,但根因可能在更里层。

重试原则

  • GET / 查询:可谨慎重试
  • POST 支付、下单、抢券:必须幂等键或服务端去重,不能盲目重试

十二、前后端联调排查清单

按顺序查,少走弯路:

  1. URL 对不对 :协议、域名、端口、路径、是否多了 /api 前缀
  2. 服务在不在听Connection refused → 进程 / 端口 / 防火墙
  3. 是否跨域:浏览器控制台 CORS 红字 → 代理或后端 CORS
  4. 状态码:401 登录,403 权限,404 路径,500 看后端日志
  5. 请求头Content-TypeAuthorization 是否带上
  6. Body 格式:JSON 字段名、类型是否与后端 DTO 一致
  7. 环境不一致:本地通、测试不通 → DNS、网关、HTTPS、IP 白名单
  8. 抓包工具:浏览器 Network 面板、curl、Charles / Wireshark(深挖时)

前端 Network 面板必看四列:Status、Headers、Payload、Response


十三、后端还要多懂一点「内网」

浏览器到 API 是公网/办公网;服务内部还有:

组件 默认端口(常见) 协议感
MySQL 3306 TCP
Redis 6379 TCP
RabbitMQ 5672 / 管理台 15672 AMQP / HTTP
Milvus 19530 gRPC

内网也要关心:超时、连接池、服务发现、防火墙、容器网络(host.docker.internal、Docker Compose 服务名)。

gRPC 与 HTTP 不同,但同样跑在 TCP 上;调不通时先确认端口映射与进程健康,再查应用层。


十四、学习优先级建议

前端优先

  1. URL / 同源 / CORS
  2. HTTP 方法、状态码、Header
  3. Cookie / Token / Authorization
  4. 浏览器 Network 排查
  5. HTTPS 混合内容、代理
  6. 缓存与上传下载

后端优先

  1. TCP 连接与超时、端口监听
  2. HTTP 语义、状态码设计、幂等
  3. 反向代理与 X-Forwarded-*
  4. CORS 正确配置
  5. TLS 证书与安全头
  6. 与 DB/Redis/MQ 的超时与连接管理

双方共同

  • 接口契约(路径、方法、状态码、错误体)
  • 环境与配置(dev / test / prod 基地址)
  • 超时与重试策略写进文档

十五、一句话对照表

现象 优先怀疑
ERR_CONNECTION_REFUSED 端口错 / 服务未启动
CORS 报错 跨域未配 / 预检失败
401 Token / Cookie / 登录态
403 权限角色
404 路径或网关转发
502/504 网关后上游挂了或超时
本地 Postman 通、浏览器不通 多半 CORS 或 Cookie
有时成功有时失败 超时、负载、重试无幂等

小结

前后端需要的网络知识,核心不是背协议字段,而是能回答:

  1. 请求从浏览器走到哪一层?
  2. 断在 DNS、TCP、TLS 还是 HTTP?
  3. 跨域、登录态、缓存、代理分别在哪一层生效?
  4. 超时与重试会不会制造重复写?

HTTP + 跨域 + 认证携带方式 + 代理与超时 吃透,日常联调与排障就够用了;其余(拥塞控制、详细路由算法等)等做基础设施时再加深。

相关推荐
砚凝霜1 天前
软考网络工程师|第 1 章 计算机网络基础 完整备考笔记
网络·笔记·计算机网络
TechEdu2026061 天前
[计算机科学]计算机网络原理
计算机网络·计算机科学
谙弆悕博士2 天前
系统集成项目管理工程师教程(第3版)笔记——第2章:信息技术发展
笔记·计算机网络·信息安全·学习方法·业界资讯·软考·系统分析师
ttod_qzstudio2 天前
【软考备考】计算机网络详解:OSI/TCP-IP 分层 + IP 子网划分,一篇拿下网络模块(附 10 道练习)
网络·tcp/ip·计算机网络·软考
2301_808414382 天前
计算机网络基础
计算机网络
Lhappy嘻嘻2 天前
网络(四)|全网最细网络层原理:IP 协议、IP 地址分类、子网划分、路由转发、NAT 穿透详解
java·笔记·网络协议·计算机网络
儒雅的烤地瓜4 天前
计算机网络 | 网络诊断双刃剑:Tracert路由追踪实战与Windows防火墙端口配置指南
tcp/ip·计算机网络·wireshark·防火墙·powershell·cmd
2501_915106325 天前
TraceEagle 代理抓包教程 本机和手机的 HTTPS 抓包方法
网络协议·计算机网络·网络安全·ios·adb·https·udp
大草原的小灰灰7 天前
计算机网络与TCP/IP参考模型
tcp/ip·计算机网络