我知道两者在技术层面上的区别。
但在现实生活中,任何人都可以提供TCP和UDP应用程序(使用)的示例(越多越好)来展示其中的差异吗?
答案 0 :(得分:108)
UDP:如果你总是得到所有数据,那么你不在乎的任何事情
TCP:几乎所有必须获取所有传输数据的内容
编辑:我不打算解释这些差异,因为你声明你已经知道并且其他所有答案都解释了它:)
答案 1 :(得分:29)
UDP正在邮局寄信。
TCP正在邮局寄回一封带回执的信件,但邮寄主管将按顺序组织邮寄信件,并且只按顺序递送。
嗯,无论如何这是一次尝试。
答案 2 :(得分:9)
<强> TCP 强>:
<强> UDP 强>:
答案 3 :(得分:8)
经典的观点是将TCP视为安全,UDP视为不可靠。
但是当TCP-IP协议用于安全关键应用时, 建议不要使用TCP,因为它可以出于多种原因停止出错。 而UDP允许应用软件处理错误,重传定时器等。
此外,TCP比UDP具有更多的处理开销。
目前,UDP用于飞机控制和飞行仪表, 在ARINC 664标准中也称为AFDX(航空电子全双工交换式以太网)。 在ARINC 664中,TCP是可选的,但UDP与为ARINC 653标准(民用飞机中的高可靠性控制软件)设计的RTOS(实时操作系统)一起使用。
有关在AFDX中使用IP和UDP的实时控制的更多信息, 你可以阅读27到50页 http://www.afdx.com/pdf/AFDX_Training_October_2010_Full.pdf
答案 4 :(得分:7)
TCP
在收到确认之前,我不会再发送数据了。
这个过程很慢
用于安全目的
示例:网络,发送邮件,接收邮件等
UDP
这里我没有头疼并承认。
此过程更快,但此处的数据可能会丢失。
示例:视频流,在线游戏等
TCP + UDP = SMTP(例如:移动电话,电话)
答案 5 :(得分:5)
TCP保证(按顺序)数据包传送。 UDP没有。
TCP - 用于您需要所有数据的流量。即HTML,图片等 UDP--用于在数据包丢失时不会受到太大影响的流量,即视频和视频。语音流,在线游戏的一些数据通道等。
答案 6 :(得分:4)
电子邮件:强>
原因: 假设如果某些数据包(字/语句)丢失,我们无法理解内容。它应该是可靠的。
视频直播:
* **原因: ***假设如果某个数据包(帧/序列)丢失,我们可以理解内容。因为视频是帧的集合。对于1秒的视频应该有 25帧(图像)。即使我们可以理解由于我们的想象力技巧而缺少一些帧。这就是UDP用于视频流的原因。
答案 7 :(得分:3)
TCP是一种面向连接的协议,它通过交换机路由器代理等建立路径或虚拟连接,然后开始任何通信。存在诸如路由djikstras最短路径算法的各种机制来建立虚拟端到端连接。因此,它会在浏览HTML和其他页面时使用,一般会进行付款和Web应用程序。
UDP是一种无连接协议 - 它只是一个目的地,节点只是尽可能地传递它。因此,沿着各种路线等无序到达的分组是常见的。所以Instant Messenger和类似的软件开发人员认为UDP是一种理想的解决方案。
在现实生活中如果你想在网上投入数据,而不用担心达到的时间,达到使用UDP的顺序。如果你想在开始抛出数据包之前想要一个可靠的路径,并希望数据包的顺序和延迟相同,那么使用TCP - 我将使用UDP进行Torrent和TCP进行PayPal!
答案 8 :(得分:2)
关于上述有关订购交付的一些评论的另外一个想法......必须澄清的是,目标计算机可能在线路上无序接收数据包,但目的地的TCP负责“重新安排无序数据“在将其传递到堆栈的上层之前”。当你说TCP保证有序数据包传递时,这意味着它会以正确的顺序将数据包传递给堆栈的上层。
答案 9 :(得分:2)
SCTP vs TCP vs UDPServices/Features SCTP TCP UDP
Connection-oriented yes yes no
Full duplex yes yes yes
Reliable data transfer yes yes no
Partial-reliable data transfer optional no no
Ordered data delivery yes yes no
Unordered data delivery yes no yes
Flow control yes yes no
Congestion control yes yes no
ECN capable yes yes no
Selective ACKs yes optional no
Preservation of message boundaries yes no yes
Path MTU discovery yes yes no
Application PDU fragmentation yes yes no
Application PDU bundling yes yes no
Multistreaming yes no no
Multihoming yes no no
Protection against SYN flooding attacks yes no n/a
Allows half-closed connections no yes n/a
Reachability check yes yes no
Psuedo-header for checksum no (vtags) yes yes
Time wait state vtags 4-tuple n/a
答案 10 :(得分:2)
答案 11 :(得分:2)
TCP保证数据包传送和订单。在为可执行文件等文件重建数据时,顺序与首先交付一样重要。
UDP不保证交付NOR订单。数据包可以按任何顺序到达(或不是!)。
TCP的常见用途包括文件传输,其中数据包的完整性至关重要。语音/视频应用程序可以在保持可接受的质量的同时丢失一些数据,因此通常使用UDP。
答案 12 :(得分:2)
当您必须移动大量数据(> ~1 kB)时,TCP是合适的,并且您需要传送所有数据。几乎所有通过互联网传输的数据都通过TCP-HTTP,SMTP,BitTorrent,SSH等进行,都使用TCP。
当您收到丢失的小邮件并希望尽可能高效地发送邮件时,UDP是合适的。您可能能够承受失去它们的一个原因是因为如果他们迷路了您可以重新发送它们。互联网上的主要例子是DNS - DNS由小型查询组成,例如“什么是stackoverflow.com的IP号码?”,响应相应较小。计算机会进行大量的查询,因此应该有效地进行查询,但如果它们在途中丢失,则很容易超时并重新发送它们。
答案 13 :(得分:1)
由于tcp用法与其他答案相比非常简单,我会提到一些有趣的UDP用例:
1)DHCP - 动态主机配置协议,用于为连接设备动态分配IP地址和其他一些网络配置。简单来说,此协议允许您只需连接到网络电缆(或wifi)并开始使用互联网,无需任何其他配置。 DHCP使用UDP协议。由于设置请求消息正在从主机广播,并且无法与DHCP服务器建立TCP连接(您不知道它的地址),因此无法使用TCP。
2)Traceroute - 众所周知的网络诊断工具,它允许您探索数据报传递到网络中的哪条路径到达目的地(以及需要多长时间)。默认情况下,它通过将具有不太可能的目标端口号(范围从33434到33534)的UDP数据报发送到目标,并将ttl(生存时间)字段设置为1.当网络中某处的路由器获得此类数据报时 - 它发现数据报已过期。然后,路由器丢弃数据报并向数据报的原点发送ICMP(因特网控制消息协议)错误消息,该消息指示数据报的ttl已到期并且包含路由器的名称和IP地址。每次主机发送具有越来越高TTL的数据报时,从而增加了它成功克服的网络部分并从新路由器获取新的ICMP消息。当它最终到达它的目的地(数据报TTL足够大以允许它)时, - 目的地主机发送“目标端口不可达”&#39; ICMP消息到源主机。这样,Traceroute就知道到达了目的地。由于TCP保证了段传输,因此使用它而不是UDP至少是低效的,而UDP反过来允许在没有任何重发尝试的情况下丢弃数据报(重新发送在更高级别上实现,如上所述持续增加TTL)
答案 14 :(得分:0)
TCP和UDP的实际示例 tcp - &gt;打电话,短信或任何特定于目的地的东西 UDP - &gt; FM广播频道(AM),Wi-Fi。
答案 15 :(得分:0)
UDP在游戏或其他点对点设置中应用了很多,因为它更快,大多数时候你不需要协议本身来确保一切都以原始顺序到达目的地(UDP不会保证包裹递送或递送订单)。
另一方面,Web流量通过TCP传输。 (我不确定这里,但我认为它与构建HTTP协议的方式有关)
编辑因为我在UDP上失败了。
答案 16 :(得分:0)
TCP:
传输控制协议是面向连接的协议,这意味着它需要握手才能建立端到端通信。建立连接后,用户数据可以通过连接双向发送。
可靠– TCP仅在传输层严格管理消息确认,重传和超时。多次尝试传递邮件。如果途中丢失,服务器将重新请求丢失的部分。在TCP中,没有丢失数据,或者在发生多个超时的情况下断开了连接。 (但是,这种可靠性不包括应用层,在该层仍需要单独的确认流控制)
已排序–如果依次通过连接发送了两条消息,则第一条消息将首先到达接收应用程序。当数据段以错误的顺序到达时,TCP缓冲区会延迟乱序的数据,直到可以正确地重新排序所有数据并将其交付给应用程序为止。
重量级–在发送任何用户数据之前,TCP需要三个数据包来建立套接字连接。 TCP处理可靠性和拥塞控制。 流式传输–数据作为字节流读取,没有区别的指示会传输到信号消息(段)边界。
TCP的应用
万维网,电子邮件,远程管理和文件传输都依赖于TCP。
UDP:
用户数据报协议是一种基于消息的更简单的无连接协议。无连接协议不会建立专用的端到端连接。通过从源到目的地的一个方向传输信息而无需验证接收器的就绪性或状态即可实现通信。
不可靠–发送UDP消息时,无法知道它是否会到达目的地。它可能会迷路。没有确认,重传或超时的概念。
未排序-如果将两条消息发送到同一收件人,则无法预测它们到达的顺序。
轻巧–没有消息排序,没有跟踪连接等。它是在IP之上设计的小型传输层。
数据报–数据包是单独发送的,只有到达时才检查完整性。数据包具有确定的边界,在接收时会遵守这些边界,这意味着在接收方套接字上进行的读取操作将产生原始发送的完整消息。 没有拥塞控制– UDP本身不能避免拥塞。拥塞控制措施必须在应用程序级别实施。
广播-无连接,UDP可以广播-发送的数据包可以被寻址为子网中的所有设备均可接收。
多播–支持多播操作模式,通过该模式,可以自动路由单个数据报包,而不会重复到非常多的订户。
UDP的应用
许多关键的Internet应用程序都使用UDP,其中包括:域名系统(DNS),查询必须快速,并且仅包含单个请求,后跟单个答复包,简单网络管理协议(SNMP),路由信息协议(RIP)和动态主机配置协议(DHCP)。
语音和视频流量通常使用UDP传输。实时视频和音频流协议旨在处理偶尔丢失的数据包,因此,质量只会稍有下降,而如果重新传输丢失的数据包,则不会产生较大的延迟。由于TCP和UDP都在同一网络上运行,因此许多企业发现最近来自这些实时应用程序的UDP流量的增长正在阻碍使用TCP的应用程序的性能,例如销售点,记帐和数据库系统。当TCP检测到数据包丢失时,它将降低其数据速率使用率。由于实时和业务应用程序对企业都很重要,因此某些人认为开发服务质量解决方案至关重要。
某些VPN系统(例如OpenVPN)在应用程序级别实现可靠的连接和错误检查时,可能会使用UDP。