前言

大家好,这里是程序员阿亮,今天也是在公司里面当起黑奴了,实习生,大小周,不包饭,吃公司饭还要收钱。。。

但是博客还是要写滴

今天来给大家讲解一下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),就像俄罗斯套娃一样,包上一层又一层。

  1. 应用层 (L7)
    浏览器生成一段 HTTP GET 请求数据:“请给我 example.com 的首页”。此时的数据被称为 消息 (Message / Data)

  2. 传输层 (L4)
    HTTP 消息来到传输层。TCP 协议接管,它将大块消息切分,并在前面加上 TCP Header(包含源端口如 54321,目标端口 80/443)。

    • 此时的数据包叫做:数据段 (Segment)

  3. 网络层 (L3)
    TCP 数据段来到网络层。IP 协议在外面再加上 IP Header(包含你电脑的源 IP 地址,和 DNS 解析出来的目标服务器 IP 地址)。

    • 此时的数据包叫做:数据包 (Packet)

  4. 数据链路层 (L2)
    IP 数据包来到链路层。以太网协议在前面加上 MAC Header(包含你网卡的源 MAC 地址,以及你家路由器的目标 MAC 地址),并在尾部加上 **FCS 校验码(Trailer)**以防数据损坏。

    • 此时的数据包叫做:数据帧 (Frame)

  5. 物理层 (L1)
    庞大的数据帧最终被转换成二进制的 比特流 (Bits) —— 01010101,通过网线变成电脉冲,或者通过路由器天线变成无线电波,发射出去。

阶段二:网络中的接力跑(路由转发)

你的请求离开家后,会到达运营商的路由器。

  • 路由器主要在 网络层 (L3) 工作。它会拆开外层的 MAC 头部,查看里面的 IP 头部

  • 路由器通过查找路由表,发现“哦,这个 IP 在美国”,于是它修改 MAC 头部(换成下一个路由器的 MAC),然后再次打包成帧,传给下一个节点。

  • 这个“拆 MAC -> 看 IP -> 换 MAC”的过程会在全球的海底光缆和无数路由器之间接力数十次,直到到达目标服务器。

阶段三:接收端的“剥洋葱”(数据解封装)

最终,电信号到达了 example.com 的服务器网卡。服务器开始自底向上“剥洋葱”:

  1. 物理层 (L1):网卡接收到电信号,还原成二进制比特流,交给上一层。

  2. 数据链路层 (L2):服务器检查 MAC 头部,确认“这是发给我的网卡的”,然后拆掉 MAC 头部和尾部,检查数据是否在传输中损坏。如果完好,把里面的 IP 数据包交给上一层。

  3. 网络层 (L3):服务器检查 IP 头部,确认“目标 IP 确实是我”,拆掉 IP 头部,把里面的 TCP 数据段交给上一层。

  4. 传输层 (L4):服务器检查 TCP 头部,看到“目标端口是 443”。它知道 443 端口对应的是 Web 服务器软件(如 Nginx 或 Apache)。它剥离 TCP 头部,把纯净的数据按照顺序拼装好,交给 443 端口绑定的程序。

  5. 应用层 (L7):Nginx 软件拿到了最初的那段 HTTP GET 请求消息。它理解了请求的含义,在硬盘里找到首页对应的 HTML 文件。

随后,服务器把 HTML 文件作为响应数据,再次经历上述完整的封装过程,顺着原路发送回你的电脑。你的浏览器拿到 HTML 并渲染,网页就这么呈现在了你的眼前!


总结

网络通信的本质,就是分工与协作
OSI 模型提供了完美的理论框架,TCP/IP 模型构筑了现实的互联网世界。每一层恪尽职守,下层为上层提供服务,上层无需关心下层的具体实现细节(比如应用层的浏览器根本不需要管现在连的是 Wi-Fi 还是插的网线)。

正是这种严密的分层架构和封装/解封装机制,支撑起了今天这个每秒传输着亿万字节、连接着全球几十亿人的庞大数字世界。理解了它们,你就拿到了打开计算机网络大门最关键的那把钥匙。

Logo

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

更多推荐