本文是关于 OSI(开放系统互联)模型的复盘。OSI模型是一个概念性框架,用于理解和标准化网络通信中各种功能的实现方式。它将复杂的通信过程分解为七个独立的层次,每一层都为上一层提供服务,并利用下一层的服务。
核心思想与价值
- 分层解耦:每层只关心自己的特定功能,不关心其他层如何具体实现。这使得开发、替换和升级某一层的技术变得非常容易。例如,从以太网升级到Wi-Fi(主要影响第1、2层),上层的IP协议和应用软件完全无需改动。
- 通用语言:为全世界的网络技术讨论提供了一个标准术语。当工程师说“这是一个三层问题”或“需要在七层做过滤”时,所有人都能明白其含义。
- 教学与排错工具:是学习网络知识的最佳路线图,也是网络故障排查的黄金法则(通常从底层往顶层逐层检查)。
OSI七层模型详解(从底层到顶层)
为了更好地理解,我们用“在公司A的电脑上,用邮件客户端给公司B的同事发送一封带附件的邮件”这个例子,贯穿整个七层。
第1层:物理层
- 功能:负责在物理媒介上透明地传输原始比特流(0和1)。定义电气、机械、功能和过程的特性。
- 例如:网线/光纤的接口形状、电压大小、光信号频率、比特同步等。
- 关键设备/组件:网线(双绞线、光纤)、集线器、中继器、网卡接口、无线电磁波。
- 数据单位:比特。
- 生活比喻:修建道路和制造车辆。它负责把货物(比特)从A地的仓库门口,搬到开往B地的卡车上,只关心货物是否完整搬上去了,不关心货物是什么。
第2层:数据链路层
- 功能:在直接相连的节点之间建立可靠的数据传输链路。主要处理MAC地址,提供差错检测(不纠正),控制物理介质的访问。
- 例如:将网络层传来的数据包封装成帧,添加源/目标MAC地址,通过交换机在局域网内转发。
- 关键设备:二层交换机、网桥。
- 关键协议:以太网、Wi-Fi、PPP、帧中继。
- 数据单位:帧。
- 生活比喻:本地物流公司。它负责在公司A所在的园区内,根据卡车车牌号(MAC地址)将包裹(帧)装上正确的本地卡车,并运送到园区出口(网关路由器)。它确保在园区内不出错。
第3层:网络层
- 功能:负责将数据从源网络路由到目标网络。主要处理IP地址,实现寻址和最短路径选择。
- 这是实现“全球互联”的关键一层。路由器查看目标IP地址,查询路由表,决定数据包下一跳该发给谁。
- 关键设备:路由器、三层交换机。
- 关键协议:IP、ICMP、OSPF、BGP。
- 数据单位:数据包。
- 生活比喻:全国/全球物流调度中心。它查看包裹上的收件人地址(IP地址),分析目的地(公司B)在哪个城市,规划出跨越多个城市的运输路线,并决定在每一个中转站(路由器)下一步往哪里走。
第4层:传输层
- 功能:提供端到端的、可靠或不可靠的通信服务。主要处理端口号,负责数据分段、流量控制、差错恢复。
- 例如:TCP协议会建立连接、确认数据到达、重传丢失的数据。UDP协议则简单快速地发送,不保证到达。
- 关键协议:TCP、UDP。
- 数据单位:段。
- 生活比喻:快递公司的客户服务与分拣系统。
- TCP:像顺丰,提供门到门、签收确认、丢件重发的可靠服务。它告诉发货方“对方已收到第三箱货物”。
- UDP:像普通邮局,把信扔进邮筒就不管了,可能丢失,但成本低、速度快。
- 端口号:相当于公司B的具体部门或前台(如“财务部收”或“前台转技术部小明”),确保邮件被送到正确的应用程序(如邮件服务器进程)。
第5层:会话层
- 功能:建立、管理和终止两个应用程序之间的会话。负责对话控制和同步。
- 例如:在传输层连接之上,管理是一次通话还是多次通话,从哪里断开会话需要恢复等。网络文件共享、视频会议中用到。
- 关键协议/应用:NetBIOS、RPC、SSH会话的建立/断开。
- 生活比喻:商务会谈的协调员。负责确定这次会议是电话会议还是视频会议,什么时候开始,什么时候暂停,如果中途断线,是重新开始还是从断点继续。
第6层:表示层
- 功能:充当数据的“翻译官”。确保一个系统应用层发出的信息能被另一个系统的应用层读取。负责数据格式转换、加密解密、压缩解压缩。
- 例如:将JPEG图片格式转换为GIF,将ASCII码转换为EBCDIC码,使用SSL/TLS进行加密。
- 关键技术:加密、ASCII、JPEG、MPEG。
- 生活比喻:翻译和秘书。负责把公司A用中文写的商业信函(应用层数据),翻译成公司B能理解的英文。同时,把信函内容用密码本加密,以防被人偷看。
第7层:应用层
- 功能:最接近用户的层级,为应用程序提供网络服务接口。用户与网络的交互就在这里发生。
- 注意:它不是指Firefox、微信这些应用程序本身,而是这些程序为了实现网络功能所使用的协议。
- 关键协议:HTTP、HTTPS、SMTP、POP3、FTP、DNS、Telnet。
- 生活比喻:写信的商务人士。他想写一封邮件(应用数据)。他需要使用“邮件撰写”这个服务(应用层协议),按照邮件的格式(如收件人、主题、正文、附件)来组织内容。他只关心“把信寄出去”这个结果。
数据封装与解封过程
当数据从发送方应用程序产生,到最终变成物理线缆上的比特流,经历了一个 “自上而下封装” 的过程:
- 用户在邮件客户端输入内容(应用层数据)。
- 邮件客户端使用SMTP协议格式化数据,交给表示层。
- 表示层可能进行加密或压缩。
- 会话层建立与邮件服务器的会话。
- 传输层(TCP)将数据分段,添加TCP头(含源/目标端口号)。
- 网络层(IP)添加IP头(含源/目标IP地址),形成数据包。
- 数据链路层添加帧头帧尾(含源/目标MAC地址),形成帧。
- 物理层将帧转换为比特流,通过网线/光纤/电波发送出去。
在接收方,则经历一个反向的 “自下而上解封” 过程,逐层剥离头部信息,最终将原始数据交给目标应用程序。
OSI模型 vs. TCP/IP模型(现实世界)
OSI是一个完美的理论模型,而现实互联网中广泛使用的是更简化的 TCP/IP模型(或称Internet协议套件)。两者的对应关系如下:
| OSI七层模型 | TCP/IP四层模型 | 核心协议举例 |
|---|---|---|
| 应用层、表示层、会话层 | 应用层 | HTTP, SMTP, FTP, DNS |
| 传输层 | 传输层 | TCP, UDP |
| 网络层 | 网络层 | IP, ICMP, OSPF |
| 数据链路层、物理层 | 网络接口层 | Ethernet, Wi-Fi, PPP |