网络初始:从 IP 端口到 TCP/IP 五层模型与数据封装分用 📅 2026/8/9 2:26:24 网络初始引言在动手写 Java 网络编程之前先搞清楚“网络到底是怎么工作的”至关重要。本文从网络的演进脉络讲起依次梳理 IP 地址与端口号、网络协议及其分层思想并重点剖析 TCP/IP 五层模型与数据收发的封装、分用流程帮助你建立起一张清晰的网络全景图为后续 Socket 编程打下扎实基础。一、网络的发展过程计算机网络的演进大致经历了以下阶段单机无网络-局域网LAN可实现初步通信-广域网WAN局域网的扩展-互联网Internet。二、IP 地址与端口号IP 地址用于标识网络中的一台主机。需要注意的是一台主机通常可以拥有多个 IP 地址。端口号用于标识主机上具体使用网络的哪一个应用程序。三、网络协议所谓“协议”就是通信双方对传输数据的格式与含义所达成的一种约定。3.1 协议分层分层的基本原则是上层调用下层下层为上层提供服务。这样做的好处是上层协议不必关心下层协议的实现细节直接调用即可本质上就是“封装”与“解耦”。同时上层与下层之间不能随意调换顺序——各层的职责与接口是固定的依靠标准化的层间接口来实现解耦而不是随意改变层级的排列。那么在网络中具体是如何分层的呢3.2 OSI 七层网络模型OSI 是教科书上的理论模型在实际工程中真正被广泛使用的是下面要介绍的 TCP/IP 五层模型。3.3 TCP/IP 五层网络模型注TCP/IP 模型也常被称作“四层模型”主要是把数据链路层与物理层合并为一层。从上层靠近用户到下层靠近硬件各层职责如下应用层第 5 层对应应用程序这一层关注的是“我自己应用程序要如何使用这些数据”与下面的各层无关。传输层第 4 层对应操作系统约定了通信起点与终点之间的规则不关心数据在中间是如何传输的。打个比方就像寄快递你只需要写清楚收件人地址和电话即可并不关心包裹具体是怎么运过去的。网络层第 3 层对应操作系统相当于快递公司不管起点和终点具体是谁只负责中间过程——即数据如何从起点到达终点、走哪条路由。数据链路层第 2 层对应硬件只关心“怎么把数据送到你的地址”类似于快递员最后一公里的工作。物理层第 1 层对应硬件关注网线、光纤等物理介质的电气/光信号结构。3.4 网络数据传输的基本流程网络数据传输的核心在于封装发送与分用接收。下面以 QQ 发送 “hello” 为例进行说明。发送方封装过程键盘输入 “hello”。QQ 读取到 “hello”并将其构造成一个应用层数据包其中包含“谁发的、发给谁、发了什么”。然后将该数据封装为传输层数据包。网络层继续封装添加网络层报头。数据链路层再次封装添加帧头与帧尾。物理层通过网卡将上述数据转换为电信号/光信号并传输出去。接收方分用过程物理层接收到信号将其转换为数据链路层的数据包。数据链路层读取帧头与帧尾解析出载荷部分并交给网络层。网络层解析 IP 报头交给传输层。传输层解析传输层报头交给应用层。应用层最终由应用程序解析并处理数据。术语在不同网络分层中数据单元有着不同的称谓包packet网络层的数据单元。段segment传输层 TCP 的数据单元。报datagram传输层 UDP 的数据单元。帧frame数据链路层的数据单元。小结本文梳理了网络基础的核心脉络网络从单机走向互联网每台主机通过IP 地址 端口号被唯一标识通信依赖协议这一“约定”而协议采用分层设计OSI 七层为理论模型工程上常用 TCP/IP 五层数据发送时逐层封装报头接收时逐层分用解析并由此引出包、段、报、帧等分层术语。理解这套体系是掌握 Java 网络编程的前提。