4. 网络协议与配置:TCP/IP、HTTP、DNS、负载均衡、网络故障排查

章节目标:掌握 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 泛洪攻击如何防范?

避坑提醒:不要混淆 seq 和 ack 的数值关系,避免说“三次握手后双方确认”等模糊表达。

面试问题:浏览器输入 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 的区别?浏览器如何缓存?

加分点:主动提到 CDN 节点、Keep-Alive、Cookie 携带等细节,体现广度。

面试问题:什么是 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 的原理?

避坑提醒:不要只答理论,要说出具体命令(dig +short)和对比结果的方法,体现动手能力。

4.3 追问路径图:TCP 三次握手深入

TCP 三次握手面试追问路径 为什么需要三次握手? 半连接队列是什么? SYN Flood 攻击原理? TCP 状态如何查看? Linux 内核参数优化 如何启用 SYN Cookie? 面试中逐步深入,展示对 TCP 可靠性机制的深度理解
复习建议:结合 ss -tlnp 观察 TCP 状态,用 tcpdump 抓包验证三次握手,加深记忆。