ETH · Linux 协议栈、观测与端口账
以太网与协议栈
所有网络问题的地基。先把地图和口径立起来:一次访问经过哪些角色,带宽、延迟、PPS 三个指标怎么算,二层三层各管什么;然后上手把命令敲一遍、接一台真出问题的机器、算一次接入网端口账;最后再回头拆开协议栈,看那些计数器究竟来自内核里的哪一段。
3 个小组 · 9 节课 · 约 4 小时已完成 0/9
Section 1
概念:先建立地图
3 节 · 80 分钟一次访问经过哪些角色、指标怎么算、二层三层各管什么 —— 先有词汇表,再谈别的。
- 1
从一次 curl 说起:网络到底是什么
原理入门25m不谈调优、不谈参数。用一条命令把 DNS、TCP、TLS、HTTP 串起来,顺手把后面要用的名词认全。
- 说出一次 curl 背后依次发生的五件事,以及各自可能在哪一步失败
- 认识 MAC / IP / 端口 / 网关 / DNS / MTU / RTT 这几个后面天天出现的名词
- 知道自己该按哪条路线学下去,以及哪些内容现在可以先跳过
- 2
带宽、延迟、PPS:三个指标与必背换算
原理入门25mGbps 与 GB/s 差 8 倍,小包场景真正的瓶颈是 PPS 不是带宽。这节把口径统一。
- 在 Gbps、GB/s、PPS 之间快速换算,并算出线速下的理论 PPS
- 判断一个场景到底受带宽限制还是受 PPS / 延迟限制
- 用带宽延迟积(BDP)解释为什么长肥管道跑不满
- 3
二层与三层:ARP、VLAN、子网与转发
原理入门30m交换机怎么决定往哪个口发,路由器怎么决定下一跳,以及同网段与跨网段的区别。
- 解释 ARP 的作用,并说出 ARP 表异常会造成什么现象
- 看懂 CIDR 前缀,快速算出可用地址数与广播域大小
- 读懂一台 Linux 主机的路由表并预测某个目的地址走哪条路
Section 2
实践:动手看真实的网络
3 节 · 90 分钟工具认全,接一台真出问题的机器,再算一次接入网的端口与收敛比。
- 4
网络观测工具箱:ss、ethtool、tcpdump、nstat
原理30m一套固定顺序的命令清单,让你在陌生机器上十分钟内摸清网络状态。
- 按接口、连接、协议栈、丢包四个维度各挑一条命令快速体检
- 用 tcpdump 精确抓到目标流量而不是抓一堆无关包
- 看懂 ethtool -S 和 nstat 里最常用的那几个计数器
- 5
闯关:一台"网络慢"的机器
闯关25m报障只有两个字"网慢"。在模拟终端里按路径逐层收敛,找出真正的原因。
- 面对模糊报障,按固定顺序收敛而不是乱猜
- 从计数器里读出丢包发生在哪一层
- 给出一个能验证的结论,而不是"网络有问题"
- 6
以太网规划:Spine-Leaf 端口账与收敛比
规划35m给定节点数和网卡规格,算出需要几台 leaf、几台 spine、多少线缆、收敛比多少。
- 独立算出一套 Spine-Leaf 的交换机数量与线缆数量
- 解释收敛比的含义并判断某个取值是否可接受
- 看出配置里真正的瓶颈资源在哪一层
Section 3
原理:再拆开协议栈
3 节 · 95 分钟前面敲过的那些计数器,来自内核里的哪一段 —— 从 send() 到网线,逐层讲清楚。
- 7
一个包的旅程:从 send() 到网线
原理30m把发包和收包路径拆成可观测的若干段,后面所有排障都是在这条路径上定位。
- 说出发包路径上的关键环节:socket 缓冲、qdisc、驱动环形队列、DMA
- 说出收包路径上的关键环节:DMA、硬中断、软中断/NAPI、协议栈、socket 队列
- 拿到一个丢包现象时,知道该去哪一层查计数器
- 8
TCP 的脾气:握手、窗口、拥塞与重传
原理30m为什么带宽没跑满却觉得慢?多半是窗口、重传和排队在起作用。
- 解释拥塞窗口、接收窗口、慢启动与拥塞避免的关系
- 区分快速重传与超时重传,判断哪种对业务危害更大
- 判断重传率、RTT、缓冲区膨胀(bufferbloat)三类症状
- 9
内核网络栈调优:中断、队列与 offload
原理深入35m同一张网卡,配置对不对能差出几倍性能。这节讲能动的旋钮和动的理由。
- 解释 RSS / RPS / RFS 各自解决什么问题
- 判断该不该开 GRO / LRO / TSO / checksum offload
- 按症状选择调整环形队列、中断合并还是 CPU 亲和性