TCP/IP协议族在OSI模型中的完整分布——一张图看懂网络协议
这篇以 OSI 七层模型为框架,把 TCP/IP 协议族里的每个协议摆到它真正工作的那一层,再补上网页访问、邮件发送等场景里各层协议怎么协作,以及排障时常用的诊断命令。
什么是 OSI 模型?
OSI(Open Systems Interconnection)模型把网络通信过程切成七层。实际工程里 TCP/IP 模型用得更广,但 OSI 这套分层对理解"一个协议到底管什么"很有用。
OSI 七层从下到上:
- 物理层(Physical Layer): 传输原始比特流
- 数据链路层(Data Link Layer): 提供节点间的可靠通信
- 网络层(Network Layer): 负责路由和转发
- 传输层(Transport Layer): 提供端到端的通信
- 会话层(Session Layer): 管理会话连接
- 表示层(Presentation Layer): 数据格式转换和加密
- 应用层(Application Layer): 用户接口和应用程序协议
什么是 TCP/IP 协议族?
TCP/IP 协议族是互联网跑起来的那套协议,比 OSI 简洁实用,通常分成四层:
- 应用层(Application Layer)
- 传输层(Transport Layer)
- 网络层(Network Layer)
- 网络接口层(Network Interface Layer)
TCP/IP 协议族在 OSI 模型中的分布
先看数据从上到下穿过协议栈时怎么一层层被封装。每过一层,上层数据就被加上一个对应层的头部,最终在物理层变成比特流上线传输。
flowchart TD
A["应用层<br/>Data 数据"] --> B["传输层<br/>Segment 段"]
B --> C["网络层<br/>Packet 包"]
C --> D["数据链路层<br/>Frame 帧"]
D --> E["物理层<br/>Bit 比特"]
classDef layer fill:#E3F2FD,stroke:#1565C0,color:#1565C0
class A,B,C,D,E layer下面这张表把 OSI 七层、TCP/IP 四层和每层典型协议对齐起来,是这篇文章的主索引。后面几节逐层展开。
| OSI 七层 | TCP/IP 四层 | 典型协议 |
|---|---|---|
| 应用层 | 应用层 | HTTP, FTP, SMTP, POP3, IMAP4, DNS, DHCP, NFS, SNMP |
| 表示层 | 应用层 | SSL/TLS, LDAP |
| 会话层 | 应用层 | RPC, NetBIOS, SMB |
| 传输层 | 传输层 | TCP, UDP |
| 网络层 | 网络层 | IP, ICMP, IGMP, OSPF, RIP, BGP, ARP |
| 数据链路层 | 网络接口层 | Ethernet, PPP, HDLC, Frame Relay, ATM |
| 物理层 | 网络接口层 | IEEE 802.3, RS-232, V.35, RJ-45 |
各层协议详解
应用层协议
应用层直接面向用户程序,是协议最多的一层。
| 协议 | 作用 | 端口 | 特点 |
|---|---|---|---|
| HTTP/HTTPS | 浏览器与 Web 服务器通信 | 80 / 443 | 请求-响应、无状态 |
| FTP | 客户端与服务器间文件传输 | 20 数据 / 21 控制 | 支持上传、下载、删除 |
| SMTP | 发送电子邮件 | 25 | 只管投递,常配 POP3/IMAP 收信 |
| TELNET | 远程登录 | 23 | 不加密,现已被 SSH 取代 |
| POP3 | 从服务器收取邮件 | 110 | 下载后服务器端通常删除 |
| IMAP4 | 在服务器上管理邮件 | 143 | 邮件留服务器,可多端同步 |
| DNS | 域名解析为 IP | 53 | 分布式命名系统,互联网基础设施 |
| DHCP | 自动分配 IP | 67 服务 / 68 客户端 | 动态地址分配 |
| NFS | 网络共享文件系统 | 2049 | 远程文件当本地用 |
| SNMP | 网络设备监控管理 | 161 管理 / 162 代理 | 收集与配置设备信息 |
几个容易混的点:SMTP 只负责把邮件推到服务器,取信要靠 POP3 或 IMAP4;POP3 默认下载完就删,IMAP4 则把邮件留在服务器上,适合多设备同步看同一份邮箱。DNS 不属于某个具体业务,几乎所有其他协议解析域名都要先过它。
表示层与会话层协议
这两层在 TCP/IP 模型里被合并进了应用层,但概念上仍可分开看:表示层管格式转换、加密压缩,会话层管连接的建立与维护。
| 层 | 协议 | 作用 | 关键特点 |
|---|---|---|---|
| 表示层 | SSL/TLS | 提供加密通信通道 | 数据加密、身份认证、完整性保护;HTTPS/SMTPS/IMAPS 都靠它 |
| 表示层 | LDAP | 访问目录服务 | 端口 389 明文 / 636 加密;用户认证、地址查找 |
| 表示层 | RPC | 远程过程调用 | 透明地调用另一台机器上的函数,隐藏网络细节 |
| 会话层 | NetBIOS | 网络名称与会话服务 | 端口 137-139;早期 Windows 网络环境 |
| 会话层 | SMB | 共享文件、打印机、串口 | 端口 445;现代版本支持加密认证 |
传输层协议
传输层提供端到端通信,决定数据是"可靠送达"还是"尽快发出去不管后果"。核心是 TCP 与 UDP 两个协议。
TCP 与 UDP 对比
| 特性 | TCP | UDP |
|---|---|---|
| 连接性 | 面向连接 | 无连接 |
| 可靠性 | 可靠传输 | 不可靠传输 |
| 顺序性 | 保证顺序 | 不保证顺序 |
| 速度 | 较慢 | 较快 |
| 开销 | 较大 | 较小 |
| 应用场景 | 文件传输、网页浏览 | 实时视频、在线游戏、DNS 查询 |
TCP 之所以可靠,靠的是连接建立时的三次握手、传输中的确认与重传、断开时的四次挥手。下面两张图把这两个过程画出来。
TCP 三次握手(连接建立)
客户端和服务器各发一个 SYN、再各回一个 ACK,双方都确认了对方的接收能力,连接才算建好。
sequenceDiagram
participant C as 客户端
participant S as 服务器
C->>S: SYN, seq=x
Note over S: 收到 SYN,分配连接资源
S-->>C: SYN+ACK, seq=y, ack=x+1
Note over C: 收到确认,连接对客户端已建立
C->>S: ACK, ack=y+1
Note over S: 收到 ACK,连接对服务器已建立第三步的 ACK 之所以必要,是因为两次握手时服务器无法确认客户端真的收到了自己的 SYN+ACK——若这个包丢了,服务器会一直占着半开连接等下去。
TCP 四次挥手(连接终止)
断开比建立多一轮,因为 TCP 是全双工的:双方各自独立关闭自己的发送通道。
sequenceDiagram
participant C as 客户端
participant S as 服务器
C->>S: FIN, seq=u
Note over C: 客户端不再发数据
S-->>C: ACK, ack=u+1
Note over S: 服务器可能还有数据要发完
S->>C: FIN, seq=v
Note over S: 服务器数据发完,请求关闭
C-->>S: ACK, ack=v+1
Note over C: 等待 2MSL 后彻底关闭中间那次"ACK 之后不立刻 FIN"留出的窗口,让服务器能把还没传完的数据收尾——这就是为什么挥手要四次而不是和握手一样的三次。
网络层协议
网络层管数据包的路由和转发,是整个网络的核心。
| 协议 | 作用 | 关键特点 |
|---|---|---|
| IP | 跨网传输数据包 | 无连接、提供逻辑地址(IP)、支持 IPv4/IPv6 |
| ICMP | 网络状况反馈 | ping、错误报告、路径发现(traceroute 靠它) |
| IGMP | 管理多播组成员 | 用于 IP 多播,控制组成员加入/离开 |
| OSPF | 内部网关路由 | 基于 Dijkstra、区域划分、快速收敛、无环路 |
| RIP | 距离矢量路由 | 跳数为度量、最大 15 跳、收敛慢 |
| BGP | 外部网关路由 | 路径向量、策略丰富、互联网骨干协议 |
| ARP | IP→MAC 解析 | 广播请求、单播应答、维护 ARP 缓存 |
三种路由协议的分工要分清:OSPF 和 RIP 都是内部网关协议(IGP),管一个自治域(AS)内部怎么走;BGP 是外部网关协议(EGP),管不同 AS 之间怎么走,整个互联网的跨域连通靠它。同为 IGP,OSPF 是链路状态算法(每台路由器掌握全网拓扑,算最短路径),RIP 是距离矢量算法(只跟邻居交换跳数表),所以 OSPF 收敛快、RIP 在大网络里扛不住。
ARP 解析过程
ARP 把 IP 地址翻译成数据链路层要用的 MAC 地址。主机先在全网广播"这个 IP 是谁",目标主机认出自己的 IP 后单播回 MAC,请求方存进 ARP 缓存,之后直接用。
sequenceDiagram
participant H as 主机 192.168.1.10
participant N as 局域网全网
participant T as 目标 192.168.1.5
H->>N: 广播 ARP 请求:谁是 192.168.1.5?
Note over N: 所有主机都收到,仅目标回应
T-->>H: 单播 ARP 应答:我是,MAC = aa:bb:cc:dd:ee:ff
Note over H: 写入 ARP 缓存,后续直接用该 MAC广播请求只发一次,之后同一目标的通信都走缓存,直到缓存条目过期。这也是为什么 ARP 欺骗攻击能生效——伪造一个应答,缓存的 MAC 就被顶替了。
数据链路层与物理层协议
这两层贴近硬件:数据链路层在物理链路上把比特组成帧、处理差错,物理层定义电气信号和接口标准。
| 层 | 协议 | 作用 | 关键特点 |
|---|---|---|---|
| 数据链路层 | Ethernet | 局域网通信标准 | CSMA/CD、多速率、局域网事实标准 |
| 数据链路层 | PPP | 点对点通信 | 串行连接、支持多网络层协议、带认证 |
| 数据链路层 | HDLC | 面向比特的链路控制 | 广域网、全双工、帧同步 |
| 数据链路层 | Frame Relay | 包交换广域网 | 基于虚电路、传输高效 |
| 数据链路层 | ATM | 异步传输模式 | 固定长度信元、支持多服务类型 |
| 物理层 | IEEE 802.3 | 以太网物理层标准 | 双绞线、光纤等多种介质 |
| 物理层 | RS-232 | 串行通信标准 | 点对点、异步、设备连接 |
| 物理层 | V.35 | 宽带传输接口 | 高速、主要用于广域网 |
| 物理层 | RJ-45 | 网络连接器 | 8 针、以太网双绞线连接 |
协议通信实例
网页访问过程
当你访问一个网站时,各个层次的协议是如何协同工作的?
- 应用层: 浏览器发起 HTTP 请求
- 表示层: 如果使用 HTTPS,SSL/TLS 会加密数据
- 会话层: 建立和管理会话连接
- 传输层: TCP 协议确保数据可靠传输
- 网络层: IP 协议负责数据包的路由和转发
- 数据链路层: 以太网协议在局域网内传输数据
- 物理层: 通过物理介质传输比特流
邮件发送过程
发送一封电子邮件时:
- 应用层: MUA(邮件用户代理)通过 SMTP 发送邮件
- 传输层: TCP 确保邮件数据的可靠传输
- 网络层: IP 协议将邮件数据路由到目标服务器
- 数据链路层: 在网络中传输数据包
- 物理层: 通过物理网络传输数据
常见网络故障诊断
ping 命令的使用
| |
traceroute 路径追踪
| |
netstat 网络状态查看
| |
tcpdump 网络包分析
| |
网络安全考虑
防火墙配置
| |
SSL/TLS 配置
| |
小结
OSI 七层是理解网络协议分工的框架,TCP/IP 四层是实际跑在互联网上的那套实现。分层最大的好处是排障时能逐层定位——ping 通了说明网络层往下没问题,端口连不上要往传输层和应用层查。把每个协议摆对它该在的层,后面遇到任何网络问题都有一套下手的位置。