重点考点:

  1. TCP/IP 基础

    • 三次握手、四次挥手
    • TCP vs UDP
    • 滑动窗口、重传、流量控制、拥塞控制
    • TIME_WAITCLOSE_WAIT
  2. IP 与路由基础

    • IP、子网掩码、CIDR
    • 网关、路由转发
    • ARP、MAC、二层/三层通信
  3. DNS

    • 域名解析过程
    • 递归查询与迭代查询
    • K8s CoreDNS、Service 域名解析
  4. HTTP/HTTPS

    • HTTP 常见方法、状态码
    • HTTPS 握手过程
    • 证书、对称/非对称加密
  5. NAT 与端口

    • SNAT、DNAT、PAT
    • NodePort / ClusterIP / LoadBalancer 背后的网络映射逻辑
    • 端口、连接四元组
  6. 负载均衡与转发

    • 四层负载均衡 vs 七层负载均衡
    • LVS / IPVS / iptables 基本思想
    • 正向代理、反向代理
  7. K8s 网络关联点

    • Pod 间通信为什么要求“扁平网络”
    • Service 如何转发到 Pod
    • Ingress 工作在第几层
    • CNI、Overlay/Underlay
Q1:TCP 三次握手和四次挥手分别是怎样的?为什么建立连接需要三次,断开连接需要四次?
  • 核心要点

    • 三次握手:
      • 客户端发送 SYN
      • 服务端回复 SYN + ACK
      • 客户端回复 ACK
    • 目的:
      • 确认双方收发能力正常
      • 确认双方初始序列号
    • 四次挥手:
      • 主动关闭方发 FIN
      • 被动关闭方回 ACK
      • 被动关闭方处理完数据后再发 FIN
      • 主动关闭方回 ACK
    • 因为 TCP 是全双工,两个方向都要单独关闭,所以通常需要四次
  • 易错点

    • 把三次握手的目的只说成“防止历史连接”
    • 说“四次挥手一定是四次”,实际上在特殊情况下 ACKFIN 可合并
    • 分不清 TIME_WAITCLOSE_WAIT
  • 深挖点

    • 为什么不是两次握手:无法可靠确认服务端的发送能力和客户端的接收能力
    • 为什么主动关闭方会进入 TIME_WAIT
    • TIME_WAIT 过多会带来什么问题,如何分析

Q2:TCP 和 UDP 的区别是什么?K8s/运维场景下分别常见在哪些地方?
  • 核心要点

    • TCP:
      • 面向连接
      • 可靠传输
      • 有序、重传、流量控制、拥塞控制
    • UDP:
      • 无连接
      • 尽最大努力交付
      • 开销小、时延低
    • 常见场景:
      • TCP:HTTP/HTTPS、MySQL、SSH、API Server
      • UDP:DNS(常见查询)、流媒体、监控上报、某些服务发现协议
  • 易错点

    • 说 UDP “不可靠所以没用”
    • 说 DNS 只用 UDP,实际上也可能使用 TCP
    • 说 TCP 一定比 UDP 慢,实际取决于业务场景
  • 深挖点

    • DNS 为什么通常用 UDP,什么情况下改用 TCP
    • QUIC 为什么基于 UDP 实现可靠传输
    • K8s 探针、服务访问链路里哪些通常走 TCP

Q3:访问一个网站时,从输入 URL 到页面返回,中间经历了哪些网络过程?
  • 核心要点

    • 浏览器解析 URL
    • DNS 解析得到 IP
    • 根据路由表决定下一跳
    • 如果不知道目标 MAC,先发 ARP
    • 建立 TCP 连接
    • 如果是 HTTPS,再进行 TLS 握手
    • 发送 HTTP 请求
    • 服务端返回响应
    • 浏览器渲染页面
  • 易错点

    • 漏掉 DNS、ARP、TLS
    • 把“路由”和“DNS”混为一谈
    • 认为数据是直接从应用层传到网卡,中间忽略传输层/网络层封装
  • 深挖点

    • 如果浏览器、本机、DNS 服务器都有缓存,会如何变化
    • HTTPS 比 HTTP 多了哪些步骤
    • 在 K8s 中访问 Service 域名时,CoreDNS 起什么作用

Q4:ARP 是什么?为什么同网段通信需要 ARP,跨网段通信又是怎样的?
  • 核心要点

    • ARP:通过 IP 地址解析目标 MAC 地址
    • 同网段通信:
      • 主机判断目标 IP 与自己是否同网段
      • 同网段则直接 ARP 目标主机 MAC
    • 跨网段通信:
      • 先把包发给默认网关
      • ARP 获取的是网关 MAC,而不是最终目标主机 MAC
  • 易错点

    • 以为 ARP 是“根据域名找 IP”
    • 以为跨网段时能直接 ARP 到远端机器
    • 分不清 IP 地址和 MAC 地址各自作用
  • 深挖点

    • ARP 欺骗原理
    • 为什么交换机主要看 MAC,路由器主要看 IP
    • 在云环境和容器网络中 ARP 广播为什么值得关注

Q5:什么是子网掩码、CIDR 和网关?你如何判断两个 IP 是否在同一个网段?
  • 核心要点

    • 子网掩码用于区分网络位和主机位
    • CIDR 如 192.168.1.0/24
    • 判断是否同网段:
      • IP 与子网掩码按位与
      • 比较结果是否属于同一个网络地址
    • 网关是跨网段通信的出口
  • 易错点

    • /24 理解成“有 24 个 IP”
    • 不清楚可用主机数如何计算
    • 不知道为什么 K8s 常见 Pod 网段、Service 网段不能冲突
  • 深挖点

    • 为什么 Pod CIDR、Node 所在网段、Service CIDR 冲突会出问题
    • 叠加网络中 CIDR 规划不合理会造成什么后果
    • 路由汇总的意义是什么

Q6:DNS 的解析过程是怎样的?K8s 里 Pod 访问 Service 名称时发生了什么?
  • 核心要点

    • 本地先查浏览器缓存、系统缓存、hosts
    • 再请求本地 DNS 解析器
    • DNS 递归/迭代查询,最终拿到记录
    • K8s 中通常由 CoreDNS 提供集群内解析
    • Pod 访问 service-name.namespace.svc.cluster.local 时,会解析到 Service 的 ClusterIP
  • 易错点

    • 分不清递归查询和迭代查询
    • 认为 DNS 一定只返回一个 IP
    • 认为 Service 域名直接解析到某个 Pod IP,实际上常见情况先到 ClusterIP
  • 深挖点

    • headless service 为什么会直接返回 Pod IP
    • CoreDNS 异常时会出现什么现象,怎么排查
    • DNS 缓存导致发布不生效如何处理

Q7:HTTP 和 HTTPS 的区别是什么?HTTPS 为什么更安全?
  • 核心要点

    • HTTP 明文传输
    • HTTPS = HTTP + TLS
    • HTTPS 提供:
      • 加密
      • 完整性校验
      • 身份认证
    • TLS 握手中会使用:
      • 非对称加密:协商密钥、验证身份
      • 对称加密:实际数据传输
  • 易错点

    • 说 HTTPS “全程都用非对称加密”
    • 说有 HTTPS 就绝对安全
    • 把数字证书和 CA 的作用说不清楚
  • 深挖点

    • TLS 握手的简化流程
    • 为什么对称加密适合传输数据
    • Ingress TLS 终止是什么意思

Q8:什么是 NAT?SNAT 和 DNAT 有什么区别?它们在 K8s 中有哪些典型应用?
  • 核心要点

    • NAT:网络地址转换
    • SNAT:修改源地址
      • 常见于内网主机访问外网
    • DNAT:修改目标地址
      • 常见于外部流量访问内网服务
    • K8s 典型场景:
      • Pod 出网可能涉及 SNAT
      • Service 转发、NodePort、Ingress 访问可能涉及 DNAT
  • 易错点

    • 把 SNAT 和 DNAT 方向说反
    • 不知道端口映射本质上也是 NAT 的一种
    • 以为 NodePort 只是“监听了一个端口”,没理解背后的转发关系
  • 深挖点

    • kube-proxy 用 iptables 或 IPVS 时,流量是怎么改写的
    • 为什么有时客户端真实 IP 会丢失
    • externalTrafficPolicy=Local 有什么意义

Q9:四层负载均衡和七层负载均衡有什么区别?在 K8s 中分别对应什么组件或场景?
  • 核心要点

    • 四层负载均衡:
      • 基于 IP + 端口
      • 工作在传输层
      • 不关心具体 HTTP 内容
    • 七层负载均衡:
      • 基于 URL、Host、Header、Cookie 等
      • 工作在应用层
    • K8s 常见对应:
      • Service 更偏四层
      • Ingress 更偏七层
  • 易错点

    • 说 Ingress 就是“负载均衡器”
    • 把反向代理和负载均衡完全等同
    • 不知道 Service 主要解决服务发现和转发问题
  • 深挖点

    • LVS、Nginx、Envoy 分别偏哪一层
    • 为什么七层更灵活但开销更大
    • 网关、Ingress Controller、Service 三者关系

Q10:K8s 为什么强调“每个 Pod 都有独立 IP,并且 Pod 之间可以直接通信”?这和传统 Docker 网络有什么差异?
  • 核心要点

    • K8s 网络模型核心要求:
      • 每个 Pod 有独立 IP
      • Pod 间无需 NAT 可直接通信
      • Node 与 Pod 之间可直接通信
    • 这样做便于:
      • 服务发现
      • 统一寻址
      • 简化应用配置
    • 依赖 CNI 实现,如 Calico、Flannel、Cilium 等
  • 易错点

    • 以为 Pod 和容器是一一对应的网络概念
    • 把 Docker bridge 网络经验直接套到 K8s
    • 不理解 Overlay 和 Underlay 的区别
  • 深挖点

    • Overlay 网络为什么会有额外封装
    • Calico BGP 模式和 VXLAN 模式的区别
    • 网络策略(NetworkPolicy)工作在哪一层

三、速记笔记

  • 三次握手:确认双方收发能力 + 同步序列号
  • 四次挥手:TCP 全双工,两个方向分别关闭
  • TCP:可靠、有序、面向连接
  • UDP:无连接、开销小、速度快
  • ARP:IP 找 MAC
  • 同网段:直接找目标 MAC
  • 跨网段:先发给网关 MAC
  • CIDR:如 /24 表示网络位长度
  • DNS:域名 -> IP,K8s 内通常靠 CoreDNS
  • HTTP vs HTTPS:HTTPS 多了 TLS,加密 + 认证 + 完整性
  • SNAT:改源地址,常见于出网
  • DNAT:改目标地址,常见于入站转发
  • Service:更偏四层转发
  • Ingress:更偏七层路由
  • K8s 网络模型:Pod 有独立 IP,Pod 间可直接通信
  • 排障高频关键词:
    • ping
    • traceroute
    • nslookup/dig
    • netstat/ss
    • tcpdump
    • iptables
    • ip route