一、计算机网络背景
网络发展
计算机网络的诞生核心是解决「独立计算机无法共享资源、远距离传递信息」的问题,发展历程可以概括为 4 个阶段:
- 萌芽阶段:1969 年美国 ARPANET(阿帕网)诞生,是最早的分组交换网络,最初只连接 4 所大学的计算机,是互联网的雏形。
- 标准化阶段:早期不同厂商的设备有各自的私有协议,无法互通。70-80 年代 TCP/IP 协议簇逐步成熟,1983 年 ARPANET 全面切换为 TCP/IP 协议,成为互联网的通用标准,不同设备终于可以统一通信。
- 普及阶段:90 年代万维网(WWW)出现,网页、浏览器诞生,互联网从科研机构走向普通用户,进入民用普及期。
- 当下阶段:移动互联网、物联网普及,网络从连接计算机,拓展到连接手机、智能设备,成为社会基础设施。
二、初识协议
1. 什么是协议
网络协议 = 计算机之间通信的「约定规则」。 就像两个人对话要讲同一种语言、遵守基本的对话逻辑,计算机之间收发数据,也要提前约定:数据按什么格式组织、先发什么后发什么、数据出错了怎么处理、对方没收到怎么补救。 所有网络通信都必须遵循协议,否则双方无法识别对方的数据,通信就会失败。
2. 协议分层
软件分层的好处
网络通信是一个非常复杂的问题:要处理物理信号、设备寻址、路径选择、数据可靠传输、业务数据解析...... 如果把所有逻辑写在一起,维护和升级会极其困难。 分层设计的核心思想是:把复杂问题拆成多个独立层次,每层只负责一件事,层与层通过固定接口交互。带来的核心好处有 3 个:
- 解耦易维护:每层可以独立升级、替换,不影响其他层。比如把网线从铜线换成光纤,只改动物理层,上层的网页、APP 完全不用改。
- 降低排查难度:网络出问题可以逐层定位:先看网线插没插(物理层)、再看地址对不对(网络层)、再看连接通不通(传输层),最后看应用有没有问题。
- 便于标准化:不同厂商的设备,只要遵循同层的协议标准,就能互相通信,不会被单一厂商绑定。
生活类比:寄快递的流程就是典型的分层。你只负责打包好商品交给快递员(应用层),快递员负责分拣、运输、派件(传输 / 网络层),公路 / 飞机负责物理运输(物理层),每层各司其职,互不干扰。
OSI 七层模型
OSI 七层模型是国际标准化组织制定的理论参考模型,定义了网络通信的完整分层标准,共 7 层,从上到下分别是:
表格
| 层级 | 名称 | 核心功能 |
|---|---|---|
| 第 7 层 | 应用层 | 直接面向用户,提供具体的应用服务,定义业务数据的格式,比如网页、文件传输 |
| 第 6 层 | 表示层 | 负责数据的格式转换、加密解密、压缩解压,让不同设备能识别统一的数据格式 |
| 第 5 层 | 会话层 | 负责建立、管理、断开应用之间的会话连接,控制通信的开始和结束 |
| 第 4 层 | 传输层 | 端到端的进程通信,定位到具体的应用程序,保证传输的可靠性 / 效率 |
| 第 3 层 | 网络层 | 跨网络寻址、选择传输路径,在全网范围内定位目标设备 |
| 第 2 层 | 数据链路层 | 同一局域网内的数据传输,通过 MAC 地址定位设备,负责差错校验 |
| 第 1 层 | 物理层 | 把数据转换成电信号、光信号、无线信号,通过物理介质传输比特流 |
TCP/IP 五层(或四层)模型
OSI 七层是理论标准,实际工业界落地使用的是TCP/IP 模型,它把 OSI 的上层做了合并,更贴合实际开发。
- 五层说法:应用层(合并 OSI 的应用层 + 表示层 + 会话层)、传输层、网络层、数据链路层、物理层
- 四层说法:把数据链路层 + 物理层合并为「网络接口层」,即:应用层、传输层、网际层(网络层)、网络接口层
我们日常学习和开发中,更常用五层模型来理解,对应关系和核心协议如下:
表格
| TCP/IP 五层 | 对应 OSI 七层 | 核心协议 / 设备 |
|---|---|---|
| 应用层 | 应用层 + 表示层 + 会话层 | HTTP、HTTPS、FTP、DNS |
| 传输层 | 传输层 | TCP、UDP;端口号 |
| 网络层 | 网络层 | IP、ICMP;路由器 |
| 数据链路层 | 数据链路层 | 以太网协议;交换机、网卡 |
| 物理层 | 物理层 | 网线、光纤、无线信号 |
三、再识协议
1. 为什么要有 TCP/IP 协议?
早期计算机网络没有统一标准,不同厂商、不同品牌的设备有各自的私有协议,A 厂商的电脑无法和 B 厂商的电脑通信,网络之间是割裂的。 TCP/IP 协议的出现,就是为了制定一套全球通用的通信标准:
- 所有设备都遵守同一套规则,不管是什么品牌、什么系统,都能互联互通;
- 屏蔽底层硬件差异,上层应用不用关心底层是网线还是光纤,只需要基于 TCP/IP 开发即可。
2. 什么是 TCP/IP 协议?
注意:TCP/IP 不是「TCP 协议 + IP 协议」两个协议,而是以 TCP、IP 为核心的一整套协议簇,包含了从底层到应用层的几十种协议,比如 ARP、ICMP、UDP、HTTP、FTP、DNS 都属于 TCP/IP 协议簇。 它定义了数据如何封装、如何寻址、如何路由、如何保证可靠传输,是整个互联网的通用语言。
3. TCP/IP 协议与操作系统的关系(宏观视角)
TCP/IP 协议栈是实现在操作系统内核中的:
- 操作系统把复杂的网络底层逻辑(数据封装、路由查找、连接管理、重传控制)全部封装在内核里,不需要应用程序自己实现;
- 操作系统向上层应用提供统一的编程接口 ------ 也就是 Socket(套接字)接口;
- 应用程序只需要调用 Socket 接口,就能完成网络通信,不用关心底层网卡怎么发数据、路由怎么选路径。
简单理解:操作系统内核是「网络通信的执行者」,Socket 是「应用和内核之间的接口」,TCP/IP 协议是「执行时遵守的规则」。
4. 所以究竟什么是协议?
总结来说:协议是通信双方预先约定好的、必须共同遵守的规则集合,它明确规定了三个核心问题:
- 数据要封装成什么格式(语法);
- 数据发送的顺序、什么时候该回复(时序);
- 数据出错、异常时该怎么处理(语义)。 小到两个单片机通信,大到全球互联网,所有网络通信都离不开协议。
四、网络传输基本流程
1. 局域网络传输流程
局域网(以太网为例)通信原理
局域网指的是同一个网段内的设备组成的网络,比如家庭、办公室的内网。局域网内的通信,核心依靠MAC 地址和交换机完成:
- 发送方知道目标 IP,但不知道目标 MAC 地址,先发送一个ARP 广播包:「IP 是 xxx 的设备请回复你的 MAC 地址」,局域网内所有设备都能收到;
- 只有 IP 匹配的设备会回复 ARP 应答,告诉发送方自己的 MAC 地址;
- 发送方把数据封装成以太网帧,填上源 MAC 和目标 MAC,发送给交换机;
- 交换机根据 MAC 地址表,把数据帧直接转发到目标设备对应的端口,完成局域网内通信。
认识 MAC 地址
MAC 地址(物理地址)是数据链路层的地址,有两个核心特点:
- 全球唯一:每块网卡出厂时都会烧录一个 48 位的 MAC 地址,全世界没有重复,相当于网卡的「身份证号」;
- 仅局域网有效:MAC 地址只用来在同一个局域网内定位设备,跨网络通信时,MAC 地址会逐跳替换,不会传到外网。
数据封装和分用
数据在网络中传输,核心动作就是「发送端封装,接收端分用」,这是分层模型的直接体现:
-
封装(发送端,从上到下): 应用层生成业务数据 → 传输层添加 TCP/UDP 头部(含源目端口) → 网络层添加 IP 头部(含源目 IP) → 数据链路层添加帧头部(含源目 MAC) → 物理层转换成比特流发送出去。 每一层都会给数据加上自己的头部,就像寄快递逐层套包装盒、贴标签。
-
分用(接收端,从下到上): 物理层收到比特流 → 链路层拆帧头、校验数据 → 网络层拆 IP 头、检查目标 IP → 传输层拆 TCP 头、匹配端口 → 最终把纯业务数据交给上层应用。 每一层只处理自己的头部,处理完就拆掉,把剩下的数据交给上一层。
2. 跨网络传输流程
跨网段、跨城市的通信,需要经过路由器逐跳转发,核心依靠IP 地址选路,完整流程可以概括为:
- 发送方判断目标 IP 和自己不在同一网段,把数据发给自己的网关(路由器内网口);
- 路由器收到数据后,查看 IP 头部的目标 IP,查询自己的路由表,选择一条最优的路径,把数据转发给下一个路由器;
- 数据经过多个路由器逐跳转发,最终到达目标 IP 所在的局域网;
- 目标局域网的路由器,通过 ARP 找到目标设备的 MAC 地址,把数据封装成帧,交给目标设备。
简单理解:IP 地址负责「找城市、找小区」,MAC 地址负责「找楼、找房间」;跨网靠 IP 路由,内网靠 MAC 寻址。
3. 网络中的地址管理 - 认识 IP 地址
IP 地址是网络层的地址,作用是在全网范围内定位一台网络设备,相当于网络世界的「门牌号」。
- 我们常用的 IPv4 是 32 位二进制地址,通常写成「点分十进制」格式,比如
192.168.1.1,分成 4 段,每段 0-255; - IP 地址分为两部分:网络位 (标识属于哪个网段)+ 主机位(标识网段内的具体设备);
- 同一个网段内的设备,网络位相同,可以直接通信;网络位不同,就必须通过路由器转发才能通信。
谢谢