TCP和UDP的区别?

TCP和UDP有什么区别?

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

但为什么? TCP和UDP的哪些特性使其对于各自的用例有用?

TCP是通过IPnetworking的面向连接的stream。 它保证所有发送的数据包将以正确的顺序到达目的地。 这意味着使用发送回发送方的确认分组和自动重传,导致额外的延迟,并且比UDP传输效率低。

UDP是一个无连接协议。 通信是面向数据报的。 只有在单个数据报才能保证完整性。 数据报到达目的地,可能无法到达或根本没有到达。 它比TCP更高效,因为它使用非ACK 。 它通常用于实时通信,其中一小部分丢包率优于TCP连接的开销。

在某些情况下使用UDP是因为它允许广播数据包传输。 在DHCP协议的情况下,这有时是很重要的,因为客户机还没有收到IP地址(这是DHCP协商的目的),没有IP地址本身就没有办法build立TCPstream。

从Skullbox文章:

TCP(传输控制协议)是互联网上最常用的协议。 这是因为TCP提供纠错。 当使用TCP协议时,有一个“保证交付”。 这主要是由于所谓的“stream量控制”方法。 stream量控制决定何时需要重新发送数据,并在数据stream成功传输之前停止数据stream。 这是有效的,因为如果发送一个数据包,可能发生冲突。 发生这种情况时,客户端会重新向服务器请求数据包,直到整个数据包完成并与原始数据包相同。

UDP(用户数据报协议)是另一种在互联网上常用的协议。 但是,UDP从来不用于发送重要数据,如网页,数据库信息等。 UDP通常用于stream式传输audio和video。 stream媒体,如Windows媒体audio文件(.WMA),Real Player(.RM)等使用UDP,因为它提供了速度! UDP比TCP更快的原因是因为没有任何forms的stream量控制或纠错。 通过Internet发送的数据受到冲突的影响,并且会出现错误。 请记住,UDP只关心速度。 这是stream媒体质量不高的主要原因。 1)TCP是面向连接和可靠的,因为UDP连接less,不可靠。

2)TCP需要在networking接口级别进行更多的处理,而在UDP中则不需要。

3)TCP采用3路握手,拥塞控制,stream量控制等机制来保证可靠的传输。

4)UDP主要用于数据包延迟比数据包丢失严重的情况。

把TCP看作是一个专门的计划在两个地点之间的包裹的UPS /联邦快递接送/丢包,而UDP则相当于在邮箱中扔明信片。

UPS /联邦快递将尽其所能,确保您寄出的包裹到达那里,并准时到达那里。 有了这张明信片,如果它到达了,那么你是幸运的,它可能会出现故障或迟到(在度假回家之后,你有多less次得到明信片)?

TCP尽可能接近有保证的传输协议,而UDP只是“尽力而为”。

原因UDP用于DNS和DHCP:

DNS – TCP需要来自服务器(监听连接)的更多资源,而不是来自客户端的资源。 特别是,当TCP连接closures时,服务器需要在称为TIME_WAIT_2的状态下记住连接的详细信息(将其保存在内存中)两分钟。 这是防止来自前一个连接的错误重复数据包被解释为当前连接的一部分的特征。 维护TIME_WAIT_2将耗尽服务器上的内核内存。 DNS请求很小,经常来自许多不同的客户端。 与客户端相比,此使用模式加剧了服务器上的负载。 人们相信,使用UDP,在客户机或服务器上都没有连接,没有状态维护,就可以改善这个问题。

DHCP – DHCP是BOOTP的扩展。 BOOTP是客户端计算机用于从服务器获取configuration信息的协议,而客户端正在引导。 为了定位服务器,发送广播询问BOOTP(或DHCP)服务器。 广播只能通过无连接协议(如UDP)发送。 因此,BOOTP至less需要一个UDP包,用于服务器定位广播。 而且,由于BOOTP在客户端引导时运行,并且这是客户端可能没有加载和运行整个TCP / IP栈的时间段,所以UDP可能是客户端准备处理的唯一协议时间。 最后,一些DHCP / BOOTP客户端只有板载UDP。 例如,一些IP恒温器只实现UDP。 原因在于它们是用这么小的处理器和很less的内存来构build的,它们无法执行TCP – 但是在启动时仍然需要获取IP地址。

正如其他人所说,UDP对于stream媒体,特别是audio也是有用的。 如果您只是简单地丢弃延迟的数据包,则在networking延迟下会话听起来更好 你可以用UDP来做到这一点,但是在TCP期间你所得到的只是一个暂停,随后audio总是会被延迟,就像它已经暂停一样。 对于双向电话式对话,这是不可接受的。

其中一个差别就是简短

UDP :发送消息,不要回头看是否到达目的地,无连接协议
TCP :发送消息并保证到达目的地,面向连接的协议

TCP在实际数据传输发生之前build立一个连接,UDP不会。 这样,UDP可以提供更快的交付。 因此,应用程序(如DNS,时间服务器访问)使用UDP。

与UDP不同,TCP使用拥塞控制。 它响应networking负载。 与UDP不同的是,当networking拥塞即将到来时,它会变慢。 所以,喜欢恒定吞吐量的多媒体应用程序可能会用于UDP。

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

另外,在今天的互联网中,由于中间盒,UDP不如TCP。 假设UDP连接被阻塞,一些像Skype这样的应用程序会下降到TCP。

Tcp和Udp协议之间的简短差别:

1)Tcp – 传输控制协议和Udp – 用户数据报协议。

2)Tcp是可靠的协议,其中Udp是不可靠的协议。

3)Tcp是面向stream的,其中Udp是面向消息的协议。

4)Tcp比Udp慢。