第2章 网络基础回顾:OSI七层模型、TCP/IP协议栈、以太网原理
各位同学,咱们今天聊点基础,但别小看基础。我干了十几年数据中心网络,见过太多人栽在基础不牢上。你想想看,一个二层环路搞死整个机房,或者一个MTU配置错误导致业务卡成狗,这些坑我都踩过。所以,这一章咱们把OSI、TCP/IP、以太网这三个老伙计彻底聊透。
2.1 OSI七层模型:网络世界的“宪法”
OSI七层模型,说白了就是一套标准。它把网络通信拆成七层,每层干各层的活。我个人习惯把这七层记成“物数网传会表应”,从下往上分别是:
- 物理层:管线缆、电信号、光信号。说白了就是比特流在线上怎么跑。
- 数据链路层:管帧的封装、MAC地址、差错检测。以太网就在这层。
- 网络层:管IP地址、路由选择、包转发。路由器的主战场。
- 传输层:管端到端连接、可靠传输、流量控制。TCP/UDP的老家。
- 会话层:管建立、管理、终止会话。现在基本被应用层吞了。
- 表示层:管数据加密、压缩、格式转换。比如JPEG解码。
- 应用层:直接面向用户,HTTP、FTP、SMTP都在这里。
核心要点:每一层只给上一层提供服务,下层对上层透明。你发微信,应用层只管拼消息,底下怎么拆包、怎么路由、怎么转成电信号,你根本不用管。这就是分层的好处——解耦。
我在项目中遇到过一件事。有一次排查一个跨机房丢包问题,抓包看了半天,应用层日志一切正常。后来我顺着七层模型一层层往下查,最后发现是物理层的光模块光功率衰减了。嗯,这就是分层思维的价值——你永远知道该去哪一层找问题。
2.2 TCP/IP协议栈:实战中的“真香”模型
OSI七层模型虽然标准,但实际互联网用的是TCP/IP四层模型。为什么?因为OSI太复杂了,TCP/IP更务实。我刚开始学网络时也纠结过“为什么不用七层”,后来想通了——理论归理论,工程归工程。
TCP/IP四层模型长这样:
| TCP/IP层 | 对应OSI层 | 核心协议 | 我常说的“人话” |
|---|---|---|---|
| 应用层 | 5-7层 | HTTP、DNS、FTP | 用户直接打交道的东西 |
| 传输层 | 第4层 | TCP、UDP | 数据怎么传、可靠不可靠 |
| 网络层 | 第3层 | IP、ICMP、ARP | 数据包怎么找到路 |
| 网络接口层 | 1-2层 | 以太网、PPP | 物理介质上怎么跑 |
这里有个关键点:TCP/IP的传输层有两个主力——TCP和UDP。TCP可靠但慢,UDP快但不可靠。我建议你记住一句话:TCP保业务,UDP保体验。比如文件传输用TCP,视频直播用UDP。为什么?你想想看,视频丢一帧还能看,文件丢一个字节就废了。
避坑指南:我曾经在数据中心里遇到一个奇葩问题——业务间歇性卡顿。查了三天,最后发现是某个中间设备把TCP的MSS(最大分段大小)改小了,导致TCP分片过多,性能暴跌。所以,TCP参数调优时,MSS、窗口大小、SACK这些一定要搞清楚。
2.3 以太网原理:数据中心最底层的“语言”
以太网,说白了就是数据链路层和物理层的实现。数据中心里,90%以上的流量跑在以太网上。它的核心机制就三个:MAC地址、CSMA/CD(现在基本是CSMA/CA)、帧结构。
先看以太网帧结构,我习惯这么记:
| 前导码(7B) | 定界符(1B) | 目的MAC(6B) | 源MAC(6B) | 类型/长度(2B) | 数据(46-1500B) | FCS(4B) |
- 前导码+定界符:告诉接收端“我要发数据了,准备接收”。
- MAC地址:每个网卡出厂时烧录的唯一标识。我见过有人手动改MAC地址导致网络冲突,嗯,别这么干。
- 类型/长度:标识上层协议,比如0x0800代表IP。
- 数据:46到1500字节。小于46要填充,大于1500要分片。
- FCS:循环冗余校验,检测帧是否损坏。
注意:MTU(最大传输单元)默认1500字节。如果你在数据中心里跑巨帧(Jumbo Frame,9000字节),一定要确保整条链路上所有设备都支持。我曾经遇到一个案例,交换机配了9000,但服务器网卡没改,结果大包全丢了。这种低级错误,千万别犯。
以太网的另一个核心是MAC地址学习。交换机怎么知道某个MAC在哪个端口?靠学习。过程很简单:
- 收到一个帧,记录源MAC和入端口。
- 查MAC地址表,如果目的MAC已知,直接转发到对应端口。
- 如果未知,泛洪(Flood)到所有端口(除了入端口)。
这里有个坑:MAC地址表是有容量上限的。我记得有一次,一个接入交换机接了2000台虚拟机,MAC表直接爆了,导致大量未知单播泛洪,整个网络性能雪崩。所以,设计数据中心时,一定要算好MAC表容量,或者用VXLAN等技术隔离广播域。
2.4 本章知识体系总览
下面这张图,是我自己画的。它把OSI、TCP/IP、以太网的核心逻辑串在了一起。你盯着看三分钟,应该能理清脉络。
2.5 实战中的“避坑”清单
最后,我把自己这些年踩过的坑,整理成一份清单。你记下来,能少走很多弯路。
- MTU不一致:我曾经在数据中心里,核心交换机配了9000,接入交换机忘了改。结果大包走到核心就丢了。排查了一整天。解决方案:整条链路统一MTU,或者用路径MTU发现(PMTUD)。
- MAC表溢出:虚拟化环境下,一台物理机可能跑几十台虚拟机,MAC地址数量暴增。如果交换机MAC表容量不够,就会泛洪。解决方案:用VXLAN隔离,或者换大表交换机。
- TCP窗口太小:高延迟链路(比如跨数据中心),如果TCP接收窗口太小,带宽利用率极低。我见过一个案例,10G链路只跑了200M,就是因为窗口没调。解决方案:启用TCP窗口缩放(Window Scaling)。
- ARP风暴:二层网络太大,广播域太广,ARP请求满天飞。我曾经在一个5000台服务器的机房,被ARP风暴搞到交换机CPU 100%。解决方案:划分VLAN,或者用ARP抑制技术。
我的习惯:每到一个新数据中心,我第一件事就是检查全网MTU、MAC表利用率、TCP参数。这些基础项没问题,再谈优化。基础不牢,地动山摇——这句话在数据中心里,一点不夸张。
好了,这一章就到这里。OSI、TCP/IP、以太网,这三个东西你吃透了,后面讲VXLAN、BGP、数据中心架构时,你会觉得特别顺。咱们下一章见。
公众号:蓝海资料掘金营,微信deep3321