零基础入门计算机网络运输层:端到端通信核心作用、端口号分类规则、复用分用工作机制及UDP与TCP协议全方位对比详解

前言

在计算机网络分层体系中,运输层是承上启下的核心层级:它向下承接网络层的 "主机到主机" 通信能力,向上为应用层的各个进程提供直接的 "端到端" 逻辑通信服务。很多初学者容易混淆网络层与运输层的职能,也对端口号的作用、复用分用机制、UDP 和 TCP 的核心差异理解不透彻。 本文将从基础概念出发,逐条拆解运输层的全部入门核心知识点,搭配汇总表格梳理框架,辅以经典例题巩固理解,帮助零基础读者彻底掌握运输层的核心内容。


一、核心知识点逐条拆解

1.1 运输层概述与核心定位

  1. 分层职能差异 物理层、数据链路层、网络层共同解决了主机通过异构网络互联的问题,实现主机到主机 的通信;而运输层的核心任务,是为运行在不同主机上的应用进程提供直接的通信服务,实现 应用进程到应用进程(端到端) 的逻辑通信,因此运输层协议也被称为 "端到端协议"。

  2. 逻辑通信的本质 运输层之间的通信看似沿水平方向直接传送数据,但实际上两个主机的运输层之间并不存在直接的水平物理连接;数据需要沿协议栈上下多层封装、解封装,经过底层网络传输才能到达对端。

  3. 屏蔽底层细节 运输层向高层用户屏蔽了网络核心的全部细节,比如网络拓扑结构、底层采用的路由选择协议等;对应用层而言,就像在两个运输层实体之间存在一条端到端的逻辑通信信道。

  4. 两大核心协议 因特网运输层为应用层提供两种差异化的协议,适配不同的业务需求:面向连接的 TCP(传输控制协议)无连接的 UDP(用户数据报协议) ,二者也是运输层学习的核心内容。

  5. 端口的本质 运输层通过 "端口" 对应不同的应用进程;这里的端口不是看得见摸得着的物理硬件端口,而是用于区分不同应用进程的逻辑标识符


1.2 端口号的分类与核心规则

为什么不用进程 ID(PID)标识应用进程?

运行在计算机上的进程都有自己的进程标识符 PID,但因特网上的计算机操作系统并不统一(Windows、Linux、macOS 等),不同系统的进程标识符格式、规则都不相同,无法支撑跨系统的网络通信。因此 TCP/IP 体系设计了统一的端口号,来标识应用层的不同进程。

端口号基础属性
  • 端口号使用16 比特 进行标识,取值范围为 0~65535

  • 端口号只具有本地意义:仅用于标识本计算机应用层的各个进程,因特网中不同计算机的相同端口号没有关联。

三大类端口号(重点)
  1. 熟知端口号(0~1023) 由因特网数字分配机构 IANA 统一指派,分配给 TCP/IP 体系中最核心的标准应用协议,属于全局通用的标准端口。
  • 典型举例:FTP 协议使用 21 号端口、DNS 协议使用 53 号端口、HTTP 协议使用 80 号端口。
  1. 登记端口号(1024~49151) 供没有熟知端口号的自定义应用程序使用;为了避免端口冲突,使用这类端口号需要在 IANA 按照规定手续登记。
  • 典型举例:微软远程桌面应用使用 3389 号端口。
  1. 短暂端口号(49152~65535) 留给客户端进程临时选择使用;当服务器端收到客户端的报文时,就能通过源端口号获知客户端的动态端口;通信结束后,该端口号会被释放,可以供其他客户端进程后续使用。

1.3 复用与分用的工作机制

复用与分用是运输层的核心工作机制,实现了多个应用进程共用底层网络传输的能力。

发送方:复用

复用指多个上层应用进程共用下层的传输服务,分为两个层级:

  1. 运输层复用 多个应用进程的报文,分别交给 UDP 或 TCP 模块封装,称为UDP 复用TCP 复用;运输层通过端口号区分不同的应用进程。

  2. IP 复用 无论是 UDP 用户数据报还是 TCP 报文段,向下交付到网络层后,都需要封装成 IP 数据报,统一通过 IP 协议传输,称为IP 复用

关键标识 :IP 数据报首部的协议字段,用于标识 IP 数据报的数据载荷封装了哪种运输层协议;取值为 6 代表封装 TCP 报文段,取值为 17 代表封装 UDP 用户数据报。

接收方:分用

分用是复用的逆过程,将收到的数据逐层向上交付给对应的应用进程,分为两个层级:

  1. IP 分用 网络层读取 IP 数据报首部的协议字段,根据字段值将数据载荷分别交付给运输层的 UDP 模块或 TCP 模块。

  2. 运输层分用 UDP 模块和 TCP 模块读取报文首部的目的端口号 ,根据端口号将数据载荷交付给应用层对应的应用进程,称为UDP 分用TCP 分用

工作实例:网页访问的完整流程

用户 PC 访问 Web 服务器时,会先后经历 DNS 域名查询和 HTTP 网页请求两个阶段,完整体现了端口、复用分用的工作过程:

  1. DNS 查询阶段(UDP 协议)

    1. 客户端 DNS 进程从短暂端口范围中选择一个未占用的端口(如 49152)作为源端口,将 DNS 查询报文交付给 UDP 模块;

    2. UDP 封装首部,目的端口设为 53(DNS 服务器熟知端口),封装为 UDP 用户数据报后交给网络层;

    3. 网络层封装 IP 首部,协议字段设为 17,发送给 DNS 服务器;

    4. 服务器端逐层解封装,通过目的端口 53 识别出 DNS 服务进程,处理后从 53 端口返回响应报文,目的端口为客户端的 49152;

    5. 客户端收到后,通过 49152 端口将数据交付给 DNS 客户端进程,解析得到 Web 服务器的 IP 地址。

  2. HTTP 访问阶段(TCP 协议)

    1. 客户端 HTTP 进程选择短暂端口(如 49152)作为源端口,向目的端口 80(HTTP 服务器熟知端口)发起 TCP 连接;

    2. 连接建立后,HTTP 请求报文封装为 TCP 报文段,再封装为 IP 数据报(协议字段设为 6)发送给 Web 服务器;

    3. 服务器端逐层解封装,通过目的端口 80 识别出 HTTP 服务进程,处理后从 80 端口返回 HTTP 响应报文;

    4. 客户端收到后,通过端口号交付给 HTTP 客户端进程,解析并展示网页内容。


1.4 UDP 与 TCP 协议深度对比

UDP 和 TCP 是运输层的两大核心协议,二者的差异是运输层最核心的考点,下面从 6 个维度全面对比:

1. 连接特性
  • UDP:无连接 通信双方可以随时发送数据,不需要提前建立连接,传输结束后也不需要释放连接,通信过程的开销极小。

  • TCP:面向连接 数据传输之前,必须通过三报文握手 建立逻辑连接;连接建立成功后才能传输数据;数据传输结束后,必须通过四报文挥手释放连接。这里的 "连接" 是逻辑连接关系,而非物理连接。

2. 通信模式
  • UDP :支持单播、多播、广播三种模式,既可以一对一通信,也可以一对多、一对全通信。

  • TCP :仅支持 \\ 单播(一对一)\\ 通信,基于 TCP 连接可以实现全双工数据传输。

3. 报文处理方式
  • UDP:面向应用报文 UDP 对应用进程交付的报文,既不合并也不拆分,完整保留报文的边界;一次发送对应一个完整的应用报文,接收方也会完整交付一个报文给应用进程。

  • TCP:面向字节流 TCP 把应用进程交付的数据块,仅仅看作一连串无结构的字节流;TCP 不关心字节流的含义,仅对字节编号并存储在发送缓存中,再根据发送策略按需提取字节封装成 TCP 报文段。 TCP 不保证接收方应用进程收到的数据块,和发送方发出的数据块有对应大小关系,但会保证接收方收到的字节流和发送方完全一致。

4. 可靠性
  • UDP:不可靠传输 UDP 仅通过首部校验和检测传输差错,检测到误码后仅丢弃报文,不做重传处理;报文在网络中被路由器丢弃时,发送方也不会做任何处理。 UDP 不保证数据一定能送达,也不保证数据顺序、不重复。

  • TCP:可靠传输 尽管底层 IP 协议是不可靠的,但 TCP 可以在其之上提供面向连接的可靠传输服务,保证数据传输无差错、不丢失、不乱序、不重复

5. 附加能力与适用场景
  • UDP :没有流量控制、拥塞控制机制,传输延迟低、实时性好;适用于实时应用,比如 IP 电话、视频会议、直播等。

  • TCP:具备完善的流量控制、拥塞控制能力;适用于对可靠性要求高的场景,比如文件传输、网页浏览、邮件传输等。

6. 首部开销
  • UDP :首部结构极简,仅包含 4 个字段,每个字段 2 字节,总长度固定为8 字节,传输开销极低。

  • TCP :首部结构复杂,包含大量用于可靠传输、流量控制、拥塞控制的字段;首部最小长度为20 字节,带有选项时最大长度可达 60 字节,传输开销更高。


二、核心知识点汇总表格

2.1 端口号分类汇总表

|-------|--------------|-----------------------|--------------------------|
| 端口类型 | 取值范围 | 分配与使用规则 | 典型举例 |
| 熟知端口号 | 0~1023 | IANA 统一分配给标准应用协议,全局通用 | FTP(21)、DNS(53)、HTTP(80) |
| 登记端口号 | 1024~49151 | 自定义应用使用,需登记避免端口重复 | 远程桌面 (3389) |
| 短暂端口号 | 49152~65535 | 客户端进程临时使用,通信结束后释放复用 | DNS 客户端、HTTP 客户端临时端口 |

2.2 UDP 与 TCP 核心特性对比表

|------|---------------------|------------------------|
| 对比维度 | UDP 协议 | TCP 协议 |
| 连接特性 | 无连接,无需建连 / 拆连 | 面向连接,三次握手建连、四次挥手释放 |
| 通信模式 | 支持单播、多播、广播 | 仅支持单播(一对一),全双工通信 |
| 报文处理 | 面向应用报文,保留报文边界 | 面向字节流,不保留应用报文边界 |
| 可靠性 | 不可靠,仅差错检测,出错直接丢弃 | 可靠传输,保证无差错、不丢失、不乱序、不重复 |
| 附加能力 | 无流量控制、拥塞控制 | 具备流量控制、拥塞控制机制 |
| 首部长度 | 固定 8 字节,开销极小 | 最小 20 字节,最大 60 字节,开销较高 |
| 适用场景 | 实时应用(IP 电话、视频会议、直播) | 高可靠场景(文件传输、网页浏览、邮件) |

2.3 复用与分用关键标识汇总表

|-----------|-----------|-----------------------------------|
| 交互层级 | 关键标识 | 核心作用 |
| 网络层 ↔ 运输层 | IP 首部协议字段 | 取值 6 代表 TCP、取值 17 代表 UDP,用于 IP 分用 |
| 运输层 ↔ 应用层 | 端口号 | 区分不同的应用进程,用于运输层分用 |


三、经典例题解析

例题 1:概念选择题

原题:下列关于计算机网络运输层的说法中,错误的是( )

A. 运输层实现的是主机到主机的逻辑通信

B. 端口号只具有本地意义,不同主机的相同端口无关联

C. UDP 是无连接的协议,支持广播和多播

D. TCP 是面向字节流的协议,不保留应用报文的边界

答案 :A 解析

  • 选项 A 错误:网络层实现主机到主机的通信,运输层实现的是 \\ 应用进程到应用进程(端到端)\\ 的逻辑通信,这是二者最核心的职能差异。

  • 选项 B 正确:端口号仅用于标识本机的应用进程,跨主机的相同端口号没有直接联系,只具备本地意义。

  • 选项 C 正确:UDP 是无连接协议,同时支持单播、多播、广播三种通信模式。

  • 选项 D 正确:TCP 面向字节流,将应用数据视为连续的字节流,不保留原始应用报文的边界。


例题 2:流程分析题

原题:主机 A 的客户端需要访问某 Web 服务器,首先通过 DNS 协议查询服务器域名对应的 IP 地址,再通过 HTTP 协议请求网页内容。请结合运输层的相关知识回答:

(1)DNS 查询和 HTTP 请求分别使用运输层的什么协议?对应的服务器端熟知端口号分别是多少?

(2)简述主机 A 发送 DNS 查询报文时,数据封装与复用的完整过程。

答案与解析: (1)协议与端口

  • DNS 查询使用UDP 协议,DNS 服务器端的熟知端口号为 53;

  • HTTP 请求使用TCP 协议,Web 服务器端的熟知端口号为 80。

(2)封装与复用过程 ① 主机 A 的 DNS 客户端进程,从短暂端口号范围(49152~65535)中选择一个未被占用的端口(例如 49152)作为源端口,将 DNS 查询报文交付给运输层的 UDP 模块; ② UDP 模块为报文添加 UDP 首部,首部中源端口填写 49152、目的端口填写 53,将报文封装为 UDP 用户数据报,该过程属于UDP 复用 ; ③ UDP 用户数据报向下交付给网络层,网络层添加 IP 首部封装为 IP 数据报;IP 首部的协议字段设置为 17,代表数据载荷是 UDP 用户数据报,该过程属于IP 复用; ④ IP 数据报继续向下交付,经过数据链路层、物理层的封装后,通过物理网络发送给 DNS 服务器。


结尾总结

运输层是计算机网络中衔接底层网络与上层应用的关键层级,理解运输层的核心定位、端口号的作用与分类、复用分用的工作机制,以及 UDP 和 TCP 的核心差异,是深入学习计算机网络的必备基础。 本文覆盖了运输层入门的全部核心知识点,通过表格梳理框架、例题巩固应用,可以帮助零基础读者快速建立知识体系,为后续学习 TCP 可靠传输、连接管理、流量控制等进阶内容打好基础。

相关推荐
dog2502 小时前
不要再继续优化 TCP
网络协议·tcp/ip·php
程序员mine2 小时前
HTTPS-TLS加密与证书完全指南(上)
网络协议·https
caimouse2 小时前
Reactos 第 10 章 网络操作 — 10.3.1 NIC驱动
网络·windows
zhengfei6112 小时前
小白级手册——全面剖析红队信息收集思考
网络·安全·web安全
Channing Lewis2 小时前
PHP 解析 Excel 的那些坑:一次“行号错位”引发的数据丢失
开发语言·php·excel
颜*鸣&空2 小时前
通信原理学习
网络
我是一颗柠檬2 小时前
【计算机网络全面教学】网络设备与故障排查,从集线器到Wireshark抓包实战Day7(2026年)
网络·计算机网络·wireshark
我是小bā吖3 小时前
Claude Code 模型接入阿里云 AI 网关并统计不同使用者的模型用量
网络·人工智能·阿里云
xsc-xyc3 小时前
用 Tailscale + Syncthing 实现手机、电脑与 NAS 的跨网络文件同步
linux·网络·网络安全·智能手机·电脑