计算机网络体系结构 = 分层的结构 + 各层协议的集合。本支视频按谢希仁《计算机网络》教材口径讲解,讲的是教学用的五层结构。
视频讲解#
https://www.bilibili.com/video/BV1ACJy6nEop/(嗒特老师)
一、为什么要分层#
两台电脑之间传一条消息,中间要经过网卡、网线、交换机、路由器、操作系统、应用程序……环节极多。 如果把所有问题当成一个大问题来做,任何一处改动都会牵动全身,根本无法实现和维护。
分层的思路:把复杂问题切成一串相对独立的小问题,每一层只管自己那一件事,只给上下相邻的层留一个简单的接口。 这样好处是:各层之间相互独立、灵活性好、结构上可分割、易于实现和维护、能促进标准化。
一句话:分层,就是把「一个大麻烦」拆成「一串小任务」,各司其职、层层配合。
二、五层分别是哪五层#
从下往上(从最贴近硬件的层次往上数):
| 层 | 主要任务 | 数据单元(叫什么) | 典型协议 / 例子 |
|---|---|---|---|
| 5. 应用层 | 通过应用进程间的交互,完成特定的网络应用 | 报文(message) | HTTP、DNS、SMTP |
| 4. 运输层 | 向两台主机中进程之间的通信提供通用的数据传输服务 | 报文段(TCP)/ 用户数据报(UDP) | TCP、UDP |
| 3. 网络层 | 为分组交换网上的不同主机提供通信服务,负责选路与转发 | 分组(packet,也叫 IP 数据报) | IP |
| 2. 数据链路层 | 在两个相邻结点间的链路上,无差错地传送以帧为单位的数据 | 帧(frame) | PPP、以太网 |
| 1. 物理层 | 在传输媒体上透明地传送比特流(0 和 1) | 比特(bit) | ——(网线、接口、电平) |
记顺序的口诀:自下而上 —— 物理 → 链路 → 网络 → 运输 → 应用。
三、几个容易混的点#
- 「进程之间」vs「主机之间」:运输层管的是两台主机里具体哪个程序跟哪个程序通信(进程到进程);网络层管的是哪台主机到哪台主机(主机到主机)。
- 「分组」与「用户数据报」不是一回事:运输层 UDP 的单位叫用户数据报,网络层 IP 的单位叫IP 数据报 / 分组,两者名字像、层次不同,别混。
- 对等层通信:每一层在逻辑上都在和对方的同一层"对话",这靠的是各层自己的协议。
四、数据是怎样在各层之间流动的#
发送时,数据自上而下逐层传递,每经过一层就加上该层的控制信息(首部),这叫封装; 接收时自下而上逐层剥去首部,逐步还原成原始数据。
于是同一份数据,在不同层有不同的名字:应用层叫报文 → 运输层叫报文段 → 网络层叫分组 → 数据链路层叫帧 → 物理层叫比特。
五、五层是怎么来的#
OSI 参考模型分七层(多了表示层、会话层),TCP/IP 体系常用四层。 五层结构是综合两者的优点、专用于教学的一种分层方式 —— 本课按五层讲。