TCP 和 UDP哪个更好

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: TCP 和 UDP哪个更好

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

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

 

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


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


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


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


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


客户端确认来自服务器的数据传递。

超时期限过后,服务器会尝试重新传输未传送的数据。

在拥塞的网络中,TCP 会延迟数据传输。

它使用三次握手来检查数据传输错误。

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


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


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

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




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


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


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


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


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


它适用于允许数据包丢失的带宽密集型应用程序。

数据传输的延迟将减少。

它用于一次发送大量数据包。

您可能会丢失一些数据。

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


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


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

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



组织 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的原因。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
7天前
|
网络协议 算法 网络性能优化
|
1天前
|
缓存 负载均衡 网络协议
面试:TCP、UDP如何解决丢包问题
TCP、UDP如何解决丢包问题。TCP:基于数据块传输/数据分片、对失序数据包重新排序以及去重、流量控制(滑动窗口)、拥塞控制、自主重传ARQ;UDP:程序执行后马上开始监听、控制报文大小、每个分割块的长度小于MTU
|
18天前
|
网络协议 前端开发 物联网
TCP和UDP区别?
本文首发于微信公众号“前端徐徐”,详细介绍了TCP和UDP两种传输层协议的核心概念、连接性和握手过程、数据传输和可靠性、延迟和效率、应用场景及头部开销。TCP面向连接、可靠、有序,适用于网页浏览、文件传输等;UDP无连接、低延迟、高效,适用于实时音视频传输、在线游戏等。
31 1
TCP和UDP区别?
|
9天前
|
Web App开发 缓存 网络协议
不为人知的网络编程(十八):UDP比TCP高效?还真不一定!
熟悉网络编程的(尤其搞实时音视频聊天技术的)同学们都有个约定俗成的主观论调,一提起UDP和TCP,马上想到的是UDP没有TCP可靠,但UDP肯定比TCP高效。说到UDP比TCP高效,理由是什么呢?事实真是这样吗?跟着本文咱们一探究竟!
37 10
|
20天前
|
网络协议 网络性能优化 C#
C# 一分钟浅谈:UDP 与 TCP 协议区别
【10月更文挑战第8天】在网络编程中,传输层协议的选择对应用程序的性能和可靠性至关重要。本文介绍了 TCP 和 UDP 两种常用协议的基础概念、区别及应用场景,并通过 C# 代码示例详细说明了如何处理常见的问题和易错点。TCP 适用于需要可靠传输和顺序保证的场景,而 UDP 适用于对延迟敏感且可以容忍一定数据丢失的实时应用。
25 1
|
25天前
|
网络协议 Linux 网络性能优化
Linux C/C++之TCP / UDP通信
这篇文章详细介绍了Linux下C/C++语言实现TCP和UDP通信的方法,包括网络基础、通信模型、编程示例以及TCP和UDP的优缺点比较。
31 0
Linux C/C++之TCP / UDP通信
|
28天前
|
存储 网络协议 Java
【网络】UDP和TCP之间的差别和回显服务器
【网络】UDP和TCP之间的差别和回显服务器
56 1
|
1月前
|
存储 网络协议 算法
更深层次理解传输层两协议【UDP | TCP】【UDP 缓冲区 | TCP 8种策略 | 三次握手四次挥手】
UDP和TCP各有所长,UDP以其低延迟、轻量级的特点适用于对实时性要求极高的应用,而TCP凭借其强大的错误检测、流量控制和拥塞控制机制,确保了数据的可靠传输,适用于文件传输、网页浏览等场景。理解它们的工作原理,特别是UDP的缓冲区管理和TCP的8种策略,对于优化网络应用的性能、确保数据的高效和可靠传输至关重要。开发者在选择传输层协议时,应根据实际需求权衡利弊,合理利用这两项关键技术。
52 5
|
1月前
|
网络协议 Linux 网络性能优化
Linux基础-socket详解、TCP/UDP
综上所述,Linux下的Socket编程是网络通信的重要组成部分,通过灵活运用TCP和UDP协议,开发者能够构建出满足不同需求的网络应用程序。掌握这些基础知识,是进行更复杂网络编程任务的基石。
77 1
|
30天前
|
网络协议 IDE 开发工具
主动信息搜集:Scapy完成基于TCP、UDP的主机发现
主动信息搜集:Scapy完成基于TCP、UDP的主机发现
31 0