4. 网络基础与故障排查:TCP/IP协议栈、DNS解析、网络延迟、丢包分析

本章聚焦网络故障排查的分层思维与工具链,覆盖TCP/IP协议栈核心细节、DNS解析异常、网络延迟及丢包根因定位。掌握从现象到根因的闭环回答逻辑,是高级运维面试的必考点。

定位现象 延迟/丢包/DNS失败 分层排查 应用→传输→网络→链路 工具取证 ping/ss/tcpdump/dig 根因分析 拥塞/配置/路由/硬件 解决并验证 调优/配置/限速/替换 ⚠️ 始终从现象分层定位,避免直接跳到配置层
💡 加分点提示:回答故障排查时,主动提及对称性测试(双向延迟对比)和分层排除法(从链路层向上验证),能体现系统化思维。

面试问答卡片

📌 面试问题

请描述TCP三次握手与四次挥手的过程,以及可能出现的问题。

🎯 面试官考察点

  • 对TCP状态机的理解程度
  • 是否了解半连接队列、TIME_WAIT等生产问题
  • 能否结合抓包工具说明异常场景

📐 回答框架

先画三次挥手/四次握手流程图 → 说明每个状态转化 → 举例常见问题(如SYN Flood、大量TIME_WAIT) → 给出调整参数或配置方案(tcp_tw_reuse、syn_backlog)

💬 简短示例回答

三次握手:客户端发SYN,服务端回复SYN+ACK,客户端再发ACK。大量TIME_WAIT时可通过调整net.ipv4.tcp_tw_reuse和tcp_tw_recycle缓解,但需注意NAT环境下的兼容性。生产中还遇到过SYN队列满导致请求超时,需增大net.core.somaxconn。

🔍 可能追问

  • 关闭连接时为什么需要四次?可以合并为三次吗?
  • 服务端出现大量CLOSE_WAIT是什么原因?怎么排查?
⚠️ 避坑提醒:不要直接背诵状态迁移图,要结合抓包(tcpdump)和/proc/net/tcp数据说明;避免说“tcp_tw_recycle已经废弃”而说不出替代方案。

📌 面试问题

如何诊断网络延迟和丢包?请举例说明。

🎯 面试官考察点

  • 延迟与丢包的区分能力(重传 vs 超时)
  • 工具链使用熟练度(mtr、tcpdump、Wireshark)
  • 是否具备端到端排查思维

📐 回答框架

先用ping+端测判断是单向还是双向延迟 → 用mtr逐跳确认丢包点 → 若mtr正常则用tcpdump抓TCP重传包 → 分析重传间隔判断是网络拥塞还是应用层超时 → 最后检查交换机端口统计、缓冲区溢出。

💬 简短示例回答

一次生产延迟排查:用户反馈接口响应慢。第一步ping显示延迟正常,但curl耗时长达3秒。tcpdump发现大量TCP Dup ACK,确认存在30%丢包。用mtr定位到某一跳交换机丢包,最终排查是上行带宽打满导致排队。通过限速和扩容解决。

🔍 可能追问

  • 如何区分网络层丢包和传输层重传导致的丢包?
  • ping通但业务慢,可能是什么原因?
⚠️ 避坑提醒:避免仅依赖ping结果判断网络质量,ping ICMP可能被限速;必须同时检查TCP重传率和ss -i显示的重传计数。

📌 面试问题

DNS解析故障排查步骤有哪些?

🎯 面试官考察点

  • DNS体系理解(递归/迭代、缓存、TTL)
  • 故障定位分为客户端、服务端、中间网络
  • 是否掌握dig/nslookup高级用法

📐 回答框架

先验证本地DNS配置(/etc/resolv.conf) → 用dig+@指定上游服务器确认解析是否正常 → 若正常则检查本地DNS缓存(nscd/dnsmasq) → 若异常则排查上游DNS可达性(udp 53端口) → 最后检查域名的NS授权记录和TTL设置。

💬 简短示例回答

一次业务域名解析超时:dig +trace显示根服务器正常,但权威服务器无响应。检查防火墙发现udp 53包被丢弃。放行后恢复。对内部域名,还需排查内网DNS的forwarder配置和缓存过期策略。

🔍 可能追问

  • DNS劫持或污染如何快速判断?
  • CDN场景下DNS解析返回多个IP怎么选择?
⚠️ 避坑提醒:不要只ping DNS服务器IP判断,要测试udp 53端口连通性;避免忽略本地DNS缓存导致的“假成功”问题。

项目案例模板

📁 项目名称:电商大促期间网络延迟与丢包专项排查

业务背景双11大促,某模块订单提交成功率从99.9%骤降至95%,用户侧报接口超时。
规模指标峰值10万QPS,500台应用服务器,2个数据中心。
技术栈Linux 5.10, iptables, tcpdump, Wireshark, BGP, 交换机组网
核心难点突发流量导致接入层交换机端口buffer溢出,TCP重传率达15%;初期流量镜像误以为是应用层慢查询。
面试高频追问
  • 如何从应用层指标反推网络层问题?(答:先查RT和错误率,再用tcpdump确认重传)
  • 交换机丢包如何定位具体端口?(答:通过mtr逐跳确认丢包节点,上联端口查ifconfig errors)
  • 为什么ping的丢包率远低于TCP重传率?(答:ICMP被配置了高优先级队列)
可迁移回答话术 “当时我们首先通过业务指标(RT上升)触发告警,然后分层排查:应用层通过接口日志排除应用逻辑,传输层用tcpdump抓包确认大量TCP重传,网络层用mtr定位到交换机端口丢包。最终通过启用流量整形和调整交换机缓冲池参数解决。这套方法同样适用于数据库连接池超时、跨机房同步延迟等场景。”