第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在哪个端口?靠学习。过程很简单:

  1. 收到一个帧,记录源MAC和入端口。
  2. 查MAC地址表,如果目的MAC已知,直接转发到对应端口。
  3. 如果未知,泛洪(Flood)到所有端口(除了入端口)。

这里有个坑:MAC地址表是有容量上限的。我记得有一次,一个接入交换机接了2000台虚拟机,MAC表直接爆了,导致大量未知单播泛洪,整个网络性能雪崩。所以,设计数据中心时,一定要算好MAC表容量,或者用VXLAN等技术隔离广播域。

2.4 本章知识体系总览

下面这张图,是我自己画的。它把OSI、TCP/IP、以太网的核心逻辑串在了一起。你盯着看三分钟,应该能理清脉络。

OSI七层模型 7. 应用层 6. 表示层 5. 会话层 4. 传输层 3. 网络层 2. 数据链路层 1. 物理层 TCP/IP协议栈 应用层 (HTTP/DNS/FTP) 传输层 (TCP/UDP) 网络层 (IP/ICMP) 网络接口层 以太网原理 MAC地址 (6字节) 帧结构 (前导码/数据/FCS) CSMA/CD (冲突检测) MAC地址表学习 MTU (1500/9000) 核心逻辑总结 • OSI是理论框架,TCP/IP是工程实现。面试爱问,实战更爱用TCP/IP。 • 传输层:TCP面向连接(三次握手),UDP无连接。选哪个?看业务容忍度。 • 网络层:IP负责寻址,路由协议(OSPF/BGP)负责找路。数据中心常用BGP。 • 以太网:MAC地址是二层身份证,交换机靠它转发。MTU、MAC表容量是常见坑。 • 一句话:上层不懂下层,下层不关心上层。各司其职,出了问题逐层排查。

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