☰
Linux 网络编程基础:网络分类、分层模型与数据封装
2026/10/3 13:02:23 网站建设 项目流程

Linux 网络编程基础:网络分类、分层模型与数据封装

课程:尚硅谷《嵌入式 Linux 应用层开发》第 6 章 Socket 编程
依据:2026-09-29 20:21 录音转写;课程 PDF 第 244—254 页。
本节边界:这是 Socket 编程的理论入口,暂未讲socket()、bind()、listen()、connect()等代码接口。

1. 本节在网络编程路线中的位置

录音首先说明:计算机网络范围很大,本课程不会完整讲完所有网络技术,而是先建立后续 Socket 编程必需的框架。

网络分类

为什么要分层

OSI 七层模型

教学五层模型

TCP/IP 四层模型

PDU、SDU、PCI

封装与解封装

服务、接口、协议

后续 Socket API

本节最需要留下的主线是:

应用程序通过 Socket 接口使用传输层服务 → TCP 或 UDP 通过 IP 发送数据 → IP 数据包由链路层承载 → 接收端逐层解封装并交给目标应用

2. 按地理范围划分网络

类型英文典型范围常见示例
个人区域网PAN几米到十几米蓝牙、近距离个人设备通信
局域网LAN家庭、办公室、楼宇或校园以太网、Wi-Fi
城域网MAN城市范围城域光纤网络
广域网WAN跨城市、国家或洲际运营商骨干网、跨区域企业网

范围分类描述的是覆盖尺度,不代表四类网络之间存在绝对、不可重叠的技术边界。

2.1 局域网和互联网不要混淆

电脑连接家里的交换机或无线路由器后,先进入一个局域网。能否访问公网,还取决于路由、网关、运营商连接、地址转换和访问策略。

电脑或开发板 → 家庭或公司局域网 → 默认网关 → 运营商网络 → Internet

连接 Wi-Fi 只表示接入了无线局域网,不自动保证已经连通互联网。

3. 按拓扑划分网络

拓扑基本结构主要特点
总线型多个节点共享一条主干介质布线简单,主干故障影响大
星型所有终端连接中央交换设备易管理,中央节点是关键点
环型节点首尾相连形成环数据沿环传递,故障影响取决于是否有冗余
网状节点之间存在多条可选路径冗余和可靠性高,成本与管理复杂度高

网状拓扑还分为全网状和部分网状。互联网整体更接近由大量网络和路由器组成的部分网状结构,并不是每台终端都直接连接所有其他终端。

4. 其他分类方法

4.1 按使用范围

类型含义
Internet全球互联的公网体系
Intranet组织内部使用的网络和服务
Extranet向合作伙伴等受控外部用户开放的部分内部资源

内网并不天然安全。身份认证、授权、补丁、加密和访问控制仍然需要落实。

4.2 按交换方式

类型工作方式典型场景
电路交换通信前建立并独占一条逻辑通路传统电话系统
分组交换数据拆成分组,经网络逐跳转发Internet 的基本方式
报文交换节点存储并转发完整报文早期通信系统中的概念

4.3 按通信关系

  • 广播:一个节点发送的信息能被广播域中的多个节点接收;
  • 点对点:在两个端点之间建立直接或逻辑上的通信关系。

现代交换式以太网中的普通单播帧通常只被转发到目标端口,不能简单理解为“每个以太网帧都会让所有节点收到”。以太网仍支持广播帧和多播帧。

5. 为什么网络必须分层

网络通信同时涉及应用程序、操作系统、协议栈、网卡、交换机、路由器和物理介质。分层可以把复杂问题拆开:

  • 每层处理一组相对明确的问题;
  • 下层为相邻上层提供服务;
  • 上层不需要理解下层全部实现细节;
  • 同层的通信双方遵守同一协议;
  • 某层实现可以替换,而不必重写所有上层。

例如应用程序通常只需要调用 Socket API,不需要自己生成以太网帧、计算 IP 路由或直接控制网卡发送比特。

6. 分层模型中的五个概念

6.1 层 Layer

把完整通信过程划分成多个功能层级。例如传输层负责应用之间的数据传递,网络层负责跨网络寻址与转发。

6.2 实体 Entity

实现某一层功能的软件或硬件组件。同一层中位于通信两端的实体称为对等实体。

6.3 协议 Protocol

对等实体之间遵守的规则,规定数据格式、字段含义、交互次序和错误处理方法。

主机 A 的 TCP 实体 ← 按 TCP 协议进行逻辑通信 → 主机 B 的 TCP 实体

6.4 接口 Interface

相邻层之间调用功能的边界和方法。在 Linux 应用层开发中,Socket API 是应用程序访问操作系统网络能力的重要接口。

6.5 服务 Service

下层能够为上层完成的功能。服务说明“能做什么”,接口说明“怎样调用”,协议规定通信双方“按照什么规则实现”。

7. OSI 七层模型

OSI 模型从下到上分为七层:

层级主要职责常见理解
7 应用层为应用提供网络功能HTTP、FTP、SMTP 等
6 表示层数据表示、编码、压缩、加密把数据转换成双方可理解的格式
5 会话层建立、维护和结束会话管理通信过程
4 传输层应用端点之间的数据传输TCP、UDP、端口号
3 网络层跨网络寻址和路由IP、路由器
2 数据链路层同一链路上的帧传输Ethernet、MAC 地址、FCS
1 物理层传输比特和电气或光学信号网线、光纤、射频、PHY

OSI 是理解职责边界的参考模型。实际互联网软件通常按 TCP/IP 协议栈讨论。

7.1 数据链路层并不保证端到端可靠

教材把数据链路层描述为“确保物理链路上的无误传输”,适合作为入门简化,但不能理解成端到端数据一定送达。

以太网 FCS 能帮助检测链路帧错误,错误帧通常会被丢弃;是否重传、是否最终到达以及是否按序交付,还取决于更高层协议和具体链路技术。

8. 教学五层模型

五层模型把 OSI 的应用层、表示层和会话层合并为一个应用层:

应用层 传输层 网络层 数据链路层 物理层

它主要用于教学,既保留了链路层和物理层的区别,又比七层模型简洁。

9. TCP/IP 四层模型

本课程后续 Socket 编程主要使用 TCP/IP 四层视角:

TCP/IP 层主要协议或技术负责的问题
应用层HTTP、FTP、SSH、SMTP、DNS 等应用数据的含义和交互规则
传输层TCP、UDP把数据交给正确的应用端点
网际层IPv4、IPv6、ICMP跨网络寻址和路由
链路层Ethernet、Wi-Fi、PPP在当前物理网络上承载 IP 数据包

9.1 三种模型怎样对应

OSI 七层教学五层TCP/IP 四层
应用、表示、会话应用层应用层
传输层传输层传输层
网络层网络层网际层
数据链路层数据链路层链路层
物理层物理层链路层

模型用于帮助定位功能。实际协议并不总能完美、唯一地塞进某一层,分析时应关注协议真正提供的能力。

10. IP 地址、端口号和协议号分别负责什么

老师使用“IP 找到电脑,端口找到电脑中的程序”帮助入门。更准确的理解是:

  • IP 地址标识网络接口,并参与路由选择;
  • 协议号告诉 IP 层负载应交给 TCP、UDP、ICMP 等哪个上层协议;
  • 端口号帮助 TCP 或 UDP 把数据交给主机中的具体 Socket;
  • 操作系统再把 Socket 与相应进程关联。

TCP

UDP

目的 IP 地址

到达目标主机的网络接口

IP 协议字段

目标 TCP 端口

目标 UDP 端口

目标 Socket / 应用

一条 TCP 连接通常由以下信息区分:

源 IP + 源端口 + 目的 IP + 目的端口 + 传输层协议

所以同一个服务器端口可以同时服务许多客户端连接。

11. TCP 与 UDP 的初步区别

特征TCPUDP
连接面向连接无连接
数据形式连续字节流一个个数据报
可靠性提供可靠、有序传递不保证送达、顺序或不重复
消息边界不保留应用写入边界保留数据报边界
常见取舍功能完整,协议开销和状态更多简单、低开销,应用自行处理可靠性需求

TCP 的“可靠”表示协议会通过序号、确认、重传等机制提供可靠、有序的字节流服务,不表示网络永远不会断开,也不表示一次send()必然对应接收端一次完整recv()。

录音在本节只做初步对比,第 254 页开始进入 TCP 特性,详细机制属于后续课程。

12. PDU、SDU 与 PCI

12.1 PDU

PDU(Protocol Data Unit,协议数据单元)是同层对等实体交换的数据单位。

不同层常使用不同名称:

层常见 PDU 名称
应用层消息或应用数据
TCP 传输层TCP 报文段 Segment
UDP 传输层UDP 数据报 Datagram
IP 网际层IP 数据包或 IP 数据报 Packet / Datagram
数据链路层帧 Frame

具体资料对 Packet、Datagram 等词的使用可能略有差异,判断时应先看它所处的协议层。

12.2 SDU

SDU(Service Data Unit,服务数据单元)是当前层从上层接收、需要继续承载的数据。对当前层来说,它是负载。

12.3 PCI

PCI(Protocol Control Information,协议控制信息)是当前层为了实现自身协议功能而添加的控制信息,例如:

  • 源和目的地址;
  • 源和目的端口;
  • 协议类型;
  • 序号、确认号和控制标志;
  • 长度、校验信息。

基本关系:

PDU = PCI + SDU

PCI 常位于头部。某些协议还包含尾部,例如以太网帧尾部的 FCS。

13. 封装与解封装

假设浏览器向网站服务器发送 HTTP 请求。

13.1 发送端封装

HTTP 请求数据

加入 TCP 头部

TCP 报文段

加入 IP 头部

IP 数据包

加入以太网头部和尾部

以太网帧

网卡发送比特

可以把每层动作理解为:

上层 PDU → 作为本层 SDU → 本层添加 PCI → 形成新的本层 PDU

13.2 接收端解封装

接收端按相反方向处理:

网卡接收帧 → 链路层检查并去除链路头尾 → IP 层检查目的地址并去除 IP 头 → TCP 根据端口和连接状态处理报文段 → 应用从 Socket 读取字节

每层只解释自己负责的控制信息,然后把负载交给上层。

14. 服务、接口和协议的关系

这三个概念容易混淆,可以用一个问题分别对应:

概念回答的问题网络编程中的例子
服务下层能为上层做什么TCP 提供可靠、有序的字节流传输
接口上层怎样使用服务应用调用 Socket API
协议通信双方怎样实现和互操作两端 TCP 按统一报文格式和状态机通信

调用接口

使用服务

遵守 TCP 协议

应用程序

Socket API

内核 TCP 实现

远端 TCP 实现

协议主要描述对等层之间的横向规则,服务和接口描述相邻层之间的纵向关系。

15. 与后续 Socket 编程的对应

学完本节后,后面的 API 才有明确位置:

后续概念本节理论对应
socket()创建应用访问传输层服务的 Socket
IP 地址指定本地或远端网络地址
端口号指定主机中的服务端点
SOCK_STREAM通常选择 TCP 字节流服务
SOCK_DGRAM通常选择 UDP 数据报服务
send/recv应用通过接口提交和取得数据
网卡与驱动在链路层和物理层完成实际收发

Socket 是操作系统提供给应用的编程接口。它本身不是 TCP、UDP 或 IP 协议,但可以让应用选择并使用这些协议提供的能力。

16. 可以立即做的观察练习

在 Linux 中运行:

ipaddriproute ss-lntup

观察:

  1. ip addr中接口和 IP 地址的对应关系;
  2. ip route中默认网关和路由条目;
  3. ss -lntup中 TCP、UDP、本地地址和端口号;
  4. 同一个进程是否可能监听多个 Socket;
  5. 127.0.0.1与网卡实际地址有什么不同。

这一步不要求写代码,目的是把“接口、IP、传输协议、端口、进程”对应起来。

17. 录音与教材表述校正

  1. 转写中的“操作编程”应为“Socket 编程”或“套接字编程”。
  2. OSI 是网络体系结构参考模型,不宜称为“法律上的标准”。TCP/IP 是互联网实际采用的协议族和实现框架。
  3. IP 地址不应简单等同于网址。域名可以解析为 IP 地址,而 URL 还包含协议、主机、端口、路径等信息。
  4. IP 地址更准确地标识网络接口;端口帮助传输层把数据分用到 Socket,不是端口直接“找到进程”。
  5. 数据链路层能检测某些链路错误,但不能独自保证端到端可靠传输。
  6. TCP 提供可靠、有序的字节流,不保留应用消息边界;一次发送的数据可能被多次接收,也可能与其他发送合并读取。
  7. UDP 不是“保证传过来但可能丢”。UDP 只提供数据报发送能力,不保证交付、顺序和去重。
  8. 现代交换式以太网的普通单播不会让所有节点都接收每个帧;广播只适用于特定目的地址和广播域。
  9. 网状网络可分全网状和部分网状,互联网不是所有终端之间全部直连。
  10. 教材把应用层写作“应用、表示、会话的简单合并”便于入门;实际协议分层可能跨越理论模型边界。
  11. PDU、Packet、Datagram 等术语在不同资料中可能有宽泛用法,应结合所在层和协议判断。

18. 本节最低掌握标准

学完后应能回答:

  1. LAN 与 Internet 有什么区别?
  2. 为什么网络要分层?
  3. OSI 七层、教学五层和 TCP/IP 四层怎样对应?
  4. TCP/IP 四层各自解决什么问题?
  5. IP 地址、传输层协议和端口号分别起什么作用?
  6. TCP 与 UDP 的最基本区别是什么?
  7. PDU、SDU、PCI 之间是什么关系?
  8. 什么是封装和解封装?
  9. 服务、接口和协议分别回答什么问题?
  10. Socket API 在分层模型中的位置是什么?

最低实践要求:

  • 能画出应用数据到以太网帧的封装顺序;
  • 能解释“IP 找主机接口,端口找 Socket”的含义;
  • 能读懂IP:端口形式,例如192.168.1.10:8080;
  • 能使用ip addr、ip route和ss查看本机网络状态。

19. PDF 页码与录音时间索引

主题PDF 页码录音时间
Socket 编程章节入口24400:05—00:55
按地理范围和拓扑分类245—24600:56—03:22
按用途、交换方式和通信方式分类246—24703:23—05:23
分层原因及相关概念247—24805:25—08:49
OSI 七层模型248—24908:50—13:43
教学五层和 TCP/IP 四层模型249—25113:44—17:59
PDU、SDU、PCI251—25218:00—20:07
以太网通信的封装与解封装252—25320:08—21:31
服务、接口与协议253—25421:32—22:52
TCP 特性入口254教材下一部分,录音尚未正式展开

进一步核对资料:

  • IETF Internet Standard:RFC 9293,Transmission Control Protocol
  • IETF Standard:RFC 768,User Datagram Protocol

20. 下一步学习

下一阶段应按下面顺序继续:

  1. IPv4 地址、子网掩码、默认网关和端口号;
  2. 主机字节序与网络字节序;
  3. sockaddr_in地址结构;
  4. TCP 的连接、可靠字节流和三次握手;
  5. TCP 服务端:socket → bind → listen → accept → recv/send → close;
  6. TCP 客户端:socket → connect → send/recv → close;
  7. UDP:socket → sendto/recvfrom → close。

这节不需要背下所有网络名词。先确保自己能解释四层模型、IP 与端口、封装过程,后续写 Socket 程序时再把 API 放到对应层次中。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询