传输层TCP和UDP的区别分析与应用场景

参考文章:
https://blog.csdn.net/u013777351/article/details/49226101
https://blog.csdn.net/weixin_42385626/article/details/81983594

基本概念:

  • 1: 面向报文

面向报文的传输方式是应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文。因此,应用程序必须选择合适大小的报文。若报文太长,则IP层需要分片,降低效率。若太短,会使IP太小。UDP对应用层交下来的报文,既不合并,也不拆分而是保留这些报文的边界。这也就是说,应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文。UDP面向无连接。

  • 2: 面向字节流

面向字节流的话,虽然应用程序和TCP的交互是一次一个数据块(大小不等),但TCP把应用程序的传输数据看成是一连串的无结构的字节流。TCP有一个缓冲,当应用程序传送的数据块太长,TCP就可以把它划分短一些再传送。如果应用程序一次只发送一个字节,TCP也可以等待积累有足够多的字节后再构成报文段发送出去。TCP面向连接。

TCP和UDP介绍

TCP

  • TCP是面向连接的;

  • 每条TCP连接只能有两个端点,一对一通信;

  • TCP提供可靠的交付服务,传输数据无差错不丢失不重复,且按时序到达

  • TCP提供全双工通信;

  • 面向字节流,TCP根据对方给出的窗口和当前的网络拥塞程度决定一个报文应该包含多少个字节。

UDP

  • 面向无连接;
  • UDP使用尽最大努力交付,不保证可靠性。UDP是面向报文的,UDP对应用层交付下来的报文,既不合并,也不拆分,而是保留报文的边界;
  • UDP面向报文,应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文;
  • UDP没有拥塞控制;
  • UDP支持一对一,一对多,多对一和多对多的交互通信。
  • UDP的首部开销小,只有8字节。

TCP和UDP协议的一些应用

在这里插入图片描述

TCP和UDP协议的比较

在这里插入图片描述

TCP/UDP编程模型

在这里插入图片描述
从上图也能清晰的看出,TCP通信需要服务器端侦听listen、接收客户端连接请求accept,等待客户端connect建立连接后才能进行数据包的收发(recv/send)工作。而UDP则服务器和客户端的概念不明显,服务器端即接收端需要绑定端口,等待客户端的数据的到来。后续便可以进行数据的收发(recvfrom/sendto)工作。

在前面讲解UDP时,提到了UDP保留了报文的边界,下面我们来谈谈TCP和UDP中报文的边界问题。在默认的阻塞模式下,TCP无边界,UDP有边界。
对于TCP协议,客户端连续发送数据,只要服务端的这个函数的缓冲区足够大,会一次性接收过来,即客户端是分好几次发过来,是有边界的,而服务端却一次性接收过来,所以证明是无边界的;
而对于UDP协议,客户端连续发送数据,即使服务端的这个函数的缓冲区足够大,也只会一次一次的接收,发送多少次接收多少次,即客户端分几次发送过来,服务端就必须按几次接收,从而证明,这种UDP的通讯模式是有边界的。

TCP/UDP的优缺点

TCP的优点

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

TCP的缺点

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

UDP的优点

快,比TCP稍安全
UDP没有TCP的握手、确认、窗口、重传、拥塞控制等机制,UDP是一个无状态的传输协议,所以它在传递数据时非常快。没有TCP的这些机制,UDP较TCP被攻击者利用的漏洞就要少一些。但UDP也是无法避免攻击的,比如:UDP Flood攻击……

UDP的缺点

不可靠,不稳定
因为UDP没有TCP那些可靠的机制,在数据传递时,如果网络质量不好,就会很容易丢包。

TCP/UDP应用场景

基于上面的优缺点,那么:

  • 什么时候应该使用TCP:

当对网络通讯质量有要求的时候,比如:整个数据要准确无误的传递给对方,这往往用于一些要求可靠的应用,比如HTTPHTTPSFTP等传输文件的协议,POP、SMTP等邮件传输的协议。
在日常生活中,常见使用TCP协议的应用如下:

浏览器,用的HTTP
FlashFXP,用的FTP
Outlook,用的POPSMTP
Putty,用的Telnet、SSH
QQ文件传输
…………

  • 那么什么时候应该使用UDP:

当对网络通讯质量要求不高的时候,要求网络通讯速度能尽量的快,这时就可以使用UDP。
比如,日常生活中,常见使用UDP协议的应用如下:

QQ语音
QQ视频
TFTP
直播

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值