从 01 开始 从 01 开始
首页
  • 计算机简史
  • 数字电路
  • 计算机组成原理
  • 操作系统
  • Linux
  • Docker
  • 计算机网络
  • 计算机常识
  • Git
  • 数据库
  • JavaSE
  • Java 高级
  • JavaEE

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

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

    • Spring基础
  • 主流框架

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

    • SpringMVC 基础
  • SpringBoot

    • SpringBoot 基础
  • Node
  • Windows 使用技巧
  • 最全面的输入法教程
  • 浏览器
  • 终端软件
  • 装机
  • 笔记类软件
  • Markdown
  • 各大平台
  • 远程控制
  • RSS
  • 图片类工具
  • Office
  • 手机
  • 校招
  • 五险一金等
  • 职场规划
  • 关于离职
  • 杂谈
  • 教程简介
  • 英语学习方法论
  • 字母
  • 音标
  • 单词
  • 语法
  • 英语兔的相关视频
  • Larry 想做技术大佬的相关视频
  • 驾驶技能
  • 住房相关
  • 厨艺
  • 关于税
  • 理财
  • 睡眠
  • 皮肤
  • 口腔健康
  • 学会呼吸
  • 健身日志
  • 电影

    • 电影推荐
  • 漫画

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

    • Steam
    • 三国杀
    • 求生之路
  • 反腐
  • GFW
  • 404 内容
  • 审查与自我审查
  • 互联网
  • 2022
  • 2023
  • 2024
  • 2025
  • 关于本站
  • 关于博主
  • 网站动态
  • 公告栏
  • 友人帐
  • 从零开始搭建一个博客
  • 搭建邮件服务器
  • 本站分享
  • 文章分类
  • 文章归档

晓林

程序猿,自由职业者,博主,英语爱好者,健身达人
首页
  • 计算机简史
  • 数字电路
  • 计算机组成原理
  • 操作系统
  • Linux
  • Docker
  • 计算机网络
  • 计算机常识
  • Git
  • 数据库
  • JavaSE
  • Java 高级
  • JavaEE

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

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

    • Spring基础
  • 主流框架

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

    • SpringMVC 基础
  • SpringBoot

    • SpringBoot 基础
  • Node
  • Windows 使用技巧
  • 最全面的输入法教程
  • 浏览器
  • 终端软件
  • 装机
  • 笔记类软件
  • Markdown
  • 各大平台
  • 远程控制
  • RSS
  • 图片类工具
  • Office
  • 手机
  • 校招
  • 五险一金等
  • 职场规划
  • 关于离职
  • 杂谈
  • 教程简介
  • 英语学习方法论
  • 字母
  • 音标
  • 单词
  • 语法
  • 英语兔的相关视频
  • Larry 想做技术大佬的相关视频
  • 驾驶技能
  • 住房相关
  • 厨艺
  • 关于税
  • 理财
  • 睡眠
  • 皮肤
  • 口腔健康
  • 学会呼吸
  • 健身日志
  • 电影

    • 电影推荐
  • 漫画

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

    • Steam
    • 三国杀
    • 求生之路
  • 反腐
  • GFW
  • 404 内容
  • 审查与自我审查
  • 互联网
  • 2022
  • 2023
  • 2024
  • 2025
  • 关于本站
  • 关于博主
  • 网站动态
  • 公告栏
  • 友人帐
  • 从零开始搭建一个博客
  • 搭建邮件服务器
  • 本站分享
  • 文章分类
  • 文章归档
  • 计算机历史

  • 数字电路

  • 计算机组成原理

  • 操作系统

  • Linux

  • 计算机网络

    • 计算机网络微课堂-B站教书匠

      • 课程概述
      • 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
    • 计算机网络微课堂-实验手册

    • 从零开始学计算机网络

  • Git

  • 计算机小知识

  • 数据库

  • 计算机基础
  • 计算机网络
  • 计算机网络微课堂-B站教书匠
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 服务器所提供的首页内容了。

​​

本节课的内容小结如下:

​​

‍

上次更新: 2024/9/30 16:57:42
5-1 运输层概述
5-3 UDP 和 TCP 的对比

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

最近更新
01
2025 年 2 月记
02-28
02
最全面的浏览器教程-完结撒花
02-16
03
这个工具可以轻松搞到你的浏览器账户密码!
02-15
更多文章>
Theme by Vdoing | Copyright © 2022-2025 | 粤 ICP 备 2022067627 号 -1 | 粤公网安备 44011302003646 号 | 点击查看十年之约
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式