计算机网络常见面试题
→ 返回 面试
OSI/TCP 模型、TCP/HTTP/HTTPS 为后端面试高频。详解 计算机网络。
网络模型
| 模型 | 层 | 典型协议 |
|---|---|---|
| TCP/IP 四层 | 链路 / 网络 / 传输 / 应用 | Ethernet / IP / TCP·UDP / HTTP |
| OSI 七层 | … | 了解即可 |
封装:应用数据 → TCP 段 → IP 包 → 以太网帧。
TCP vs UDP
| TCP | UDP | |
|---|---|---|
| 连接 | 面向连接 | 无连接 |
| 可靠性 | 可靠、有序 | 可能丢、乱序 |
| 开销 | 大(握手、确认、重传) | 小(8 字节头) |
| 场景 | HTTP、MySQL、RPC | DNS、视频、游戏、QUIC |
三次握手
客户端 ── SYN(seq=x) ──────────────► 服务端
客户端 ◄─ SYN+ACK(seq=y,ack=x+1) ── 服务端
客户端 ── ACK(ack=y+1) ───────────► 服务端 [ESTABLISHED]
为何三次:确认双方收发能力;防止历史 SYN 被当成新连接。
为何不是两次:服务端无法确认客户端收到了自己的 SYN-ACK。
SYN Flood:伪造 SYN 占半连接队列 → syncookie、限速、WAF。
四次挥手
A ── FIN ──► B
A ◄─ ACK ── B
A ◄─ FIN ── B
A ── ACK ──► B
A 进入 TIME_WAIT(2MSL)
为何四次:TCP 全双工,关闭需两个方向各发 FIN。
TIME_WAIT:保证最后 ACK 可达;让旧报文消散。短连接过多会占端口 → tcp_tw_reuse、长连接、连接池。
可靠传输(TCP)
| 机制 | 作用 |
|---|---|
| 序列号 / 确认号 | 有序、丢包重传 |
| 超时重传 | RTT 估算 |
| 滑动窗口 | 流量控制(接收方能力) |
| 拥塞控制 | 慢开始、拥塞避免、快重传/快恢复 |
HTTP 常考
| 问题 | 简答 |
|---|---|
| GET vs POST | GET 幂等、参数在 URL;POST 非幂等、有 Body(语义,非绝对) |
| 幂等 | GET/PUT/DELETE 设计上幂等;POST 否 |
| 状态码 | 200 成功;301/302 重定向;304 缓存;401 未认证;403 无权限;404 不存在;502 网关上游错;503 不可用 |
| 无状态 | 服务端不记会话;Session/Cookie/JWT 在应用层补状态 |
HTTP 版本
| 版本 | 要点 |
|---|---|
| 1.0 | 短连接 |
| 1.1 | Keep-Alive;队头阻塞 |
| 2 | 二进制帧、多路复用、HPACK 头压缩 |
| 3 | QUIC(UDP),无 TCP 队头阻塞 |
队头阻塞:HTTP/1.1 同一连接请求排队;HTTP/2 单连接多流但 TCP 层仍可能阻塞;HTTP/3 用 QUIC 解决。
HTTPS
HTTP over TLS
① TCP 握手
② TLS 握手(证书、密钥协商)
③ 加密 HTTP
| 点 | 说明 |
|---|---|
| 证书 | CA 签发,防中间人 |
| 对称加密 | 传数据(AES) |
| 非对称 | 握手阶段交换密钥(RSA/ECDHE) |
| TLS 1.3 | 更少往返、更安全套件 |
DNS(简)
域名 → IP;递归 + 迭代查询;本地缓存 → 根 → TLD → 权威。见 DNS。
前后端认证(简)
Cookie-Session、JWT、CSRF、跨域 CORS — 见 前后端交互、SpringBoot常见面试题。
常见面试题
Q:输入 URL 到页面展示?
A:DNS → TCP → TLS(HTTPS) → HTTP 请求 → 解析 HTML → 拉资源 → 渲染(可简答各层)。
Q:TCP 和 HTTP 关系?
A:HTTP 是应用层协议,默认跑在 TCP 上;HTTP/3 跑 QUIC(UDP)。
Q:长连接 vs 短连接?
A:HTTP/1.1 Keep-Alive 复用 TCP;减少握手开销。
Q:零拷贝?
A:见 零拷贝。