TCP 和 UDP哪个更好

传输控制协议 (TCP) 和用户数据报协议 (UDP) 是互联网的基础支柱,支持从网络源到目的地的不同类型的数据传输。TCP更可靠,而UDP优先考虑速度和效率。本文解释了两种协议的工作原理,并详细讨论了 10 个关键差异。

目录

  • 什么是TCP(传输控制协议)?
  • 什么是UDP(用户数据报协议)?
  • TCP 与 UDP:了解 10 个关键差异

什么是TCP(传输控制协议)?

传输控制协议(TCP)被定义为面向连接的通信协议,允许计算设备和应用程序通过网络发送数据并验证其交付,形成全球互联网的关键支柱之一。

 

技术合作计划的功能

TCP 依赖于三次握手(同步、同步确认和最终确认)

通信程序和计算设备利用TCP通过网络交换消息。该协议的任务是通过互联网传输数据包,并确保跨网络成功传递消息和数据。

在发送任何数据之前,客户端和服务器必须建立连接。每当建立连接时,服务器都必须主动侦听客户端请求。TCP 协议是基于连接的,因此当数据在接收方和发送方之间传递时,它会在接收方和发送方之间创建并维护连接。因此,通过互联网传输的任何信息都保证保持不变。

因此,TCP是用于网络的最流行的协议之一。

以下是 TCP 的一些最关键功能:

  • 客户端确认来自服务器的数据传递。
  • 超时期限过后,服务器会尝试重新传输未传送的数据。
  • 在拥塞的网络中,TCP 会延迟数据传输。
  • 它使用三次握手来检查数据传输错误。

然而,虽然TCP是一种本能可靠的协议,但这些反馈机制也会导致更大的开销大小。这意味着它将消耗系统上可用的更多带宽。大多数联机应用程序将用户数据报协议 (UDP) 与 TCP 结合使用来解决此问题。

另请参阅:什么是网络流量分析?定义、重要性、实施和最佳实践

什么是UDP(用户数据报协议)?

用户数据报协议 (UDP) 是一种面向消息的通信协议,它允许计算设备和应用程序通过网络发送数据而无需验证其交付,这最适合实时通信和广播系统。

 

UDP的功能

UDP 可实现连续数据传输(即响应),而无需确认或确认连接

与TCP一样,其目的是发送和接收消息,因此其功能类似于传输控制协议。UDP 的独特之处在于它不是基于连接的。在这种情况下,“无连接”是指在通信发生之前没有建立任何连接的事实。

此外,它不能确保从服务器传递数据包。它通常被称为“即发即弃”协议,因为它不关心客户端是否收到数据。

在大多数情况下,UDP 比 TCP 快,因为它不能像 TCP 那样确保数据包的传递。

UDP 协议不适合发送电子邮件、查看网页或下载文件。但是,它主要用于广播或多任务网络流量等实时应用。UDP的主要功能如下:

  • 它适用于允许数据包丢失的带宽密集型应用程序。
  • 数据传输的延迟将减少。
  • 它用于一次发送大量数据包。
  • 您可能会丢失一些数据。

现在让我们看看TCP和UDP之间的关键区别。

另请参阅: 10 年 2022 大网络流量分析工具

TCP 与 UDP:了解 10 个关键差异

传输控制协议在以下方面与用户数据报协议不同:

TCP和UDP之间的区别

组织 TCP 和 UDP 之间的主要区别

1. TCP 是面向连接的,而 UDP 是无连接的

由于TCP是面向连接的协议,因此它依赖于处于被动打开状态的服务器。被动开放服务器侦听任何尝试与其连接的客户端。客户端必须首先与服务器连接,然后发送或接收数据。连接通过三次握手建立。客户端发送同步请求,服务器发回确认,客户端返回同步确认作为响应。

相比之下,UDP 是一种无连接协议。这种类型的数据传输涉及发送IT信号的网络端点,而不检查接收器是否可用或可用于接收信号。消息被发送出去,没有考虑收件人,也没有考虑目的地。无连接传输协议可能会丢失最少数量的数据包。但是,对于接收客户端来说,这并不总是很明显,例如,在视频通话期间。

2. TCP 利用比 UDP 更多的错误检查机制

传输控制协议使用三种不同的机制来检查错误并确保交付时的数据完整性。这使得它非常可靠。TCP 通过以下方式检查错误:

  • 超时后限制连接:连接具有指定的超时期限。如果服务器或客户端在此时间段内未收到确认消息,则连接将关闭,并且必须重新建立,然后才能传输数据。
  • 在标头中包含校验和字段:数据包在标头中包含 16 位值,称为校验和字段。TCP 包括每个数据段的校验和字段,它在传输过程中评估其完整性。
  • 发送和接收确认:建立连接或发送数据时,服务器会发送确认或 ACK 消息。客户端接收确认,并通过向 ACK 消息值添加一个来发回其消息。

这三种措施确保通过TCP传输正确的数据流,而不会丢失或损坏,而是通过TCP传输。相比之下,UDP 仅使用校验和运行基本错误检查。

3. TCP按特定顺序发送数据,而UDP协议没有固定的顺序

为了确定需要将数据段传递给哪个应用程序进程,TCP 使用端口号。此外,它还使用序列号将自身与远程主机同步。每个数据段都使用序列号发送和接收。这允许系统跟踪数据传输的特定顺序,保持所需的顺序。

UDP 不遵循排序机制。数据包是独立发送的,没有固定的顺序,并在接收方应用程序中重新拼接在一起。请记住,它们将按照接收顺序重新拼接在一起 - 即,协议无法判断哪些数据包应该首先出现,以及它们是否以错误的顺序接收。应用程序将错误地接收数据包。UDP 还会丢弃它无法处理的任何数据包。

4. UDP比TCP更快,更高效

UDP如此受欢迎的关键原因之一是它的速度和效率,尽管它有内在的缺陷。用户数据报协议不需要已建立的连接即可开始发送数据包。因此,它节省了打开服务器并将其置于“被动打开”侦听状态通常需要的时间。它允许数据传输更快地开始,而不会延迟或延长延迟时间。也无需按顺序放置数据包或发送和接收确认,从而节省时间。

除了延迟,UDP在带宽方面也更有效率。一旦数据从服务器移动到客户端,TCP 就会参与许多错误检查机制、确认过程和排序措施,这些机制会占用大量带宽。相比之下,UDP 可以快速将数据流从一个计算位置获取到另一个计算位置,而无需进行大量检查和平衡。这使得它适用于低性能的网络、移动设备和其他连接条件,在这些情况下,资源可能不那么容易获得。

传输控制协议比 UDP 慢,并且更占用资源。如果数据序列损坏,TCP将重新重新启动连接,要求服务器发送和接收确认,建立三向握手等。 UDP只是丢弃丢失或损坏的数据包,然后继续下一个数据包,使其效率大大提高。

5. 与 UDP 不同,TCP 不能用于组播或广播服务

TCP 是真正的端到端连接。这意味着在一个通信端点和另一个通信端点之间建立连接,并采取准确的记录保存措施来跟踪正在发送的数据包和字节。同步和确认消息将上一条消息的值加 1,使其易于跟踪和跟踪。数据包标头还包含排序段,以保持数据流的顺序。这些使其成为点对点传输系统的理想选择,而不是将数据广播到多个端点的场景。

在多播或广播方案中,服务器面向多个收件人。它中继数据而无需等待确认或任何交付确认,这正是UDP的工作方式。UDP 的核心架构使其成为将数据包广播到整个端点(或子网)组的理想选择,无论它们处于“被动打开”还是“侦听”状态。在这种情况下,数据传输不会将特定的网络主机指定为目标,而是针对一组主机。

另请参阅: 什么是网络映射?2022 年的定义、流程、重要性和最佳实践

6. TCP 利用流量控制,而 UDP 不利用

流量控制是一种机制,通过该机制,服务器首先检查接收方的能力,以了解它可以接受多少数据以及以什么速度接受。传输控制协议通过滑动窗口方法实现流量控制。接收方授予发送器发送数据的权限,直到滑动窗口中的窗口已满。一旦发生这种情况,发射器必须等到收件人澄清有更大的窗口可用。

TCP利用流量控制信息来校准数据传输的速度。根据接收方主机的不同,传输控制协议可以调整数据包的传输速度,避免使接收方不堪重负。但是,这也意味着服务器将在发送每个数据包之前等待流量控制信息,使其速度变慢且效率更低。

UDP 不使用任何流控制技术。它以最适合原始服务器的速度发送数据,因此,强大的服务器可能会用多个连续的数据流轰炸接收设备。组织可以部署路由器来干预 UDP 数据流,并校准通过流量管制策略发送数据包的速度。当UDP发送数据的速度太快,并且接收者不堪重负时,它只会丢弃接收方无法接受的数据包。

7. UDP 不控制拥塞,而 TCP 实现拥塞避免算法

在流控制中,TCP 根据接收方的接受窗口大小调整数据传输。在这里,TCP考虑了网络基础设施的容量。除了接收者之外,网络还决定数据移动的速度或速度。因此,将传输速度校准到网络可接受的水平至关重要。TCP 通过拥塞避免算法和策略实现这一点。

加法增加/乘法减少(AIMD)是使用的关键算法之一。它结合了拥塞窗口的线性增长和指数减少,以防止网络流量累积高度复杂但有效的过程。TCP将等待拥塞的网络路径清除,然后恢复传输,确保数据包不会丢失。

事实上,拥塞控制是TCP消耗如此多计算资源的主要原因。传输控制协议可以使用10+拥塞避免机制,具体取决于网络配置。这可以包括TCP Tahoe(在发生数据丢失时以缓慢启动的方式重新建立连接),TCP Reno(启动快速重新传输以进行拥塞后恢复)和其他几个。

相比之下,UDP 无法控制网络拥塞。如果路径上的流量过多,UDP 将丢弃接下来等待的数据包并发送剩余的数据包。组织可以使用专门配置的路由器来保留丢失的数据包,但此功能不是用户数据报协议固有的。

8. TCP比UDP更可靠

两种协议都有其优点和缺点,TCP的最大优势是其高可靠性。这可以归因于:

  • 传输控制协议是基于连接的。它只会将数据发送到正在侦听它的客户端。
  • 它使用三向握手系统来保持连接,同时数据一致地传输。如果连接中断,传输也会停止,并且不会丢失数据包。
  • TCP 使用排序机制以正确的顺序发送数据。这意味着通过此协议发送的图像、网页、数据文件和其他信息类型将以未损坏的状态到达。
  • TCP 保证数据将被传送。它为收到的每个数据包获取确认,并仅在客户端发送 ACK 消息后发送下一个数据包。
  • TCP 使用流量和拥塞控制机制来确保数据不会丢失、损坏、重复或无序传递。

相比之下,用户数据报协议本身并不可靠。其体系结构旨在连续向一个或多个接收客户端发送数据包,而无需等待“侦听”状态或确认。在具有挑战性的网络条件下,TCP 和 UDP 可能会导致数据包丢失。不同之处在于TCP将识别丢失并识别丢失的数据包以重新传输信息。UDP 无法判断数据包是否在传输中丢失、哪些数据包丢失或如何重新发送它们。这使得UDP的可靠性降低,尽管效率更高。

使用 UDP 协议的应用程序必须单独配置可靠性机制。例如,它可以单独配置数据传输的超时期限,并在规定时间内没有收到来自接收方的信号时主动切断UDP协议。

9. TCP 标头与 UDP 标头不同

任何通信协议都允许以字节串交换信息。这些“位字符串”由多个字段组成,每个字段包含与特定协议相关的一些信息。位字符串由两部分组成:标头和有效负载。有效负载包含消息的主体,而标头用于标识和支持通信协议的操作。TCP 和 UDP 数据传输利用两种不同类型的标头。

首先,TCP使用可变长度标头来支持更复杂的数据传输,而不会影响可靠性。标头可以包含 20 到 60 个字节之间的任何位置。相比之下,UDP 具有固定长度的标头,该标头快速高效,但通用性较差。UDP 标头只能有八个字节。

TCP 和 UDP 标头(即它们的字段)也不同。TCP 标头包含序列号、校验和、ACK 编号、控制位、滑动窗口信息、源端口、目标端口等多个指定字段。相比之下,UDP 标头更短、更简单,因为它们只包含校验和、源端口、目标端口和一些其他元素的字段。

10. UDP适用于TCP无法支持的实时数据传输

尽管UDP本质上不可靠,但它仍然是在线操作的主要内容。这是因为它非常适合实时数据传输,其中丢失几个数据包并不重要。

例如,在在线游戏中,丢失的数据包只会跳过几帧,并可能导致玩家损失几分。用户数据报协议会继续发送后续的数据包,用户可以继续播放。但是,如果单个数据包丢失,TCP 将识别。它将重新启动连接并重新传输数据,这将冻结游戏。在这种情况下,传输控制协议可能会对用户体验产生负面影响。

TCP 最适合数据完整性比传输速度更重要的用例。它将确保文件和网页完好无损地到达,甚至可以对实时分析和内容交付网络有所帮助,在这些网络中,丢弃的数据包会捏造结果。相比之下,UDP 适用于媒体传输,例如:

  • 视频通话:UDP可以支持每秒30帧或更高的视频刷新率。数据传输速度如此之快,以至于几个丢弃的数据包不会影响用户体验。
  • 在线游戏:TCP的许多清单和余额将显着影响游戏体验。如果没有完美的网络条件,帧将经常冻结,如果使用TCP,连接将重新启动。这就是推荐UDP的原因。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/87536.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【遥遥领先】Eolink IDEA 插件:零代码入侵,自动生成接口

省流版: Eolink 有 IDEA 插件吗? 有,而且遥遥领先!我们在一年半之前就发布了,而且功能更丰富! IDEA 插件市场搜索“Eolink Apikit”即可安装使用。 🚀使用指引:Eolink - IntelliJ ID…

virtualbox无界面打开linux虚拟机的bat脚本,以及idea(代替Xshell)连接linux虚拟机的方法

virtualbox无界面打开linux虚拟机的bat脚本,以及idea连接linux虚拟机的方法 命令行运行代码成功运行的效果图 idea连接linux虚拟机的方法【重要】查看虚拟机的IP地址idea中选择菜单(该功能可代替Xshell软件)配置设置连接成功进入idea中的命令…

Java on Azure Tooling 8月更新|以应用程序为中心的视图支持及 Azure 应用服务部署状态改进

作者:Jialuo Gan - Program Manager, Developer Division at Microsoft 排版:Alan Wang 大家好,欢迎阅读 Java on Azure 工具的八月更新。在本次更新中,我们将推出新的以应用程序为中心的视图支持,帮助开发人员在一个项…

德大黄鱼开捕 年产量20万吨 京东超市多举措保障黄鱼品质

作为“中国大黄鱼之都”,宁德大黄鱼占全国大黄鱼总产值产量均在90%以上。有关方面预计,今年全年宁德大黄鱼产量达20万吨,年增产10%,直接经济产值超百亿元。 宁德大黄鱼开捕活动,由宁德市政府、宁德渔业协会、京东超市…

leetCode 968.监控二叉树(利用状态转移+贪心)

968. 监控二叉树 - 力扣(LeetCode) 给定一个二叉树,我们在树的节点上安装摄像头。节点上的每个摄影头都可以监视其父对象、自身及其直接子对象。计算监控树的所有节点所需的最小摄像头数量。 >>解题思路: 重要线索->题目示例中的摄…

不甘于被强势厂商捆绑,中国移动未来或自研5G基站

一直以来运营商被认为只是做服务,而设备等都是由设备商提供的,甚至由于如今的设备高度复杂,设备商已承包越来越多的基站运维工作,运营商的技术水平越来越低,不过随着中国移动发布5G射频芯片8676,似乎显示出…

JVM之选择合适的垃圾收集器(CMS、G1)

1.JVM内存模型,栈、本地方法栈、程序计数器、堆、元空间、方法区、本地方法区,除程序计数器外,其他区域都能进行垃圾收集 2.栈,它的生命周期与线程相同,线程私有,会使用操作系统原生内存,方法…

python过滤敏感词

敏感词一般是指带有敏感政治倾向(或反执政党倾向)、暴力倾向、不健康色彩的词或不文明用语,论坛、网站管理员一般会设定一些敏感词,以防不当发言影响论坛、网站环境。若论坛、网站设置了敏感词,用户编辑的内容又含有敏…

Levels - UE5中的建模相关

一些日常的笔记; 可以使用Shapes面板建立基础模型: 可以在PolyModel中继续细分模型: UE5中的建模有PolyGroups概念,可以在Attributes面板中直接编辑: 使用GrpPnt方式可以直接用笔刷设定新的PolyGroups,这样…

抖音SEO矩阵系统源码开发搭建

1. 确定需求和功能:明确系统的主要目标和需要实现的功能,包括关键词研究、短视频制作、外链建设、数据分析、账号设置优化等方面。 2. 设计系统架构:根据需求和功能确定系统的架构,包括前端、后端、数据库等部分的设计&#xff0…

计算机组成原理之硬件的内部结构,拆开单独的硬件,查看硬件组成部分的结构和功能。

大家好,欢迎阅读《计算机组成原理》的系列文章,本系列文章主要教内容是从零学习计算机组成原理,内容通俗易懂,大家好好学习吧!!! 更多的优质内容,请点击以下链接查看哦~~ ↓ ↓ ↓ …

由于找不到msvcr110.dll 无法继续执行的解决方法分享(最新)

msvcp110.dll 是 Microsoft Visual C 2010 Redistributable Package 中的一个组件,它包含了一些运行时库文件。当计算机缺少这个文件时,可能会出现一些问题,如程序无法正常运行、系统不稳定等。下面是 6 种修复方法: 第1种方法&am…

【注射论文基因,那些年不为人知的AI工具】

我们都知道写论文有很多前期准备工作&#xff0c;例如<任务书>、<文献综述>等等&#xff0c;那么我们能够用什么工具最大限度的提高完成效率的同时还能保证质量呢&#xff0c;让我们接着往下看&#x1f447; 1.文献快速阅读-iTextMaster 文章主题确定了&#xff0…

向建筑人推荐中国建筑出版传媒的《乡村振兴战略下传统村落文化旅游设计》

向建筑人推荐中国建筑出版传媒的《乡村振兴战略下传统村落文化旅游设计》

mysql第二次作业

作业&#xff1a; 创建一个数据&#xff0c;db_classics 创建一张表&#xff1a;t_hero id name nickname age address job weapon group 1 张百川 玉皇大帝 200000 2 孙悟空 齐天大圣 3 林妹妹 创建数据库&#xff0c;创建英雄表 添加对应…

Docker Dockerfile解析

Dockerfile是什么 Dockerfile是用来构建Docker镜像的文本文件&#xff0c;是由一条条构建镜像所需的指令和参数构成的脚本。 官网&#xff1a;Dockerfile reference | Docker Docs 构建三步骤&#xff1a; 编写Dockerfile文件docker build命令构建镜像docker run依镜像运行容…

基于微信小程的流浪动物救助宠物领养平台设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言系统主要功能&#xff1a;具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计…

四川天蝶电子商务有限公司可靠吗?真实吗?

​近年来&#xff0c;抖音带货已成为一种日益流行的新零售趋势。而四川天蝶电子商务有限公司作为抖音带货领域的先行者之一&#xff0c;备受消费者关注。但是&#xff0c;我们不能仅凭其名声来评判其可靠性。在对该公司的抖音带货服务进行评估之前&#xff0c;有必要了解和了解…

PHP8的类与对象的基本操作之类常量-PHP8知识详解

php 8引入了一种新的特性&#xff0c;称为类常量&#xff08;class Constants&#xff09;。类常量是在类中定义的常量&#xff0c;类似于全局常量&#xff0c;但作用域仅限于定义它们的类。 在PHP 8中&#xff0c;类常量的作用域被限制在定义它们的类中。这意味着只有类的成员…

【算法思想-排序】根据另一个数组次序排序 - 力扣 1122 题

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…