
先做个小测试。下面这个问题,很多人学完整个计算机网络课程也未必能一句话说清:
"协议到底是什么?"
你大概能背出几个名词:TCP、UDP、HTTP、IP……也能说出来"协议就是约定"。但要是再追问一句:"它到底怎么实现?跟代码有什么关系?"——很多人就卡住了。
这篇文章的目标,就是在接触任何具体协议之前,先把"协议"这个概念的底层逻辑彻底讲透。先立框架,再学细节,后面学 TCP、IP、HTTP 的时候,你会发现自己比别人快得多。
目录
一、计算机网络发展历程
1.独立模式
2.网络互联阶段
3.局域网 LAN
编辑4.广域网 WAN
二、通信的前提:两台计算机必须"说同一种语言"
三、从"约定"到"协议":电话铃声里的道理
四、单靠约定不够:语言不通与标准化的必然
五、拓展:谁来制定标准?从 IEEE 到 W3C、3GPP
1.国际标准化组织
2.区域与行业组织
3.互联网工程组织
4.专注某一领域的"行业大佬"
5.公司
6.官方机构
六、协议的工程灵魂:为什么一定要分层
1.一个最简单的分层例子
2.拓展:分层带来的四个现实好处
七、拓展:OSI 七层,到底分成哪七层?
八、理论 vs 现实:为什么最终赢家是 TCP/IP
1.TCP/IP 五层(或四层)模型速查
2.一套经典的"分层 × 硬件"对应关系
九、用一段代码揭开本质:协议就是"双方都认识的结构化数据类型"
1.于是,协议有了一个非常朴素、也非常本质的定义
2.快递单类比
十、结语
1.一句话总结
2.一张思维导图
一、计算机网络发展历程
计算机网络的演进分为四个阶段:
1.独立模式
计算机彼此孤立,数据互不互通,多人使用只能排队等待处理任务,使用效率极低。

2.网络互联阶段
多台计算机接入服务器,实现数据集中共享,用户可自由切换业务,摆脱排队限制。

3.局域网 LAN
借助交换机、路由器连接大量终端,完成小范围设备组网通信。
4.广域网 WAN
将世界各地的局域网相互连通,实现远距离互联。

局域网与广域网是相对概念,大型广域网,也可以视作规模超大的局域网,二者共同组成现代互联网。
二、通信的前提:两台计算机必须"说同一种语言"
计算机为什么需要网络?因为人是"协作"的动物,而计算机是人制造的工具——人要协同工作,计算机就必须互联,所以网络的出现是必然的。
但把两台计算机用网线连起来,并不等于它们能通信。想想看:
- 物理介质上传输的是光信号和电信号;
- 信号通过"频率"和"强弱"来表示 0 和 1 这样的信息;
- 可光是传出去一串 0/1 没有任何意义——对方根本不知道你在说什么。
就像两个人打电话:声音能传过去,但如果一个说中文、一个说葡萄牙语,那就是鸡同鸭讲。
所以通信的前提是:双方必须共享一套"语言规则"——数据按什么格式组织、先发什么后发什么、谁代表地址、谁代表内容。这套规则,就是协议最初的样子。
三、从"约定"到"协议":电话铃声里的道理
理解"协议"最好的方式,是从生活里找类比。
打电话的例子:你给朋友打电话,双方约定电话铃响几声代表某个信号——比如响一声挂断代表"到了",响两声挂断代表"先走"。这个"响几声"的约定,就是一种最朴素的口头协议。
把场景升级到计算机世界:
- 计算机之间要约定:信号用频率表示还是用强弱表示?
- 数据的格式怎么定义?哪些位是地址,哪些位是数据,数据多长?
- 传完之后如何告诉对方"我说完了"?
这些必须提前约定好,否则对方收到的只是一堆毫无意义的 0/1。
所以,协议的第一层理解:它是通信双方共同遵守的一套约定。
四、单靠约定不够:语言不通与标准化的必然
问题来了:只要通信的两台主机私下约定好协议,就可以了吗?
答案是:不行。
你用"频率"表示 0/1,我用"强弱"表示 0/1——就好比你说中国话、我说葡萄牙语。即便我们遵守的是同一套通信流程(都是先说地址再说数据),底层语言都不同,定好的协议也形同虚设,双方依旧无法正常通信。
所以一个完善的协议,必须包含更多、更细致的规则,并且让参与通信的每一方都遵守。
再把视角拉远一点,你会发现标准化是必然的:
- 计算机生产厂商有很多;
- 操作系统有很多;
- 网络硬件设备还是有很多。
如何让这些不同厂商生产的设备能顺畅地互相通信? 唯一的出路是:有人站出来,定一个共同标准,大家都遵守。 这个"共同标准",才是我们常说的"网络协议"。
五、拓展:谁来制定标准?从 IEEE 到 W3C、3GPP
能定标准的基本都是"业界公认、有江湖地位"的组织。除了IEEE、ISO、ITU、IETF,现实世界还有很多组织在背后默默制定着我们每天用到的协议。这里做一次扩充整理:
1.国际标准化组织
| IEEE | 电气和电子工程师协会 | 制定全球电气、电子和计算机科学领域约 30% 的标准;IEEE 802 系列覆盖局域网到广域网的各种网络技术(Wi-Fi 的 802.11 就是它的杰作) |
| ISO | 国际标准化组织 | 主导了 OSI 开放系统互连模型,定义了网络通信的七层协议结构 |
| ITU | 国际电信联盟 | 联合国下属专门机构,制定电话与网络通信的电信级标准,与 ISO 合作保障全球互操作 |
2.区域与行业组织
- ETSI(欧洲电信标准学会):欧洲各国政府资助,覆盖从研究到标准制定的电信全链条。
- ASTAP(亚洲与泛太平洋电信标准化协会):1998 年由日韩发起,协调亚太地区信息通信基础设施的标准化。
3.互联网工程组织
- IETF(互联网工程任务组):互联网真正的"立法机关"。TCP/IP 协议族几乎全部由它制定,通过 RFC(Request For Comments)文档发布——你现在看到的任何网络协议规范,几乎都能在 RFC 里找到原文。
4.专注某一领域的"行业大佬"
| W3C(万维网联盟) | HTML、CSS、Web 标准 |
| 3GPP(第三代合作伙伴计划) | 移动通信标准,4G/5G 的制定者 |
| 蓝牙 SIG(蓝牙技术联盟) | 蓝牙协议 |
| GSMA | 全球移动通信协会,SIM 卡、移动服务规范 |
5.公司
一些公司也自研标准协议栈,例如泰凌微自研低功耗蓝牙、Zigbee、Thread、Matter 等协议栈并可定制化,这是其核心竞争力。
6.官方机构
- FCC(美国联邦通信委员会):美国官方通信管理机构,监管无线电、电视和有线通信,审查通信产品技术特性。
小结:标准不是谁想定就能定的,它需要权威、共识和生态。 理解"标准从哪来",你就明白了为什么全世界数以亿计的设备能互相通信——因为它们遵守的是同一套"世界通用语言"。
六、协议的工程灵魂:为什么一定要分层
有了标准,问题解决了吗?还没有。因为真实的网络协议极其复杂,如果做成一个"大礼包",任何厂商都维护不起。
这里有个非常关键的思维:
协议本质也是软件。 软件设计追求模块化、解耦合,所以协议也被设计成了层状结构。
1.一个最简单的分层例子
假设我们的"协议"只有两层:语言层 + 通信设备层。
- 通信设备层负责"怎么把电信号发出去"(相当于电话线);
- 语言层负责"我要表达什么意思"(相当于中文还是英文)。
想换语言?只改语言层。想换传输介质?只改设备层。两层互不影响,各改各的——这就是解耦合。真实的网络协议比这复杂得多,要分更多层,但设计哲学是一样的:分层让软件维护成本更低。
2.拓展:分层带来的四个现实好处
七、拓展:OSI 七层,到底分成哪七层?

OSI七层参考模型是ISO(国际标准化组织)制定的网络理论标准。OSI作为参考规范,其分层思想被实际使用的TCP/IP模型借鉴,但互联网并未完全实现OSI标准。
课程里提到 OSI 七层模型时只说"把网络逻辑上分成 7 层",但常常不展开。这里把每一层补全——这是理解整个网络的坐标系,值得先记下来。
| 7 | 应用层 | 面向用户的应用交互 | HTTP、FTP、SMTP、DNS |
| 6 | 表示层 | 数据格式转换、加密压缩 | JPEG、ASCII、TLS(可归此层) |
| 5 | 会话层 | 建立/管理/终止会话 | NetBIOS、RPC |
| 4 | 传输层 | 端到端的可靠传输 | TCP、UDP |
| 3 | 网络层 | 地址管理与路由选择 | IP、路由器 |
| 2 | 数据链路层 | 帧的传送与差错检测 | 以太网、交换机 |
| 1 | 物理层 | 光/电信号的传输方式 | 双绞线、光纤、Hub |


OSI 模型最大的贡献,是把 服务、接口、协议 三个概念清晰区分开:
- 协议:同层之间如何通信的规则(对等层之间说话用的语言);
- 接口:本层如何被上层调用(上下层之间的"电话");
- 服务:本层能为上层提供什么能力(上层能获得的东西)。
这个概念区分是网络理论里最精华的部分,后面写 Socket 程序时你会真切体会到"接口"的分量。
八、理论 vs 现实:为什么最终赢家是 TCP/IP
你可能要问:OSI 七层这么完美,为什么实际用的是 TCP/IP 五层(或四层)?
真实原因是多方面的:
1.TCP/IP 五层(或四层)模型速查
| 应用层 | 应用程序之间沟通 | HTTP、SMTP、FTP、Telnet | —— |
| 传输层 | 两台主机之间的数据传输 | TCP(可靠)、UDP(不可靠) | —— |
| 网络层 | 地址管理和路由选择 | IP(用 IP 地址标识主机、用路由表规划路径) | 路由器 |
| 数据链路层 | 设备之间数据帧的传送与识别 | 帧同步、冲突检测、差错校验、以太网 | 交换机 |
| 物理层 | 光/电信号的传递方式 | 双绞线、同轴电缆、光纤、Wi-Fi | 集线器 |
物理层的性能决定了最大传输速率、传输距离和抗干扰性。因为网络编程主要关注软件内容,物理层考虑得少,所以很多场合直接称 TCP/IP 四层模型。
2.一套经典的"分层 × 硬件"对应关系
- 主机:内核实现了从传输层到物理层(应用层是用户程序);
- 路由器:实现了从网络层到物理层;
- 交换机:实现了从数据链路层到物理层;
- 集线器(Hub):只实现了物理层。
注意"并不绝对":很多交换机支持网络层转发,很多路由器能做端口转发。但记住这张主力分工图,就是理解整个网络的地图。
九、用一段代码揭开本质:协议就是"双方都认识的结构化数据类型"
概念讲了这么多,协议的"本质"到底长什么样?别急,一段 C 代码直接把它戳破。
操作系统源码一般用 C/C++ 编写。设想通信双方定义了一个一模一样的结构体:
// 通信双方都"复制粘贴"了这份代码
struct protocol
{
int a; // 4 字节
int b; // 4 字节
int c; // 4 字节
};
// 发送方:构造数据并发出去
struct protocol data = {10, 20, 30};
send_data(&data, sizeof(data));
接收方收到一串字节流后,只要按同一个结构体去解析,就能还原出 a = 10, b = 20, c = 30。
📌 问题:主机 B 能识别 data,并准确提取出 a=10、b=20、c=30 吗?
回答:答案是肯定的! 因为双方都有同样的结构体类型 struct protocol。
- 用同样的代码实现协议;
- 用同样的数据类型定义数据。
双方天然就具有"共识",能够解析对方发来的数据——这不就是约定吗?
这也就解释了为什么Linux和Windows之间可以进行互相联系了

1.于是,协议有了一个非常朴素、也非常本质的定义
所谓协议,就是通信双方都认识的、结构化的数据类型。
再深入一层:因为协议栈是分层的,所以每一层都有双方共同遵守的协议。同层之间,互相能识别对方的协议——应用层对应用层、传输层对传输层、网络层对网络层……每一层的"结构体"长什么样、怎么解析,都由这一层的协议规定。
2.快递单类比
网购商品时,商家把商品(应用层数据)装进箱子,贴上快递单(这一层协议规定的头部信息);快递分拣中心把它装进更大的包裹,再贴一张运输单(下一层协议的头部)……数据每经过一层就被"套"上一层信息。收件时,每一层再一层层拆开,最终把商品送到你手上。
数据向下每过一层就"封装"一次,向上每过一层就"解包"一次——这就是协议分层在数据传输上的真实写照。
十、结语
1.一句话总结
网络让计算机互联,协议是通信双方共同遵守的约定;因为问题能分层,协议也分层实现;而协议的本质,是通信双方都认识的结构化数据类型(struct protocol),数据的流动靠"封装—解包"完成。
2.一张思维导图
网络协议入门
├── 通信前提:说同一种语言(约定数据格式)
├── 协议是什么:一种约定
│ ├── 光有约定不够 → 语言必须相通
│ └── 需要公认标准 → IEEE / ISO / ITU / IETF / W3C / 3GPP …
├── 协议分层
│ ├── 软件分层的启示:模块化、解耦合
│ ├── OSI 七层模型(理论完整、工程太重)
│ └── TCP/IP 五层/四层模型(实际落地)
│ └── 主机 / 路由器 / 交换机 / 集线器的分层分工
├── 协议本质:通信双方都认识的结构化数据类型
│ └── struct protocol 示例:同样的代码 + 同样的类型 = 共识
└── 数据流动:报头 + 有效载荷 = 报文,封装 → 传输 → 解包
每一步都紧扣今天建立的框架——分层、结构化数据、封装解包——你会发现,网络其实没有想象中那么难。
如果你觉得这篇有帮助,欢迎点赞、收藏、关注,我们下一篇见!



