计算机网络学习指南计算机网络学习指南
首页
基础教程
进阶内容
实战案例
编程指南
首页
基础教程
进阶内容
实战案例
编程指南
  • 基础教程

    • 📚 基础教程
    • 🎯 学习目标
    • 🚀 学习路线
    • 📊 章节概览
  • 💡 学习建议
  • 🎓 学完之后
  • 第1章 - 什么是计算机网络?
  • 第2章 - 网络分层模型
  • 第3章 - IP 地址详解
  • 第4章 - 子网掩码与网络划分
  • 第5章 - TCP 与 UDP 协议
  • 第6章 - HTTP 与 HTTPS
  • 第7章 - DNS 域名解析
  • 第8章 - NAT 与网关

第2章 - 网络分层模型

嗨,朋友!上一章我们了解了什么是计算机网络,这一章我要带你揭开网络分层的神秘面纱。

说实话,很多人一听到"OSI 七层模型"就头大,觉得这东西太抽象、太难理解。但其实,网络分层就像寄快递一样简单!我用一个生活中的例子,保证让你一听就懂。

🤔 为什么要分层?

寄快递的例子 📦

假设你要给远在北京的朋友寄一个礼物,整个过程是这样的:

你(发件人)
    ↓ ① 打包礼物,写收件人信息
快递员上门取件
    ↓ ② 送到本地快递站
本地快递站
    ↓ ③ 分拣,送到转运中心
转运中心
    ↓ ④ 装车,运输到北京
北京转运中心
    ↓ ⑤ 分拣,送到目标快递站
北京快递站
    ↓ ⑥ 派件员送货上门
朋友(收件人)
    ↓ ⑦ 拆包,拿到礼物

你发现没有?整个快递过程被分成了多个步骤,每个步骤有不同的人负责,互不干扰:

  • 你只需要打包,不需要知道快递怎么运输
  • 快递员只负责取件,不需要知道礼物是什么
  • 转运中心只负责运输,不需要知道收件人是谁

这就是分层的好处:职责清晰,互不干扰,易于维护和升级。

网络分层的道理一样!

计算机网络也是这样:

  • 应用层:就像你打包礼物(准备数据)
  • 传输层:就像快递公司(保证送达)
  • 网络层:就像物流路线(找到最佳路径)
  • 数据链路层:就像具体的运输工具(火车、飞机、汽车)
  • 物理层:就像实际的道路(光纤、网线、无线信号)

🏛️ OSI 七层模型

OSI(Open System Interconnection,开放式系统互联)是国际标准化组织(ISO)制定的一个网络分层标准,把网络分成了 7 层。

OSI 七层模型图解

┌─────────────────────────┐
│  7. 应用层 (Application) │  ← 用户直接接触的层(浏览器、邮件)
├─────────────────────────┤
│  6. 表示层 (Presentation)│  ← 数据格式转换(加密、压缩)
├─────────────────────────┤
│  5. 会话层 (Session)     │  ← 建立和管理会话
├─────────────────────────┤
│  4. 传输层 (Transport)   │  ← 端到端的数据传输(TCP、UDP)
├─────────────────────────┤
│  3. 网络层 (Network)     │  ← 路由选择(IP 地址)
├─────────────────────────┤
│  2. 数据链路层 (Data Link)│  ← 相邻节点传输(MAC 地址)
├─────────────────────────┤
│  1. 物理层 (Physical)    │  ← 比特流传输(电信号、光信号)
└─────────────────────────┘

记忆口诀 🎯

从下往上记:物数网传会表应
从上往下记:应表会传网数物

更有趣的记法:Please Do Not Throw Sausage Pizza Away
(Physical、Data Link、Network、Transport、Session、Presentation、Application)

各层详解

1. 物理层(Physical Layer)⚡

作用:负责传输原始的比特流(0 和 1)

类比:快递运输的"道路"

设备:网线、光纤、集线器(Hub)、中继器

举例:

  • 网线传输电信号
  • 光纤传输光信号
  • WiFi 传输无线电波
数据: Hello
转成二进制: 01001000 01100101 01101100 01101100 01101111
物理层: 通过电信号或光信号传输这些 0 和 1

2. 数据链路层(Data Link Layer)🔗

作用:在相邻的两个节点之间可靠地传输数据

类比:快递的"运输工具"(汽车、火车、飞机)

设备:交换机(Switch)、网卡、网桥

关键技术:

  • MAC 地址(设备的物理地址)
  • 帧(Frame)
  • 差错检测

举例:

数据链路层给数据加上"信封":

┌──────────────────────────┐
│ 目标MAC地址 | 源MAC地址   │  ← 信封(帧头)
├──────────────────────────┤
│      数据内容             │  ← 信件内容
├──────────────────────────┤
│      校验码               │  ← 防止传输错误
└──────────────────────────┘

3. 网络层(Network Layer)🌐

作用:负责数据包从源地址到目的地址的路由和转发

类比:快递的"路线规划"

设备:路由器(Router)

关键技术:

  • IP 地址(网络地址)
  • 路由选择
  • 数据包(Packet)

举例:

你在上海,朋友在北京:

路由器:分析目标 IP 地址 → 选择最佳路径
路径1: 上海 → 南京 → 北京(500公里)
路径2: 上海 → 西安 → 北京(1000公里)
选择路径1(更短、更快)

4. 传输层(Transport Layer)🚚

作用:提供端到端的可靠数据传输

类比:快递的"物流公司"(保证送达)

协议:TCP、UDP

关键技术:

  • 端口号(区分不同应用)
  • 流量控制
  • 差错控制

举例:

TCP(可靠传输):
发送方: "我发了第1个包"
接收方: "收到第1个包"
发送方: "我发了第2个包"
接收方: "收到第2个包"
→ 确保每个包都送达

UDP(不可靠传输):
发送方: "我发了包,你收不收到我不管"
→ 速度快,但可能丢包

5. 会话层(Session Layer)🤝

作用:建立、管理和终止会话

类比:快递的"订单管理"

功能:

  • 会话的建立
  • 会话的维持
  • 会话的终止

举例:

你登录网站的过程:

1. 建立会话:输入用户名密码
2. 维持会话:保持登录状态(Session/Cookie)
3. 终止会话:点击退出登录

6. 表示层(Presentation Layer)🎨

作用:数据格式转换、加密解密、压缩解压

类比:快递的"包装方式"

功能:

  • 数据加密/解密
  • 数据压缩/解压
  • 格式转换

举例:

加密:
原始数据: "password123"
加密后: "a4f8d9e2b1c7..."

压缩:
原始大小: 10MB 的图片
压缩后: 2MB 的图片

7. 应用层(Application Layer)📱

作用:为用户提供网络服务

类比:快递的"寄件服务"(你直接接触的部分)

协议:HTTP、HTTPS、FTP、SMTP、DNS

举例:

浏览器访问网站:
1. 你在浏览器输入 www.baidu.com
2. 应用层使用 HTTP 协议
3. 发送请求给百度服务器
4. 接收响应并显示网页

📡 TCP/IP 四层模型

虽然 OSI 七层模型很完善,但实际应用中,TCP/IP 四层模型更常用。它把 OSI 的七层简化成了四层:

OSI 七层                 TCP/IP 四层
┌──────────────┐        ┌──────────────┐
│  7. 应用层    │        │              │
├──────────────┤        │  应用层       │
│  6. 表示层    │   →    │  (Application)│
├──────────────┤        │              │
│  5. 会话层    │        │              │
├──────────────┤        ├──────────────┤
│  4. 传输层    │   →    │  传输层       │
├──────────────┤        │  (Transport)  │
├──────────────┤        ├──────────────┤
│  3. 网络层    │   →    │  网络层       │
├──────────────┤        │  (Internet)   │
├──────────────┤        ├──────────────┤
│  2. 数据链路层│        │  网络接口层    │
├──────────────┤   →    │  (Network     │
│  1. 物理层    │        │   Interface)  │
└──────────────┘        └──────────────┘

TCP/IP 四层详解

层次名称功能协议示例
第4层应用层用户应用程序HTTP、FTP、DNS、SMTP
第3层传输层端到端通信TCP、UDP
第2层网络层路由选择IP、ICMP、ARP
第1层网络接口层硬件传输以太网、WiFi

🌟 数据封装过程(重要!)

当你在浏览器访问网站时,数据是如何一层层封装的?

发送数据的过程

┌─────────────────────────────────────┐
│  你在浏览器输入 www.example.com       │
└─────────────────────────────────────┘
                 ↓
┌─────────────────────────────────────┐
│  应用层: 生成 HTTP 请求                │
│  GET / HTTP/1.1                      │
└─────────────────────────────────────┘
                 ↓
┌─────────────────────────────────────┐
│  传输层: 加上 TCP 头部                 │
│  [TCP头部] + HTTP请求                 │
│  包含源端口、目标端口                  │
└─────────────────────────────────────┘
                 ↓
┌─────────────────────────────────────┐
│  网络层: 加上 IP 头部                  │
│  [IP头部] + [TCP头部] + HTTP请求      │
│  包含源IP地址、目标IP地址              │
└─────────────────────────────────────┘
                 ↓
┌─────────────────────────────────────┐
│  数据链路层: 加上帧头部和帧尾          │
│  [帧头] + [IP头] + [TCP头] + 数据 + [帧尾] │
│  包含源MAC地址、目标MAC地址            │
└─────────────────────────────────────┘
                 ↓
┌─────────────────────────────────────┐
│  物理层: 转成 0 和 1 的比特流          │
│  010101010101...                     │
└─────────────────────────────────────┘
                 ↓
         通过网线/WiFi传输

接收数据的过程(反向解封装)

         通过网线/WiFi接收
                 ↓
┌─────────────────────────────────────┐
│  物理层: 接收比特流                   │
│  010101010101...                     │
└─────────────────────────────────────┘
                 ↓
┌─────────────────────────────────────┐
│  数据链路层: 去掉帧头部和帧尾          │
│  检查MAC地址,校验数据                │
└─────────────────────────────────────┘
                 ↓
┌─────────────────────────────────────┐
│  网络层: 去掉 IP 头部                 │
│  检查IP地址,确定是发给自己的          │
└─────────────────────────────────────┘
                 ↓
┌─────────────────────────────────────┐
│  传输层: 去掉 TCP 头部                │
│  确认端口号,交给对应的应用程序        │
└─────────────────────────────────────┘
                 ↓
┌─────────────────────────────────────┐
│  应用层: 解析 HTTP 响应               │
│  浏览器显示网页内容                   │
└─────────────────────────────────────┘

🎯 实际应用案例

案例1:浏览器访问网站(前端视角)

// 前端发送 HTTP 请求
fetch('https://api.example.com/users')
  .then(response => response.json())
  .then(data => console.log(data));

// 背后的分层过程:
// 应用层: HTTP 请求(GET /users)
// 传输层: TCP 连接(端口 443)
// 网络层: 找到服务器 IP 地址
// 数据链路层: 通过网卡发送
// 物理层: 网线或 WiFi 传输

案例2:Node.js 服务器(后端视角)

const express = require('express');
const app = express();

// 监听端口 3000(传输层)
app.listen(3000, () => {
  console.log('服务器运行在 3000 端口');
});

// 处理 HTTP 请求(应用层)
app.get('/users', (req, res) => {
  res.json({ message: 'Hello' });
});

// 背后的分层过程:
// 物理层: 接收网络信号
// 数据链路层: 解析帧
// 网络层: 检查 IP 地址
// 传输层: 检查端口 3000
// 应用层: Express 处理 HTTP 请求

案例3:运维配置防火墙

# 配置防火墙规则(网络层 + 传输层)

# 允许 80 端口(HTTP)
iptables -A INPUT -p tcp --dport 80 -j ACCEPT

# 允许 443 端口(HTTPS)
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

# 禁止其他所有入站连接
iptables -A INPUT -j DROP

这些规则工作在:

  • 网络层:检查 IP 地址
  • 传输层:检查 TCP 协议和端口号

📊 各层对比表

层次OSI模型TCP/IP模型数据单位关键设备关键协议
7应用层应用层消息-HTTP、FTP、DNS
6表示层应用层消息-SSL、JPEG
5会话层应用层消息-RPC、SQL
4传输层传输层段/数据报网关TCP、UDP
3网络层网络层数据包路由器IP、ICMP
2数据链路层网络接口层帧交换机、网桥以太网、WiFi
1物理层网络接口层比特集线器、网线-

💡 长安的学习建议

  1. 理解最重要 - 不要死记硬背七层的名字,理解每层的作用
  2. 记住核心的 - TCP/IP 四层模型在实际工作中更常用
  3. 联系实际 - 想想你平时发 HTTP 请求,背后经历了哪些层
  4. 画图加深理解 - 试着自己画一遍数据封装的过程

📝 小结

这一章我们学习了:

✅ 为什么要分层:职责清晰、易于维护
✅ OSI 七层模型:物数网传会表应
✅ TCP/IP 四层模型:应用层、传输层、网络层、网络接口层
✅ 数据封装过程:一层层加头部,一层层去头部
✅ 实际应用:前端、后端、运维都在使用分层模型

🎯 下一步

现在你已经理解了网络分层,但是网络层的 IP 地址到底是什么?怎么用?下一章我们会详细讲解!

继续学习第3章:IP 地址详解 →

💪 练习题

  1. 用自己的话解释一下,为什么计算机网络要分层?
  2. 当你在浏览器输入网址按回车,数据会经过哪些层?
  3. TCP 协议工作在哪一层?HTTP 协议工作在哪一层?
答案提示
  1. 为什么要分层?

    • 降低复杂度:每层只关注自己的职责
    • 易于维护:某一层出问题,不影响其他层
    • 易于升级:可以替换某一层的技术,而不影响其他层
    • 便于标准化:不同厂商可以按照标准实现
  2. 数据经过的层次(从上到下):

    • 应用层:浏览器生成 HTTP 请求
    • 传输层:TCP 协议建立连接
    • 网络层:IP 协议寻址和路由
    • 数据链路层:封装成帧
    • 物理层:转成比特流传输
  3. 协议所在层次:

    • TCP 协议:传输层
    • HTTP 协议:应用层
最近更新: 2025/12/26 18:23
Contributors: 王长安
Prev
第1章 - 什么是计算机网络?
Next
第3章 - IP 地址详解