从 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-3 UDP 和 TCP 的对比

# 530.5-3 UDP和TCP的对比

本节课我们将从几个方面对比 UDP 和 TCP。

‍

UDP 和 TCP 是 TCP/IP 体系结构运输层中的两个重要协议,如图所示,这是我们之前课程中介绍过的 TCP/IP 体系结构,它的运输层有两个非常重要的协议 UDP 和 TCP。在使用 TCP/IP 体系结构的网络通信中,这两个协议的使用频率仅次于往基层的 IP 协议,TCP/IP 体系结构应用层中的某些协议,需要使用运输层的 TCP 提供的服务,而另一些协议需要使用运输层的 UDP 提供的服务。

​​

UDP 是用户数据报协议的英文缩写词,TCP 是传输控制协议的英文缩写词,接下来我们将从几个方面对这两个协议进行比较,如图所示,这是因特网上的两台主机,他们在运输层使用 UDP 协议进行通信,纵坐标为时间,使用 UDP 协议的通信双方可以随时发送数据。

再来看使用 TCP 协议的情况,使用 TCP 协议的通信双方在进行数据传输之前,必须使用三报文握手来建立 TCP 连接,TCP 连接建立成功后才能进行数据传输结束后,必须使用四报文挥手来释放 TCP 连接。三报文握手和四报文挥手,属于 TCP 的连接管理,其过程比较复杂,我们将在后续课程中专门介绍,需要注意的是这里所谓的连接是指逻辑连接关系,而不是物理连接。

综上所述,UDP 是无连接的,而 TCP 是面向连接的。

​​

来看这个对比项,这是某个局域网上的需要 UDP 协议进行通信的 4 台主机,其中任何一台主机都可向其他三台主机发送广播,也可以向某个多播组发送多播,还可以向某台主机发送单播,也就是说 UDP 支持单播多播以及广播。换句话说,UDP 支持一对一,一对多以及一对全的通信。

再来看使用 TCP 协议的情况,使用 TCP 协议的通信双方在进行数据传输之前,必须使用三报文握手来建立 TCP 连接,TCP 连接建立成功后,通信双方之间就好像有一条可靠的通信信道,通信双方使用这条基于 TCP 连接的可靠信道进行通信,很显然 TCP 仅支持单播,也就是一对一的通信。

​​

接下来我们来对比这两个协议对应用报文的处理。先来看使用 UDP 协议的情况,发送方的应用进程,将应用层报文交付给运输层的 UDP,UDP 直接给应用层报文,添加一个 UDP 首部,使之成为 UDP 用户数据报,然后进行发送。

需要说明的是为了简单起见,我们忽略运输层下面的各层处理,接受方的 UDP 收到该 UDP 用户数据报后,去掉 UDP 首部,将应用层报文交付给应用进程,也就是说 UDP 对应用进程交下来的报文,既不合并也不拆分,而是保留这些报文的边界。换句话说,UDP 是面向应用报文的。

再来看使用 TCP 协议的情况,发送方的 TCP把应用进程交付下来的数据块,仅仅看作是一连串的无结构的字节流,TCP 并不知道这些待传送的字节流的含义,仅将他们编号并存储在自己的发送缓存中。TCP 根据发送策略,从发送缓存中提取一定数量的字节,构建 TCP 报文段并发送。接收方的 TCP,一方面从所接收到的 TCP 报文段中取出数据载荷部分,并存储在接收缓存中,一方面将接收缓存中的一些字节交付给应用进程,TCP 不保证接收方应用进程所收到的数据块与发送方应用进程和发出的数据块具有对应大小的关系。例如发送方应用进程交给发送方的 TCP,共 10 个数据块,但接收方的 TCP 可能只用了 4 个数据块,就把收到的字节流交付给了上层的应用进程,但接收方应用进程收到的字节流必须和发送方应用进程发出的字节流完全一样。

当然,接收方的应用进程必须有能力识别收到的字节流,把它还原成有意义的应用层数据,也就是说 TCP 是面向自字节流的,这正是 TCP 实现可靠传输,流量控制以及拥塞控制的基础。

需要说明的是为了突出示意图的要点,我们只画出了一个方向的数据流,在实际网络中基于 TCP 连接的两端,可以同时进行 TCP 报文段的发送和接收,也就是全双工通信。另外图中 TCP 报文段的数据部分只包含了几个字节,实际当中一个 TCP 报文段包含上千个字节是很常见的。

​​

再来看下一个对比项,在之前的课程中,我们曾介绍过 TCPIP 体系结构的往继层向其上层提供的是无连接不可靠的传输服务,当运输层使用 UDP 协议时,向其上层提供的也是无连接不可靠的传输服务,发送方给接收方发送 UDP 用户数据报,若传输过程中,用户数据报受到干扰而产生误码,接收方 UDP 可以通过该数据报首部中的校验和字段的值,检查出产生误码的情况,但仅仅丢弃该数据报,其他什么也不做。

发送方给接收方发送 UDP 用户数据报,如果该数据报被因特网中的某个路由器丢弃了,发送方 UDP 不做任何处理,因为 UDP 向上层提供的是无连接不可靠的传输服务。因此对于 UDP 用户数据报出现的误码和丢失等问题,UDP 并不关心。基于 UDP 的这个特点,UDP 适用于实时应用,例如 IP 电话、视频会议等。

再来看使用 TCP 协议的情况,尽管网际层中的 IP 协议向上层提供的是无连接不可靠的传输服务,也就是说 IP 数据报可能在传输过程中出现丢失或误码,但只要运输层使用 TCP 协议,就可向其上层提供面向连接的可靠传输服务。我们可将其想象成使用 TCP 协议的收发双方,基于 TCP 连接的可靠性到进行数据传输,不会出现误码丢失、乱序以及重复等传输差错。

TCP 适用于要求可靠传输的应用,例如文件传输。

​​

最后我们再来对比一下 UDP 用户数据报的首部与 TCP 报文段的首部。一个 UDP 用户数据报由首部和数据载荷两部分构成,其首部格式如图所示仅有 4 个字段,每个字段长度为 2 个字节。由于 UDP 不提供可靠传输服务,它仅仅在网际层的基础上添加了用于区分应用进程的端口,因此他的首部非常简单,仅有 8 个字节

1 个 TCP 报文段,有首部和数据载荷两部分构成,其首部格式如图所示,这比 UDP 用户数据报的首部复杂的多,其最小长度为 20 字节,最大长度为 60 字节,这是因为 TCP 要实现可靠传输,流量控制、拥塞控制等服务,其首部自然会比较复杂,首部中的字段比较多,首部长度也比较长。

​​

本节课的内容小结如下,需要说明的是 TCP 的流量控制和拥塞控制比较复杂,我们并未在本节课中有关他们的介绍,我们将在后续课程中进行。

​​ ‍

上次更新: 2025/6/3 09:31:54
5-2 运输层端口号、复用与分用的概念
5-4 TCP 的流量控制

← 5-2 运输层端口号、复用与分用的概念 5-4 TCP 的流量控制→

最近更新
01
语雀文档一键下载至本地教程
07-04
02
要成功,就不要低估环境对你的影响
07-03
03
血泪教训:电子设备要定期开机
07-02
更多文章>
Theme by Vdoing | Copyright © 2022-2025 | 粤 ICP 备 2022067627 号 -1 | 粤公网安备 44011302003646 号 | 点击查看十年之约
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式