TCP与UDP的区别与适用场景

Posted 流楚丶格念

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TCP与UDP的区别与适用场景相关的知识,希望对你有一定的参考价值。

文章目录

概念

TCP

TCP 是面向连接的、可靠的、基于字节流的传输层通信协议。

  • 面向连接:一定是「一对一」才能连接,不能像 UDP 协议可以一个主机同时向多个主机发送消息,也就是一对多是无法做到的;
  • 可靠的:无论的网络链路中出现了怎样的链路变化,TCP 都可以保证一个报文一定能够到达接收端;
  • 字节流:用户消息通过 TCP 协议传输时,消息可能会被操作系统「分组」成多个的 TCP 报文,如果接收方的程序如果不知道「消息的边界」,是无法读出一个有效的用户消息的。并且 TCP 报文是「有序的」,当「前一个」TCP 报文没有收到的时候,即使它先收到了后面的 TCP 报文,那么也不能扔给应用层去处理,同时对「重复」的 TCP 报文会自动丢弃。

UDP

用户数据报协议(UDP):UDP(用户数据报协议)是一个简单的面向数据报的传输层协议。

提供的是非面向连接的、不可靠的数据流传输。

UDP不提供可靠性,也不提供报文到达确认、排序以及流量控制等功能。它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。因此报文可能会丢失、重复以及乱序等。但由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。

TCP优缺点

优点:可靠、稳定

TCP的可靠体现在TCP在传输数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完之后,还会断开连接用来节约系统资源。

缺点:慢,效率低,占用系统资源高,易被攻击

在传递数据之前要先建立连接,这会消耗时间,而且在数据传递时,确认机制、重传机制、拥塞机制等都会消耗大量时间,而且要在每台设备上维护所有的传输连接。然而,每个链接都会占用系统的CPU、内存等硬件资源。因为TCP有确认机制、三次握手机制,这些也导致TCP容易被利用,实现DOS、DDOS、CC等攻击。

UDP优缺点

优点:快

比TCP稍安全UDP没有TCP拥有的各种机制,是一个无状态的传输协议,所以传递数据非常快,没有TCP的这些机制,被攻击利用的机制就少一些,但是也无法避免被攻击。

缺点:不可靠,不稳定

因为没有TCP的那些机制,UDP在传输数据时,如果网络质量不好,就会很容易丢包,造成数据的缺失。

区别

TCP和UDP有如下区别:

  1. 连接:TCP面向连接的传输层协议,即传输数据之前必须先建立好连接;UDP无连接。
  2. 服务对象:TCP点对点的两点间服务,即一条TCP连接只能有两个端点;UDP支持一对一,一对多,多对一,多对多的交互通信。
  3. 可靠性:TCP可靠交付:无差错,不丢失,不重复,按序到达;UDP尽最大努力交付,不保证可靠交付。
  4. 拥塞控制/流量控制:TCP有拥塞控制和流量控制保证数据传输的安全性;UDP没有拥塞控制,网络拥 塞不会影响源主机的发送效率。
  5. 报文长度:TCP动态报文长度,即TCP报文长度是根据接收方的窗口大小和当前网络拥塞情况决定的;UDP面向报文,不合并,不拆分,保留上面传下来报文的边界。
  6. 首部开销:TCP首部开销大,首部20个字节;UDP首部开销小,8字节(源端口,目的端口,数据长度,校验和)。
  7. 适用场景(由特性决定):数据完整性需让位于通信实时性,则应该选用TCP 协议(如文件传输、重要状态的更新等);反之,保证数据完整性则使用 UDP 协议(如视频传输、实时通信等)。

适用场景(网络稳定性要求)

TCP

TCP:当对网络通讯质量有要求时,比如HTTP、HTTPS、FTP等传输文件的协议, POP、SMTP等邮件传输的协议

对可靠连接有要求时,比如付费、加密数据等等方向都需要依靠TCP

UDP

UDP:对网络通讯质量要求不高时,要求网络通讯速度要快的场景。

所以主要使用在以下场景:

  • 包总量较小的通信(DNS、SNMP)
  • 视频、音频等多媒体通信(即时通信)
  • QQ就是使用的UDP协议。
  • 广播通信

所以,TCP对网络稳定性要求高,而UDP相对弱一些。

以上是关于TCP与UDP的区别与适用场景的主要内容,如果未能解决你的问题,请参考以下文章

TCP与UDP的区别与适用场景

TCP与UDP的区别是什么?

java面试题-tcp和udp

tcp与udp应用场景的区别

Socket请求和Http请求的各自特点区别及适用场景 (转)

Socket请求和Http请求的各自特点区别及适用场景