TCP 和 UDP哪个更好

news/2024/5/18 14:41:57 标签: tcp/ip, 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.niftyadmin.cn/n/5050203.html

相关文章

一篇文章彻底搞懂熵、信息熵、KL散度、交叉熵、Softmax和交叉熵损失函数

文章目录 一、熵和信息熵1.1 概念1.2 信息熵公式 二、KL散度和交叉熵2.1 KL散度(相对熵)2.2 交叉熵 三、Softmax和交叉熵损失函数3.1 Softmax3.2 交叉熵损失函数 一、熵和信息熵 1.1 概念 1. 熵是一个物理学概念,它表示一个系统的不确定性程度,或者说是…

python nvidia 显卡信息 格式数据

python nvidia 显卡信息 格式数据. def get_gpu_memory():result subprocess.check_output([nvidia-smi, --query-gpupci.bus_id,memory.used,memory.total,memory.free, --formatcsv])# 返回 GPU 的显存使用情况,单位为 Minfo []for t in csv.DictReader(result…

Oracle判断函数

CASE WHEN 语法: CASE WHEN 条件1 THEN 返回值1WHEN 条件2 THEN 返回值2ELSE 默认值END -- 对 EMP 的 DEPTNO 字段进行判断,显示出对应的部门名称 SELECT E.*, CASE WHEN E.DEPTNO10 THEN ACCOUNTINGWHEN E.DEPTNO20 THEN RESEARCHWHEN E.DEPTNO30 THEN SALES…

【李沐深度学习笔记】矩阵计算(5)

课程地址和说明 线性代数实现p4 本系列文章是我学习李沐老师深度学习系列课程的学习笔记,可能会对李沐老师上课没讲到的进行补充。 本节是第五篇,由于CSDN限制,只能被迫拆分 矩阵计算 多元函数的等高线 此处参考视频:熟肉)多元…

ISE_ChipScope Pro的使用

1.ChipScope Pro Core Inserter 使用流程 在之前以及编译好的流水灯实验上进行学习 ChipScope的使用。 一、新建一个ChipScope 核 点击Next,然后在下一个框中选择 Finish,你就会在项目菜单中看到有XX.cdc核文件。 二、对核文件进行设置 右键“Synthesize – XST” …

配置OSPFv3引入外部路由及路由过滤 华为实验

1.1 实验介绍 1.1.1 关于本实验 在大型园区网络中,往往使用不同的路由协议进行组网,实现全网的网络互通。不同的协议间通信,除了路由协议本身,还需要引入外部路由及路由信息过滤等技术。 本章内容主要介绍OSPFv3路由过滤及引入外…

JavaScript相关操作

JavaScript介绍 JavaScript是运行在浏览器端的脚步语言,JavaScript主要解决的是前端与用户交互的问题,包括使用交互与数据交互,JavaScript是浏览器解释执行的。 前端三大块 1、HTML:页面结构 2、CSS:页面表现&#x…

域用户设置壁纸后断网出现黑壁纸问题

公司最近推行域控制器,然后部署后出现一堆问题待解决。今天解决的问题是黑屏壁纸问题。 题主出现这种的原因是因为用户在没有连上网络就登录进去导致没同步怎么更新策略重启都不行(微软为什么不能用之前缓存的桌面非要用和黑壁纸?&#xff1f…