深入浅出计算机网络基石:详解 OSI 模型、TCP/IP 模型及数据通信全过程
前言
大家好,这里是程序员阿亮,今天也是在公司里面当起黑奴了,实习生,大小周,不包饭,吃公司饭还要收钱。。。
但是博客还是要写滴
今天来给大家讲解一下OSI七层模型和TCP/IP模型
这是计算机网络中的基础架构,也是我们计算机网络通信的基本规则。
在互联网时代,我们在微信上发的一条消息、在浏览器里输入的一个网址,只需毫秒之间就能跨越千山万水到达对方屏幕上。这一切看似变魔术般的背后,隐藏着一套极其精密且严谨的规则。
如果全世界的计算机没有统一的“语言”和“礼仪”,它们就会像建巴别塔的人类一样,因为无法沟通而陷入混乱。为了解决这个问题,网络专家们制定了网络分层模型:OSI 参考模型和 TCP/IP 模型。
一、理论上的完美教科书:OSI 七层模型
OSI(Open Systems Interconnection,开放系统互连)模型是由国际标准化组织(ISO)在 1984 年提出的。它将网络通信的工作分为 7 个层级。虽然在实际应用中它显得有些过于繁琐,但它是理解网络通信逻辑的最佳“教科书”。但是不是最佳实践,在常用的分层模型中一般是简化为五层或者四层的TCP/IP模型。
我们就自顶向下,从上到下(第 7 层 -> 第 1 层)来拆解它:
第 7 层:应用层 (Application Layer)
-
职责:这是最靠近用户的一层,负责为计算机上的应用程序提供网络服务。它不指应用程序本身(比如 Chrome 浏览器),而是指应用程序所使用的通信协议。
-
常见协议:HTTP/HTTPS (网页浏览)、FTP (文件传输)、SMTP/POP3 (电子邮件)、DNS (域名解析)。
也就是说应用层如其名是在应用层面的交互,是我们应用程序与网络交互的协议栈
第 6 层:表示层 (Presentation Layer)
-
职责:负责数据的翻译、加密、解密和压缩。它确保发送方发送的数据,接收方能够看得懂。
-
工作内容:将本地字符集转换为标准格式(如 ASCII 或 UTF-8),对图像视频流进行编解码(JPEG, MPEG),对敏感数据进行 TLS/SSL 加密。
也就是说表示层一般是对数据进行加密、解密、格式转换等的层
第 5 层:会话层 (Session Layer)
-
职责:负责在网络中的两台设备之间建立、管理和终止会话。它可以在数据传输中断时提供恢复点(检查点),实现断点续传。
-
常见协议:RPC, NetBIOS。
在现代开发中一般会话层是被整合到了应用层,表示层也是
现在会话的管理一般是基于Token/Cookie等来实现
第 4 层:传输层 (Transport Layer)
-
职责:负责端到端(End-to-End)的数据传输。它不仅将大块数据切割成小块(分段),还负责通过“端口号”区分这些数据是给哪个应用程序的(比如 80 端口给网页,22 端口给 SSH)。它还决定了传输的可靠性要求。
-
核心协议:
-
TCP(传输控制协议):可靠、需建立连接、保证数据不丢不乱(像寄挂号信)。
-
UDP(用户数据报协议):速度快、不建立连接、不保证送达(像寄明信片)。
-
需要注意的是传输层是端对端的,是可以区分不同的应用程序的
第 3 层:网络层 (Network Layer)
-
职责:负责在不同的网络之间(比如从你家局域网到国外的服务器)寻找最佳路径,并进行逻辑寻址。
-
核心概念/协议:IP 协议(IPv4/IPv6)、IP 地址、路由器。
第 2 层:数据链路层 (Data Link Layer)
-
职责:负责在同一个本地网络(相邻节点)内进行数据传输,并将物理层的电信号组装成有意义的数据帧。它还负责物理寻址和错误检测。
-
核心概念/协议:MAC 地址、以太网(Ethernet)、Wi-Fi(802.11)、交换机。
这里大家可能有疑惑,网络层是逻辑寻址,也就是逻辑寻址 + 路由选择,区分不同网络/子网
而数据链路层是物理寻址,物理寻址,区分同一局域网内不同设备
简单说就是
每经过一个路由器,数据链路层的源/目的 MAC 地址都会重写,但传输层的端口和网络层的 IP(NAT 除外)全程保持不变。
第 1 层:物理层 (Physical Layer)
-
职责:最底层,负责传输原始的比特流(0 和 1)。它定义了硬件设备的机械、电子、功能和过程特性。
-
核心概念:网线(双绞线)、光纤、无线电波、中继器、集线器。
二、TCP/IP模型
我们会发现实际上OSI模型划分的很细,看起来很完美,但是在实践中并不多用
在实践中我们基本上都是使用TCP/IP的五层或者四层模型。
| OSI 七层模型 | TCP/IP 四层模型 | TCP/IP 五层对等模型 (常用教学) | 核心协议 |
| 应用层 | 应用层 (Application) | 应用层 | HTTP, FTP, DNS, SMTP |
| 表示层 | |||
| 会话层 | |||
| 传输层 | 传输层 (Transport) | 传输层 | TCP, UDP |
| 网络层 | 网络层 / 互联网层 (Internet) | 网络层 | IP, ICMP, ARP |
| 数据链路层 | 网络接口层 (Network Access)} | 数据链路层 | Ethernet, Wi-Fi, MAC |
| 物理层 | 物理层 | 光纤, 双绞线 (0101信号) |
为什么TCP/IP更受青睐呢?
因为它“重实效”。它把 OSI 中过于细化、很多时候用不到的表示层和会话层直接打包进了应用层,并把关注点集中在了保证网络连通的核心:IP(找路) 和 TCP(保证送达) 上。
三、数据通信全流程
了解了层级,接下来我们看看当我们在浏览器输入 www.example.com 并按下回车时,数据到底经历了什么?
这个过程分为发送端的封装(Encapsulation)和接收端的解封装(Decapsulation)。
阶段一:发送端的“俄罗斯套娃”(数据封装)
数据从顶层向下层传递,每一层都会给数据加上一个自己的“头部”(Header),就像俄罗斯套娃一样,包上一层又一层。
-
应用层 (L7):
浏览器生成一段 HTTP GET 请求数据:“请给我 example.com 的首页”。此时的数据被称为 消息 (Message / Data)。 -
传输层 (L4):
HTTP 消息来到传输层。TCP 协议接管,它将大块消息切分,并在前面加上 TCP Header(包含源端口如 54321,目标端口 80/443)。-
此时的数据包叫做:数据段 (Segment)。
-
-
网络层 (L3):
TCP 数据段来到网络层。IP 协议在外面再加上 IP Header(包含你电脑的源 IP 地址,和 DNS 解析出来的目标服务器 IP 地址)。-
此时的数据包叫做:数据包 (Packet)。
-
-
数据链路层 (L2):
IP 数据包来到链路层。以太网协议在前面加上 MAC Header(包含你网卡的源 MAC 地址,以及你家路由器的目标 MAC 地址),并在尾部加上 **FCS 校验码(Trailer)**以防数据损坏。-
此时的数据包叫做:数据帧 (Frame)。
-
-
物理层 (L1):
庞大的数据帧最终被转换成二进制的 比特流 (Bits) —— 01010101,通过网线变成电脉冲,或者通过路由器天线变成无线电波,发射出去。
阶段二:网络中的接力跑(路由转发)
你的请求离开家后,会到达运营商的路由器。
-
路由器主要在 网络层 (L3) 工作。它会拆开外层的 MAC 头部,查看里面的 IP 头部。
-
路由器通过查找路由表,发现“哦,这个 IP 在美国”,于是它修改 MAC 头部(换成下一个路由器的 MAC),然后再次打包成帧,传给下一个节点。
-
这个“拆 MAC -> 看 IP -> 换 MAC”的过程会在全球的海底光缆和无数路由器之间接力数十次,直到到达目标服务器。
阶段三:接收端的“剥洋葱”(数据解封装)
最终,电信号到达了 example.com 的服务器网卡。服务器开始自底向上“剥洋葱”:
-
物理层 (L1):网卡接收到电信号,还原成二进制比特流,交给上一层。
-
数据链路层 (L2):服务器检查 MAC 头部,确认“这是发给我的网卡的”,然后拆掉 MAC 头部和尾部,检查数据是否在传输中损坏。如果完好,把里面的 IP 数据包交给上一层。
-
网络层 (L3):服务器检查 IP 头部,确认“目标 IP 确实是我”,拆掉 IP 头部,把里面的 TCP 数据段交给上一层。
-
传输层 (L4):服务器检查 TCP 头部,看到“目标端口是 443”。它知道 443 端口对应的是 Web 服务器软件(如 Nginx 或 Apache)。它剥离 TCP 头部,把纯净的数据按照顺序拼装好,交给 443 端口绑定的程序。
-
应用层 (L7):Nginx 软件拿到了最初的那段 HTTP GET 请求消息。它理解了请求的含义,在硬盘里找到首页对应的 HTML 文件。
随后,服务器把 HTML 文件作为响应数据,再次经历上述完整的封装过程,顺着原路发送回你的电脑。你的浏览器拿到 HTML 并渲染,网页就这么呈现在了你的眼前!
总结
网络通信的本质,就是分工与协作。
OSI 模型提供了完美的理论框架,TCP/IP 模型构筑了现实的互联网世界。每一层恪尽职守,下层为上层提供服务,上层无需关心下层的具体实现细节(比如应用层的浏览器根本不需要管现在连的是 Wi-Fi 还是插的网线)。
正是这种严密的分层架构和封装/解封装机制,支撑起了今天这个每秒传输着亿万字节、连接着全球几十亿人的庞大数字世界。理解了它们,你就拿到了打开计算机网络大门最关键的那把钥匙。

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)