从 01 开始 从 01 开始
首页
  • 📚 计算机基础

    • 计算机简史
    • 数字电路
    • 计算机组成原理
    • 操作系统
    • Linux
    • 计算机网络
    • 数据库
    • 编程工具
    • 装机
  • 🎨 前端

    • Node
  • JavaSE
  • Java 高级
  • JavaEE

    • 构建、依赖管理
    • Ant
    • Maven
    • 日志框架
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • 环境管理和配置管理-科普篇
    • Servlet
  • Spring

    • Spring基础
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC

    • SpringMVC 基础
  • SpringBoot

    • SpringBoot 基础
  • Windows 使用技巧
  • 手机相关技巧
  • 最全面的输入法教程
  • 最全面的浏览器教程
  • Office
  • 图片类工具
  • 效率类工具
  • 最全面的 RSS 教程
  • 码字工具
  • 各大平台
  • 校招
  • 五险一金
  • 职场规划
  • 关于离职
  • 杂谈
  • 自媒体
  • 📖 读书

    • 读书工具
    • 走进科学
  • 🌍 英语

    • 从零开始学英语
    • 英语兔的相关视频
    • Larry 想做技术大佬的相关视频
  • 🏛️ 政治

    • 新闻合订本
    • 反腐
    • GFW
    • 404 内容
    • 审查与自我审查
    • 互联网
    • 战争
    • 读书笔记
  • 💰 经济

    • 关于税
    • 理财
  • 💪 健身

    • 睡眠
    • 皮肤
    • 口腔健康
    • 学会呼吸
    • 健身日志
  • 🏠 其他

    • 驾驶技能
    • 租房与买房
    • 厨艺
  • 电影

    • 电影推荐
  • 电视剧
  • 漫画

    • 漫画软件
    • 漫画推荐
  • 游戏

    • Steam
    • 三国杀
    • 求生之路
  • 小说
  • 关于本站
  • 关于博主
  • 打赏
  • 网站动态
  • 友人帐
  • 从零开始搭建博客
  • 搭建邮件服务器
  • 本站分享
  • 🌈 生活

    • 2022
    • 2023
    • 2024
    • 2025
  • 📇 文章索引

    • 文章分类
    • 文章归档

晓林

程序猿,自由职业者,博主,英语爱好者,健身达人
首页
  • 📚 计算机基础

    • 计算机简史
    • 数字电路
    • 计算机组成原理
    • 操作系统
    • Linux
    • 计算机网络
    • 数据库
    • 编程工具
    • 装机
  • 🎨 前端

    • Node
  • JavaSE
  • Java 高级
  • JavaEE

    • 构建、依赖管理
    • Ant
    • Maven
    • 日志框架
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • 环境管理和配置管理-科普篇
    • Servlet
  • Spring

    • Spring基础
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC

    • SpringMVC 基础
  • SpringBoot

    • SpringBoot 基础
  • Windows 使用技巧
  • 手机相关技巧
  • 最全面的输入法教程
  • 最全面的浏览器教程
  • Office
  • 图片类工具
  • 效率类工具
  • 最全面的 RSS 教程
  • 码字工具
  • 各大平台
  • 校招
  • 五险一金
  • 职场规划
  • 关于离职
  • 杂谈
  • 自媒体
  • 📖 读书

    • 读书工具
    • 走进科学
  • 🌍 英语

    • 从零开始学英语
    • 英语兔的相关视频
    • Larry 想做技术大佬的相关视频
  • 🏛️ 政治

    • 新闻合订本
    • 反腐
    • GFW
    • 404 内容
    • 审查与自我审查
    • 互联网
    • 战争
    • 读书笔记
  • 💰 经济

    • 关于税
    • 理财
  • 💪 健身

    • 睡眠
    • 皮肤
    • 口腔健康
    • 学会呼吸
    • 健身日志
  • 🏠 其他

    • 驾驶技能
    • 租房与买房
    • 厨艺
  • 电影

    • 电影推荐
  • 电视剧
  • 漫画

    • 漫画软件
    • 漫画推荐
  • 游戏

    • Steam
    • 三国杀
    • 求生之路
  • 小说
  • 关于本站
  • 关于博主
  • 打赏
  • 网站动态
  • 友人帐
  • 从零开始搭建博客
  • 搭建邮件服务器
  • 本站分享
  • 🌈 生活

    • 2022
    • 2023
    • 2024
    • 2025
  • 📇 文章索引

    • 文章分类
    • 文章归档
  • 计算机简史

  • 数字电路

  • 计算机组成原理

  • 操作系统

  • Linux

  • 计算机网络

    • 计算机网络微课堂

      • 课程概述
      • 1-1 计算机网络在信息时代的作用
      • 1-2 因特网概述
      • 1-3 三种交换方式
      • 1-4 计算机网络的定义和分类
      • 1-5 计算机网络的性能指标
      • 1-6 计算机体系结构
      • 2-1 物理层的基本概念
      • 2-2 物理层下面的传输媒体
      • 2-3 传输方式
      • 2-4 编码与调制
      • 2-5 信道的极限容量
      • 3-1 概述
      • 3-2 封装成帧
      • 3-3 差错检测
      • 3-4 可靠传输
      • 3-5 点对点协议 PPP
      • 3-6 媒体接入控制的基本概念
      • 3-7 MAC 地址
      • 3-7 IP 地址
      • 3-7 ARP 协议
      • 3-8 集线器与交换机的区别
      • 3-9 以太网交换机自学习和转发帧的流程
      • 3-10 以太网交换机的生成树协议 STP
      • 3-11 虚拟局域网 VLAN
      • 4-1 网络层概述
      • 4-2 网络层提供的两种服务
      • 4-3 IPv4 地址
      • 4-4 IP 数据报的发送和转发过程
      • 4-5 静态路由配置及其可能产生的路由环路问题
      • 4-6 路由选择
      • 4-7 IPv4 数据报的首部格式
      • 4-8 网际控制报文协议 ICMP
      • 4-9 虚拟专用网 VPN 与网络地址转换 NAT
      • 5-1 运输层概述
      • 5-2 运输层端口号、复用与分用的概念
      • 5-3 UDP 和 TCP 的对比
      • 5-4 TCP 的流量控制
      • 5-5 TCP 的拥塞控制
      • 5.6 TCP 超时重传时间的选择
      • 5-7 TCP 可靠传输的实现
      • 5-8 TCP 的运输连接管理
      • 5-9 TCP 报文段的首部格式
      • 6-1 应用层概述
      • 6-2 客户—服务器方式和对等方式
      • 6-3 动态主机配置协议 DHCP
      • 6-4 域名系统 DNS
      • 6-5 文件传送协议 FTP
      • 6-6 电子邮件
      • 6-7 万维网 WWW
    • 计算机网络微课堂-实验手册

    • 从零开始学计算机网络

  • 数据库

  • 编程工具

  • 装机

  • 计算机基础
  • 计算机网络
  • 计算机网络微课堂
2023-11-16

5-2 运输层端口号、复用与分用的概念

# 520.5-2 运输层端口号、复用与分用的概念

复用:就是可以重复使用的意思,即各个应用层协议都可以使用 TCP 协议。

分用:就是 TCP 根据端口号,将报文分给不同的应用进程。

‍

本节课我们介绍运输层、端口号、复用与分用的概念。在上节课中我们对运输层进行了概述,运输层的任务是直接为应用进程间的逻辑通信提供服务,运输层使用端口号来区分不同的应用进程。

我们知道运行在计算机上的进程是使用进程标识符 PID 来标志的。然而因特网上的计算机并不是使用统一的操作系统,不同操作系统例如 WINDOWS、LINUX、MAC OS 等,又使用不同格式的进程标识符,为了使运行不同操作系统的计算机的应用进程之间,能够进行网络通信,就要必须使用统一的方法,对 TCPIP 体系的应用进程进行标识。

TCP 体系的运输层使用端口号来区分应用层的不同应用进程。端口号是用 16 比特来标识,取值范围是 0~65535,分为以下三种:

  • 第一种是熟知端口号,取值范围是 0~1023,因特网数字分配机构 IANA 把这些端口号指派给了 TCPIP 体系中最重要的一些应用协议。例如 FTP 协议使用 21 和 22 号端口,HTTP 协议是要 80 号端口,DNS 使用 53 号端口。
  • 第二种是登记端口号,取值范围是 1024~49151,为没有熟知端口号的应用程序所使用,使用这类端口号必须在 IANA 按照规定的手续登记,以防止重复。例如微软远程桌面应用程序,使用的端口号是 3389。
  • 第三种是短暂端口号,取值范围是 49152~65535,留给客户进程选择暂时使用。当服务器进程收到客户进程的报文时,就知道了客户进程所使用的动态端口号。通信结束后,这个端口号可供其他客户进程以后使用。

需要注意的是端口号只具有本地意义,即端口号只是为了标识本计算机应用层中的各进程,在因特网中不同计算机中的相同端口号是没有联系的。

​​


接下来我们介绍发送方的复用和接收方的分用,如图所示,这是收发双方的应用进程,发送方的某些应用进程所发送的不同应用报文,在运输层使用 UDP 协议进行封装,这称为 UDP 复用。而另一些应用进程做发送的不同应用报文,在运输层使用 TCP 协议进行封装,这称为 TCP 复用,运输层使用端口号来区分不同的应用进程。

不管是使用运输层的 UDP 协议,封装成的 UDP 用户数据报,还是使用 TCP 协议封装成的 TCP 报文段,在网络层都需要使用 IP 协议封装成 IP 数据报,这称为 IP 复用。

IP 数据报首部中协议字段的值,用来表明 IP 数据报的数据载荷部分,封装的是何种协议数据单元,取值为 6 表示封装的是 TCP 报文段,取值为 17 表示封装的是 UDP 用户数据报接收方的网络层,收到 IP 数据报后,进行 IP 分用。

若 IP 数据报首部装协议字段的值为 17,则把 IP 数据报的数据载荷部分所封装的 UDP,用户数据报上交运输层的 UDP。

若协议字段的值为 6,则把 IP 数据报的数据载荷部分所封装的 TCP 报文段,上交运输层的 TCP。

运输层对 UDP,用户数据报进行 UDP 分用,对 TCP 报文段进行 TCP 分用,也就是根据端口号将它们交付给上层相应的应用进程。

​​

下面我们给出 TCPIP 体系的应用层常用协议所使用的运输层熟知端口号,这些是 TCPIP 体系的应用层常用协议,其中这些协议在运输层使用 UDP 协议,这是他们各自使用的运输层熟知端口号。

这些协议在运输层使用 TCP 协议,这是他们各自使用的运输层熟知端口号,不管在运输层使用 UDP 还是 TCP 协议,在网络层都需要使用 IP 协议,IP 数据报首部中协议字段的值,表明了 IP 数据报数据载荷部分封装的是何种协议数据单元。

​​

接下来我们通过一个实例来进一步说明运输层端口号的作用。如图所示,用户 PC,DNS 服务器,WEB 服务器通过交换机进行互联,它们处于同一个以太网中:

​​

假设这是 WEB 服务器的域名:www.porttest.com,DNS 服务器中记录有该域名所对应的 IP 地址 192.168.0.3,我们在用户 PC 中使用网页浏览器来访问 WEB 服务器的内容。

在网页浏览器的地址栏中输入 WEB 服务器的域名,用户 PC 中的 DNS 客户端进程,会发送一个 DNS 查询请求报文,其内容为域名 www.porttest.com对应的 IP 地址是什么?

​​

DNS 查询请求报文,需要使用运输层的 UDP 协议封装成 UDP,用户数据报,其首部中的源端口字段值,在短暂端口号 49151 到 65535 中挑选一个未被占用的、用来表示 DNS 客户端进程,例如 49152。目的端口字段的值设置为 53,这是 DNS 服务器端进程所使用的熟知端口号。

​​

之后将 UDP、用户数据报封装在 IP 数据报中,通过以太网发送给 DNS 的服务器。DNS 服务器端收到该数据报后,从中解封出 UDP 用户数据报,UDP 首部中的目的端口号为 53,这表明应将该 UDP 用户数据报的数据载荷部分,也就是 DNS 查询请求报文,交付给本服务器中的 DNS 服务器端进程。

​​

DNS 服务器端进程解析 DNS 查询请求报文的内容,然后按其要求查找对应的 IP 地址。之后会给用户 PC 发送 DNS 响应报文,及内容为域名www.porttest.com,所对应的 IP 地址是 192.168.0.3。DNS 响应报文,需要使用运输层的 UDP 协议封装成 UDP 用户数据报,其首部中的源端口字段的值,设置为熟知端口号 53,表明这是 DNS 服务器端进程所发送的 UDP 用户数据报,目的端口字段的值设置为 49152,这是之前用户 PC 中发送 DNS 查询请求报文的 DNS 客户端进程所使用的短暂端口号。

​​

之后将 UDP 用户数据报封装在 IP 数据报中,通过以太网发送给用户 PC,用户 PC 收到该数据报后,从中解封出 UDP 用户数据报,UDP 首部中的目的端口号为 49152,这表明应将该 UDP 用户数据报的数据载荷部分,也就是 DNS 响应报文交付给用户 PC 中的 DNS 客户端进程,DNS 客户端进程解析 DNS 响应报文的内容,就可知道自己之前所请求的 WEB 服务器的域名所对应的 IP 地址为 192.168.0.3。

​​

现在用户 PC 中的 HTTP 客户端进程,可以向 WEB 服务器发送 HTTP 请求报文了,其内容为“首页内容是什么?”

HTTP 请求报文,需要使用运输层的 TCP 协议,封装成 TCP 报文段,其首部中的原端口字段的值,在短暂端口号 49151 到 65535 中挑选一个未被占用的,用来表示 HTTP 客户端进程。例如,仍然使用之前用过的 49152;目的端口字段的值设置为 80,这是 HTTP 服务器端进程所使用的熟知端口号。

之后将 TCP 报文段封装在 IP 数据报中,通过以太网发送给 WEB 服务器。WEB 服务器收到该数据报后,从中解封出 TCP 报文段,TCP 首部中的目的端口号为 80,这表明应该将该 TCP 报文段的数据载荷部分,也就是 HTTP 请求报文交付给本服务器中的 HTTP 服务器端进程。

​​

HTTP 服务器端进程,解析 HTTP 请求报文的内容,然后按其要求查找首页内容,之后会给用户 PC 发送 HTTP 响应报文,其内容是 HTTP 客户端所请求的首页内容。

HTTP 响应报文,需要使用运输层的 TCP 协议,封装成 TCP 报文段,其首部中的原端口号字段的值,设置为熟知端口号 80,表明这是 HTTP 服务器端进程所发送的 TCP 报文段;目的端口字段的值设置为 49152,这是之前用户 PC 中发送 HTTP 请求报文的 HTTP 客户端进程所使用的短暂端口号。

之后将 TCP 报文段封装在 IP 数据报中,通过以太网发送给用户 PC,用户收到该数据报后,从中解封出 TCP 报文段,TCP 首部中的目的端口号为 49152,这表明应该将该 TCP 报文段的数据载荷部分,也就是 HTTP 响应报文,交付给用户 PC 中的, HTTP 客户端进程,解析 HTTP 响应报文的内容,并在网页浏览器中进行显示,这样我们就可以在网页浏览器中看到 WEB 服务器所提供的首页内容了。

​​

本节课的内容小结如下:

​​ ‍

上次更新: 2025/6/3 09:31:54
5-1 运输层概述
5-3 UDP 和 TCP 的对比

← 5-1 运输层概述 5-3 UDP 和 TCP 的对比→

最近更新
01
新闻合订本 2025-10
10-31
02
2025 年 10 月记
10-30
03
用 AI 批量优化思源笔记排版
10-15
更多文章>
Theme by Vdoing | Copyright © 2022-2025 | 粤 ICP 备 2022067627 号 -1 | 粤公网安备 44011302003646 号 | 点击查看十年之约
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式