TCP/IP协议族在OSI模型中的完整分布——一张图看懂网络协议

🔊

这篇以 OSI 七层模型为框架,把 TCP/IP 协议族里的每个协议摆到它真正工作的那一层,再补上网页访问、邮件发送等场景里各层协议怎么协作,以及排障时常用的诊断命令。

什么是 OSI 模型?

OSI(Open Systems Interconnection)模型把网络通信过程切成七层。实际工程里 TCP/IP 模型用得更广,但 OSI 这套分层对理解"一个协议到底管什么"很有用。

OSI 七层从下到上:

  1. 物理层(Physical Layer): 传输原始比特流
  2. 数据链路层(Data Link Layer): 提供节点间的可靠通信
  3. 网络层(Network Layer): 负责路由和转发
  4. 传输层(Transport Layer): 提供端到端的通信
  5. 会话层(Session Layer): 管理会话连接
  6. 表示层(Presentation Layer): 数据格式转换和加密
  7. 应用层(Application Layer): 用户接口和应用程序协议

什么是 TCP/IP 协议族?

TCP/IP 协议族是互联网跑起来的那套协议,比 OSI 简洁实用,通常分成四层:

  1. 应用层(Application Layer)
  2. 传输层(Transport Layer)
  3. 网络层(Network Layer)
  4. 网络接口层(Network Interface Layer)

TCP/IP 协议族在 OSI 模型中的分布

先看数据从上到下穿过协议栈时怎么一层层被封装。每过一层,上层数据就被加上一个对应层的头部,最终在物理层变成比特流上线传输。

mermaid
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域名解析为 IP53分布式命名系统,互联网基础设施
DHCP自动分配 IP67 服务 / 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 对比

特性TCPUDP
连接性面向连接无连接
可靠性可靠传输不可靠传输
顺序性保证顺序不保证顺序
速度较慢较快
开销较大较小
应用场景文件传输、网页浏览实时视频、在线游戏、DNS 查询

TCP 之所以可靠,靠的是连接建立时的三次握手、传输中的确认与重传、断开时的四次挥手。下面两张图把这两个过程画出来。

TCP 三次握手(连接建立)

客户端和服务器各发一个 SYN、再各回一个 ACK,双方都确认了对方的接收能力,连接才算建好。

mermaid
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 是全双工的:双方各自独立关闭自己的发送通道。

mermaid
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外部网关路由路径向量、策略丰富、互联网骨干协议
ARPIP→MAC 解析广播请求、单播应答、维护 ARP 缓存

三种路由协议的分工要分清:OSPF 和 RIP 都是内部网关协议(IGP),管一个自治域(AS)内部怎么走;BGP 是外部网关协议(EGP),管不同 AS 之间怎么走,整个互联网的跨域连通靠它。同为 IGP,OSPF 是链路状态算法(每台路由器掌握全网拓扑,算最短路径),RIP 是距离矢量算法(只跟邻居交换跳数表),所以 OSPF 收敛快、RIP 在大网络里扛不住。

ARP 解析过程

ARP 把 IP 地址翻译成数据链路层要用的 MAC 地址。主机先在全网广播"这个 IP 是谁",目标主机认出自己的 IP 后单播回 MAC,请求方存进 ARP 缓存,之后直接用。

mermaid
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 针、以太网双绞线连接

协议通信实例

网页访问过程

当你访问一个网站时,各个层次的协议是如何协同工作的?

  1. 应用层: 浏览器发起 HTTP 请求
  2. 表示层: 如果使用 HTTPS,SSL/TLS 会加密数据
  3. 会话层: 建立和管理会话连接
  4. 传输层: TCP 协议确保数据可靠传输
  5. 网络层: IP 协议负责数据包的路由和转发
  6. 数据链路层: 以太网协议在局域网内传输数据
  7. 物理层: 通过物理介质传输比特流

邮件发送过程

发送一封电子邮件时:

  1. 应用层: MUA(邮件用户代理)通过 SMTP 发送邮件
  2. 传输层: TCP 确保邮件数据的可靠传输
  3. 网络层: IP 协议将邮件数据路由到目标服务器
  4. 数据链路层: 在网络中传输数据包
  5. 物理层: 通过物理网络传输数据

常见网络故障诊断

ping 命令的使用

bash
1
2
3
4
5
6
7
8
# 测试网络连通性
ping 8.8.8.8

# 指定次数
ping -c 4 8.8.8.8

# 指定包大小
ping -s 1024 8.8.8.8

traceroute 路径追踪

bash
1
2
3
4
5
# Linux/macOS
traceroute 8.8.8.8

# Windows
tracert 8.8.8.8

netstat 网络状态查看

bash
1
2
3
4
5
6
7
8
# 查看所有网络连接
netstat -an

# 查看监听端口
netstat -ltn

# 查看网络统计信息
netstat -s

tcpdump 网络包分析

bash
1
2
3
4
5
6
7
8
# 监听特定端口的流量
tcpdump -i any port 80

# 保存捕获的数据包
tcpdump -w capture.pcap

# 读取保存的数据包
tcpdump -r capture.pcap

网络安全考虑

防火墙配置

bash
1
2
3
4
5
6
7
8
9
# 检查防火墙状态
sudo ufw status

# 允许特定端口
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp

# 拒绝特定端口
sudo ufw deny 443/tcp

SSL/TLS 配置

bash
1
2
3
4
5
6
# 生成私钥和证书
openssl genrsa -out server.key 2048
openssl req -new -x509 -key server.key -out server.crt -days 365

# 查看证书信息
openssl x509 -in server.crt -text

小结

OSI 七层是理解网络协议分工的框架,TCP/IP 四层是实际跑在互联网上的那套实现。分层最大的好处是排障时能逐层定位——ping 通了说明网络层往下没问题,端口连不上要往传输层和应用层查。把每个协议摆对它该在的层,后面遇到任何网络问题都有一套下手的位置。