首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >TCP和UDP之间的区别?

TCP和UDP之间的区别?
EN

Stack Overflow用户
提问于 2011-05-12 04:44:09
回答 6查看 139.4K关注 0票数 153

TCP和UDP之间的区别是什么?

我知道TCP用于非时间关键型应用程序,而UDP用于需要快速数据传输的游戏或应用程序。我知道TCP用于HTTP、HTTPs、FTP、SMTP和Telnet。我知道UDP用于DNS和DHCP。

但是为什么呢?TCP和UDP的哪些特征使其适用于各自的用例?

EN

回答 6

Stack Overflow用户

发布于 2011-05-12 04:50:15

可以将TCP看作是两个地点之间包裹的专用计划UPS/FedEx收件/投递,而UDP相当于将明信片扔进邮箱。

UPS/联邦快递将尽他们最大的努力来确保你寄出的包裹到达那里,并按时到达。有了明信片,如果明信片来了,你就很幸运了,它可能会乱发或迟到(你有多少次在某人度假回家后收到他们的明信片?)

TCP是你能得到的最接近有保证的传输协议,而UDP只是“尽力”。

票数 43
EN

Stack Overflow用户

发布于 2011-05-12 05:13:10

将UDP用于DNS和DHCP的原因:

DNS - TCP需要来自服务器(侦听连接)的资源多于来自客户端的资源。特别是,当TCP连接关闭时,服务器需要在称为TIME_WAIT_2的状态下记住连接的详细信息(将它们保存在内存中)两分钟。这是一种功能,可以防止来自前一个连接的错误重复数据包被解释为当前连接的一部分。维护TIME_WAIT_2会耗尽服务器上的内核内存。DNS请求很小,并且经常从许多不同的客户端到达。与客户端相比,这种使用模式加剧了服务器上的负载。人们相信,使用UDP将会改善这个问题,因为UDP在客户端或服务器上都没有连接,也没有状态需要维护。

DHCP - DHCP是BOOTP的扩展。BOOTP是客户端计算机用于在客户端启动时从服务器获取配置信息的协议。为了定位服务器,会发送广播请求BOOTP (或DHCP)服务器。广播只能通过无连接协议发送,例如UDP。因此,BOOTP至少需要一个UDP数据包才能进行服务器定位广播。此外,由于BOOTP在客户端运行时...启动,并且这是客户端可能未加载和运行其整个TCP/IP堆栈的时间段,UDP可能是客户端此时准备处理的唯一协议。最后,一些DHCP/BOOTP客户端仅支持UDP。例如,一些IP恒温器只实现UDP。原因是它们的处理器和内存都很小,无法执行TCP --但它们在引导时仍然需要获取IP地址。

正如其他人所提到的,UDP对于流媒体也很有用,尤其是音频。如果您只是丢弃延迟的数据包,则在网络延迟下,对话听起来会更好。你可以使用UDP来做到这一点,但是使用TCP在延迟期间得到的只是一个暂停,然后是音频,它总是会像它已经暂停的那样延迟。对于双向电话风格的对话,这是不可接受的。

票数 22
EN

Stack Overflow用户

发布于 2013-05-01 04:29:08

TCP在实际数据传输之前建立连接,而UDP则不会。通过这种方式,UDP可以提供更快的传输速度。因此,诸如DNS、时间服务器访问之类的应用程序都使用UDP。

与UDP不同,TCP使用拥塞控制。它对网络负载做出响应。与UDP不同的是,它会在网络即将拥塞时减速。因此,像多媒体这样喜欢恒定吞吐量的应用程序可能会选择UDP。

此外,UDP是不可靠的,它不会对数据包丢失做出反应。因此,像多媒体传输这样的对丢失敏感的应用更喜欢UDP。但是,TCP是一种可靠协议,因此,web传输、电子邮件、文件下载等需要可靠性的应用程序首选TCP。

此外,在今天的互联网上,由于中间盒的存在,UDP并不像TCP那样受欢迎。当假定UDP连接被阻止时,某些应用程序(如skype )会使用TCP。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5970383

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档