TCP/IP 与 OSI 模型
计算机网络的核心思想是分层——将复杂的通信问题拆解为可执行的步骤,每一层在下层提供的服务基础上提供增值服务。
一、计算机网络的诞生与发展
计算机网络是指将计算机设备连接起来以实现信息传递的系统。其发展大体分为四个阶段:
- 第一阶段:以单机为中心的多终端联机系统——计算机网络的雏形
- 第二阶段:分组交换网的诞生,形成 TCP/IP 协议雏形
- 第三阶段:网络体系结构标准化(OSI 模型的提出)
- 第四阶段:面向全球互联的高速计算机网络
1997 年,比尔·盖茨提出”网络才是计算机”的精辟论点,充分体现出计算机网络的重要基础地位。
二、OSI 七层参考模型
2.1 背景与核心思想
1979 年由 ISO(国际标准化组织)颁布了 OSI/RM(开放式系统互连参考模型)。
核心思想是分层——将复杂的网络通信过程拆解为七个层次,每一层完成特定的功能。分层的目的是:
- 降低层次之间的关联性,某一层协议增减不影响其他层
- 便于标准化制定
- 便于学习和理解
2.2 七层详解
| 层次 | 名称 | 主要功能 | 数据单元 |
|---|---|---|---|
| 7 | 应用层 (Application) | 提供网络服务接口(HTTP、FTP、DNS 等) | 数据报文 |
| 6 | 表示层 (Presentation) | 数据格式转换、加密解密、压缩 | 数据报文 |
| 5 | 会话层 (Session) | 管理通信会话,建立/维持/断开连接 | 数据报文 |
| 4 | 传输层 (Transport) | 端到端可靠传输,流量控制,差错控制 | 段 (Segment) |
| 3 | 网络层 (Network) | 逻辑寻址与路由选择 | 包 (Packet) |
| 2 | 数据链路层 (Data Link) | 物理寻址(MAC)、成帧、差错检测 | 帧 (Frame) |
| 1 | 物理层 (Physical) | 二进制信号与物理介质传输 | 比特流 (Bits) |
应用层(Application Layer)
应用层指的是一类能够实现网络通信的特定应用协议(即”服务”)。常见的应用层协议包括:
- HTTP/HTTPS:超文本传输协议(TCP 端口 80/443)
- DNS:域名系统(TCP/UDP 端口 53)
- FTP:文件传输协议(TCP 端口 20、21)
- SMTP:简单邮件传输协议(TCP 端口 25)
- POP3:邮局协议(TCP 端口 110)
- Telnet:远程登录协议(TCP 端口 23)
- DHCP:动态主机配置协议(UDP 端口 67、68)
表示层(Presentation Layer)
负责数据格式转换,如编码转换、加密解密、压缩等。可以理解为将人类语言输入计算机并编码表达的过程。
会话层(Session Layer)
管理通信会话,负责建立与断开通信连接,管理下层通信。
应用层、表示层、会话层是面向程序的层次,而下面四层是面向数据传输的层次。
传输层(Transport Layer)
主要任务是管理两个节点之间的数据传输,提供应用进程间的逻辑通信。
传输层地址为端口号,取值范围 0-65535:
- 知名端口号:1-1023(用于标定特定服务)
- 注册端口号:1024-49151
- 动态端口号:49152-65535
传输层的两大核心协议——TCP 和 UDP,将在第四章详细介绍。
网络层(Network Layer)
负责数据从一台主机到另一台主机的传递,提供逻辑寻址(IP 地址)和路由选择功能。
核心协议:
- IP(Internet 协议):负责寻址和路由
- ICMP(Internet 控制报文协议):用于网络诊断(如 ping、tracert)
- ARP(地址解析协议):IP 地址与 MAC 地址的映射
- OSPF/RIP/BGP:动态路由协议
数据链路层(Data Link Layer)
由 MAC(介质访问控制层) 和 LLC(逻辑链路控制层) 两个子层构成。
主要功能:
- 使用 MAC 地址进行物理寻址
- 将二进制分块并封装成帧
- 通过 FCS(帧校验序列)保证数据完整性
- 使用 CRC(循环冗余算法)进行差错检测
物理层(Physical Layer)
负责将二进制 01 转换为物理信号(电信号、光信号等),并通过介质进行传输。
常见传输介质:
| 介质类型 | 特点 | 传输距离 |
|---|---|---|
| 同轴电缆 | 耐用,抗干扰强,造价高 | 较长 |
| 双绞线(5类/超5类/6类) | 造价低,易弯折,最常用 | 100米 |
| 光纤(单模/多模) | 抗干扰极强,传输远,质量高 | 数千米至数百公里 |
| 无线 | 移动性好,连接方便 | 视环境而定 |
三、TCP/IP 四层模型
在 OSI 模型的影响下,各厂商纷纷完善自己的协议体系。其中 TCP/IP 体系由美国国防部提出,后被 IETF(互联网工程任务小组)维护和发扬光大,最终成为互联网的事实标准。
3.1 TCP/IP 协议簇
TCP/IP 模型将网络通信分为四个层次:
| TCP/IP 层次 | 对应 OSI 层次 | 核心协议 |
|---|---|---|
| 应用层 (Application) | 应用层 + 表示层 + 会话层 | HTTP、FTP、DNS、SMTP、Telnet、DHCP |
| 传输层 (Transport) | 传输层 | TCP、UDP |
| 网际层 (Internet) | 网络层 | IP、ICMP、ARP、RARP |
| 网络接入层 (Network Access) | 数据链路层 + 物理层 | Ethernet、PPP、HDLC、WiFi |
3.2 OSI 与 TCP/IP 模型对比
| 对比维度 | OSI 七层模型 | TCP/IP 四层模型 |
|---|---|---|
| 制定者 | ISO(国际标准化组织) | 美国国防部 / IETF |
| 层次数 | 7 层 | 4 层 |
| 上层处理 | 应用层、表示层、会话层分离 | 合并为应用层 |
| 下层处理 | 数据链路层、物理层分离 | 合并为网络接入层 |
| 协议依赖 | 协议独立(先有模型后有协议) | 协议绑定(先有协议后有模型) |
| 实际应用 | 教学参考模型 | 互联网实际标准 |
四、封装与解封装
4.1 什么是封装
封装是各层将本层实现数据添加到内容数据之前的过程。类似于寄信时需要信封、收件人、发件人、邮编和邮票——这些相当于各层的实现数据。
数据在各层的封装过程:
应用层:原始数据
↓
传输层:TCP/UDP 头部 + 原始数据 → 段(Segment)
↓
网络层:IP 头部 + 段 → 包(Packet)
↓
数据链路层:MAC 头部 + 包 + FCS 尾部 → 帧(Frame)
↓
物理层:帧 → 比特流(Bits)
4.2 PDU(协议数据单元)
每一层的数据单元有特定的名称:
| 层次 | PDU 名称 |
|---|---|
| 应用层 | 数据报文 (Data) |
| 传输层 | 段 (Segment) |
| 网络层 | 包 (Packet) |
| 数据链路层 | 帧 (Frame) |
| 物理层 | 比特流 (Bits) |
4.3 解封装
解封装是封装的逆过程。接收方从物理层收到比特流后,逐层剥离各层的头部信息,最终还原出原始数据。
五、MAC 地址与 IP 地址
5.1 MAC 地址(物理地址)
- 所有芯片出厂时烧录的串号
- 48 位二进制构成,用 12 位十六进制表达
- 格式示例:
48-89-E7-20-7E-34 - 前 24 位代表厂商(OUI),后 24 位代表厂商分配的串号
- 全球唯一
- 工作在数据链路层,用于同一广播域内的通信
5.2 IP 地址(逻辑地址)
- IPv4:32 位二进制构成,用点分十进制表达(如
192.168.1.1) - IPv6:128 位二进制构成,用冒分十六进制表达
- 分为网络位和主机位,由子网掩码区分
- 工作在网路层,用于跨广播域的通信
5.3 IP 地址分类
| 类别 | 第一组 8 位二进制 | 十进制范围 | 网络位长度 | 用途 |
|---|---|---|---|---|
| A 类 | 0XXXXXXX | 1 - 126 | 前 8 位 | 大型网络 |
| B 类 | 10XXXXXX | 128 - 191 | 前 16 位 | 中型网络 |
| C 类 | 110XXXXX | 192 - 223 | 前 24 位 | 小型网络 |
| D 类 | 1110XXXX | 224 - 239 | 不分 | 组播地址 |
| E 类 | 1111XXXX | 255 - 255 | 不分 | 保留(军用) |
5.4 特殊 IP 地址
| 地址 | 说明 |
|---|---|
127.0.0.1 - 127.255.255.255 | 环回地址(本机测试) |
255.255.255.255 | 受限广播地址 |
| 主机位全 1 | 直接广播地址(如 192.168.2.255) |
| 主机位全 0 | 网络号(如 192.168.2.0) |
0.0.0.0 | 代表没有 IP 或任意 IP |
169.254.0.0/16 | 自动私有地址(APIPA) |
5.5 ARP 协议
ARP(地址解析协议)用于将 IP 地址映射为 MAC 地址。分类:
- 正向 ARP:通过 IP 地址获取 MAC 地址
- 反向 ARP:通过 MAC 地址获取 IP 地址
- 免费 ARP:用于 IP 冲突检测和自我介绍
ARP 缓存表的老化时间为 180 秒。
六、传输层协议详解:TCP 与 UDP
6.1 TCP 与 UDP 对比
| 对比维度 | TCP | UDP |
|---|---|---|
| 连接方式 | 面向连接 | 无连接 |
| 可靠性 | 可靠传输(确认、重传) | 尽力而为 |
| 流量控制 | 有(滑动窗口、拥塞控制) | 无 |
| 速度 | 较慢 | 较快 |
| 资源消耗 | 大 | 小 |
| 应用场景 | 文件传输、网页浏览、邮件 | 视频直播、在线游戏、VoIP |
6.2 TCP 三次握手
客户端 服务器
| -------- SYN --------> |
| <---- SYN + ACK ------ |
| -------- ACK --------> |
6.3 TCP 四次挥手
客户端 服务器
| -------- FIN --------> |
| <------- ACK --------- |
| <------- FIN --------- |
| -------- ACK --------> |
6.4 TCP 分段与 IP 分片
- MTU(最大传输单元):数据链路层的限制,通常为 1500 字节
- MSS(最大分段长度):TCP 基于 MTU 协商的最大承载长度,一般取 1460 字节(1500 - 20 字节 IP 头部 - 20 字节 TCP 头部)
- IP 分片依据标识符、标志位(DF/MF)和片偏移量完成
七、其他重要协议
7.1 ICMP 协议
ICMP(Internet 控制报文协议)用于在网络设备间传递差错和控制信息。
| 报文类型 | 说明 |
|---|---|
| Echo Request / Echo Reply | ping 命令使用的查询报文 |
| 目的不可达 | 网络/主机/协议/端口不可达 |
| 源站点抑制 | 通知源端放慢发送速度 |
| 时间超时 | TTL 值为 0,数据包被丢弃 |
| 重定向 | 指示更优路径 |
Tracert 基于 TTL 值逐跳跟踪转发路径。
7.2 DNS 协议
DNS(域名系统)将域名转换为 IP 地址,采用 C/S 架构。
查询方式:
- 递归查询:DNS 服务器代替客户端完成全部查询
- 迭代查询:DNS 服务器返回下一级 DNS 地址,客户端自行查询
7.3 HTTP 协议
HTTP(超文本传输协议)是 WWW 的核心协议之一。WWW 由三部分组成:
- HTML:页面标记语言
- URL:统一资源定位符(协议 + 主机 + 端口 + 文件名)
- HTTP:传输超文本的协议
八、设备与层次对应
| 设备 | 工作层次 | 功能 |
|---|---|---|
| 集线器 (Hub) | 物理层 | 信号放大与转发,共享介质 |
| 网桥 (Bridge) | 数据链路层 | 隔离冲突域,过滤帧 |
| 交换机 (Switch) | 数据链路层 | 基于 MAC 地址表转发,自学习 |
| 路由器 (Router) | 网络层 | 隔离广播域,基于路由表选路转发 |
九、总结
- 分层思想是计算机网络的精髓——每层完成特定功能,层间松耦合
- OSI 七层模型是理论标准,用于学习和参考
- TCP/IP 四层模型是工业标准,是互联网的基础
- 封装与解封装贯穿数据通信的全过程
- MAC 地址用于局域网内寻址,IP 地址用于跨网络寻址
- TCP 面向连接、可靠传输;UDP 无连接、快速高效