4. 网络协议与配置:TCP/IP、HTTP、DNS、负载均衡、网络故障排查
4.1 知识结构速查
| 协议/概念 | 核心作用 | 面试高频考点 | 排查要点 |
|---|---|---|---|
| TCP/IP 四层模型 | 网络通信分层(链路→网络→传输→应用) | 三次握手 / 四次挥手 / 首部字段 | 抓包分析 TCP 状态(SYN, ACK, FIN) |
| HTTP / HTTPS | 超文本传输协议 / 加密版本 | 请求方法 / 状态码 / 缓存机制 | curl 调试、查看响应头 |
| DNS | 域名 → IP 解析 | 递归与迭代 / 劫持与污染 | nslookup / dig 检查响应 |
| 负载均衡 | 流量分发(轮询、最小连接、IP Hash) | 常用算法 / 四层 vs 七层 | 查看 upstream 配置、日志 |
| 故障排查 | 从底层到应用层逐层定位 | ping / traceroute / netstat / ss / curl | 按 OSI 模型逐层排除 |
4.2 面试问答卡片
面试问题:请描述 TCP 三次握手的过程。
面试官考察点:是否理解 TCP 可靠性建立连接的本质,能否准确描述 SYN、ACK 状态转换。
回答框架:客户端 → 服务端:SYN → 服务端 → 客户端:SYN+ACK → 客户端 → 服务端:ACK。
简洁示例回答(60-100字):第一次握手:客户端发送 SYN(seq=x)到服务端,进入 SYN_SENT;第二次:服务端收到后回复 SYN+ACK(ack=x+1, seq=y),进入 SYN_RCVD;第三次:客户端收到后发送 ACK(ack=y+1),进入 ESTABLISHED;服务端收到后也进入 ESTABLISHED。此时连接建立。
可能追问:为什么需要三次握手,两次行不行?半连接队列是什么?SYN 泛洪攻击如何防范?
面试问题:浏览器输入 URL 后发生了哪些网络步骤?
面试官考察点:全链路理解能力(DNS→TCP→HTTP→渲染),能否串联常见协议。
回答框架:输入 URL → DNS 解析(缓存→递归/迭代)→ 建立 TCP 连接(三次握手)→ 发送 HTTP 请求 → 服务端响应 → 浏览器解析渲染。
简洁示例回答(60-100字):首先浏览器检查缓存,若无则进行 DNS 解析获取 IP。随后与服务器建立 TCP 连接(三次握手)。然后发送 HTTP GET 请求,服务器返回 HTML。浏览器解析 HTML、CSS 并渲染页面。如果请求 HTTPS,还需完成 TLS 握手。
可能追问:DNS 递归和迭代的区别?HTTP/2 和 HTTP/1.1 的区别?浏览器如何缓存?
面试问题:什么是 DNS 劫持?如何排查和防范?
面试官考察点:安全意识、排查工具(dig/nslookup)、对运营商劫持等场景的理解。
回答框架:定义(解析结果被篡改)→ 识别(对比预期 IP)→ 排查(抓包/dig)→ 防范(使用 DoH/DoT、修改本地 hosts)。
简洁示例回答(60-100字):DNS 劫持是指中间人将域名解析到错误 IP,常见于运营商或路由器。排查使用 `dig @114.114.114.114 <域名>` 与预期 IP 对比;或抓包看 DNS 响应。防范可配置 DNSSEC、使用 8.8.8.8 或 HTTPS DNS。
可能追问:如何验证自己的 DNS 是否被劫持?DNSSEC 的原理?
4.3 追问路径图:TCP 三次握手深入
ss -tlnp 观察 TCP 状态,用 tcpdump 抓包验证三次握手,加深记忆。