2. 网络基础:OSI模型与TCP/IP协议栈回顾

做网络故障排查,尤其是“Link Up但Ping不通”这种场景,你脑子里得有一张清晰的网络地图。这张地图就是分层模型。我个人习惯,遇到任何连通性问题,第一件事先定层——问题出在第几层?是物理链路、还是网络协议、还是应用配置?模型不乱,排查才有方向。

你想想看,如果没有分层思想,面对一根线缆、一堆IP、一堆端口,你根本不知道从哪下手。我早年刚入行时,就吃过这个亏——对着路由表盯了半天,最后发现是网线插错了端口。嗯,那次之后我就老老实实把OSI模型背下来了。

2.1 为什么我们需要分层模型?

分层本质上是“分而治之”。每一层只关注自己的职责,向上提供标准接口,向下调用邻居服务。这样好处很明显:

  • 解耦 – 更换物理介质不影响上层协议(比如从铜缆换光纤,TCP不用改)
  • 标准化 – 不同厂商的设备只要遵守层间接口就能互通
  • 故障隔离 – 你只需要怀疑某一层,不用全部重查

我在项目中遇到过好几次这种情况:应用层明明报“网络不可达”,结果抓包发现ARP请求根本没发出去——那是数据链路层的问题。如果不懂分层,你可能会去调应用超时参数,白白浪费时间。

2.2 OSI七层模型

OSI七层模型是理论上的完美参考,虽然实际网络没完全按它实现,但它是理解网络通信的“通用语言”。下面的表格帮你快速回顾每一层干了什么:

层数 名称 核心功能 常见协议/设备
7 应用层 为用户应用提供网络服务 HTTP, FTP, DNS
6 表示层 数据编码、加密、压缩 SSL/TLS, JPEG
5 会话层 建立、管理、终止会话 NetBIOS, RPC
4 传输层 端到端通信、可靠传输 TCP, UDP
3 网络层 路由选择、逻辑寻址 IP, ICMP, ARP
2 数据链路层 帧封装、MAC寻址、差错检测 Ethernet, PPP, Switch
1 物理层 比特流传输、电/光信号 RJ45, 光纤, Hub
我的小技巧: 排查时,从低到高逐层检查。先看物理层(Link灯亮吗?),再看数据链路层(MAC表对吗?),然后网络层(IP是否可达?)。我曾经用这个方法,五分钟定位到一个防火墙策略阻挡了ICMP的案例——问题出在网络层,不是物理层。

2.3 TCP/IP四层模型

现实世界跑的是TCP/IP协议栈,它把OSI七层压缩成了四层。说实话,面试时背OSI,干活时用TCP/IP。两者的对应关系一定要记清楚:

TCP/IP层 对应OSI层 典型协议
应用层 应用层 + 表示层 + 会话层 HTTP, FTP, DNS, SSH
传输层 传输层 TCP, UDP
网络层 网络层 IP, ICMP, ARP
网络接口层 数据链路层 + 物理层 Ethernet, WiFi, PPP

注意:ARP虽然工作在IP地址和MAC地址之间,但从分层角度看它属于网络层(3层),因为它封装在以太帧中,但主要功能是地址解析。我见过不少同事把ARP当成二层协议,其实不准确——它同时在二层和三层之间游走。这个细节在故障排查中很关键。

2.4 数据封装与解封装

为什么你Ping通但收不到回复?原因可能藏在封装过程里。数据从应用层一路向下,每经过一层都要加上该层的头部(有些还有尾部)。比如HTTP数据交给TCP加上TCP头,再交给IP加上IP头,最后以太网加上MAC头和FCS尾。对端接收时再从下往上解封装。

我曾经排查过一个诡异问题:链路状态Up,ARP也能解析,但Ping就是不通。后来抓包发现,IP分片后对端重组失败,因为防火墙丢弃了分片包。这就是网络层封装出的问题。你想想看,如果不理解封装,你根本想不到去查分片偏移量吧?

重点笔记:
- 数据从上层向下层传递时,每层添加头部(封装)
- 数据从下层向上层传递时,每层剥除头部(解封装)
- 故障排查时,可以通过抓包工具(如Wireshark)查看每一层的头部信息,快速定位出问题的层级
避坑指南:
我曾经因为不懂封装顺序,在MTU超过1500的场景下直接配置了ICMP不可达,结果丢包。记住:MTU检查是在网络层(IP)之前,数据链路层(以太网)之后。调MTU时要同时考虑两层头部的开销。

下面的SVG图把OSI七层和TCP/IP四层的对应关系画了出来,还展示了封装与解封装的数据流向。建议你仔细看看,以后排查时脑子里就能自动浮现这张图。

OSI七层模型 ↔ TCP/IP四层模型 及数据封装流程 7 应用层 6 表示层 5 会话层 4 传输层 3 网络层 2 数据链路层 1 物理层 应用层 HTTP · DNS · FTP 传输层 网络层 网络接口层 发送方:封装(加头部) 接收方:解封装(剥头部) 链路Up但Ping不通 → 检查各层封装 数据流↓

当你面对“Link Up但Ping不通”时,按照这张图从物理层一路查上去:链路状态是否OK?MAC地址表有没有学习到?ARP解析是否成功?IP路由表是否存在?有没有ACL拦截?TCP端口是不是被防火墙封了?每层查完,问题基本就锁定了。

使用建议: 把这张SVG图截下来或保存成笔记,每次排查前先扫一眼。我记得有次凌晨被叫起来抢修,脑子还没转,一看这张图就立刻按层排查,十分钟定位到MTU分片问题。模型就是你的排查导航仪。