首页 > 其他分享 >TCP和UDP的应用场景

TCP和UDP的应用场景

时间:2022-08-15 12:56:34浏览次数:101  
标签:UDP 场景 TCP 发送 传输 传输层 数据包

传输层的两个协议,TCP(Transmission Control Protocol,传输控制协议)和UDP(User Datagram Protocol,用户数据报协议),有各自的应用场景。

TCP应用场景

TCP为应用层协议提供可靠传输,发送端按顺序发送,接收端按顺序接收,其间发送丢包、乱序,TCP负责重传和排序。下面是TCP的应用场景。

(1)客户端程序和服务端程序需要多次交互才能实现应用程序的功能。比如接收电子邮件使用的POP3和发送电子邮件的SMTP,传输文件的FTP,在传输层使用的是TCP。

(2)应用程序传输的文件需要分段传输,比如浏览器访问网页,网页中图片和HTML文件需要分段后发送给浏览器,或QQ传文件,在传输层也是选用TCP。

如果需要将发送的内容分成多个数据包发送,这就要求在传输层使用TCP,在发送方和接收方建立连接,实现可靠传输、流量控制和拥塞避免。

比如从网络中下载一个500MBit的电影或下载一个200MBit的软件,这么大的文件需要拆分成多个数据包发送,发送过程需要持续几分钟或几十分钟。在此期间,发送方将要发送的内容一边发送一边放到缓存,将缓存中的内容分成多个数据包,并进行编号,按顺序发送。这就需要在发送方和接收方建立连接,协商通信过程的一些参数(比如一个数据包最大多少个字节),如果网络不稳定造成某个数据包丢失,发送方必须重新发送丢失的数据包,否则就会造成接收到的文件不完整,这就需要TCP协议能够实现可靠传输。如果发送方发送速度太快,接收方来不及处理,接收方还会通知发送方降低发送速度甚至停止发送。TCP协议还能实现流量控制,因为互联网中的流量不固定,流量过高时会造成网络拥塞(这一点很好理解,就像城市上下班高峰时的交通堵塞一样),在整个传输过程中发送方要一直探测网络是否拥塞,来调整发送速度,TCP协议有拥塞避免机制。

如图1所示,发送方的发送速度由网络是否拥塞和接收端接收速度两个因素控制,哪个速度低,就用哪个速度发送。
image
图1 TCP功能

有些应用程序通信,使用TCP协议就显得效率低了。比如有些应用,客户端只需向服务器发送一个请求报文,服务器返回一个响应报文就完成其功能。这类应用如果使用TCP,发送三个数据包建立连接,再发送四个数据包释放连接,就为了发送一个报文,就显得不值了,干脆让应用程序直接发送,如果丢包了,应用程序再发送一遍。这类应用,在传输层就使用 UDP。

UDP应用场景

(1)客户端程序和服务端程序通信,应用程序发送的数据包不需要分段。比如域名解析,DNS协议就是用传输层的UDP,客户端向DNS服务器发送一个报文解析某个网站的域名,DNS服务器将解析的结果使用一个报文返回给客户端。

(2)实时通信,比如QQ或微信语音聊天,或视频聊天。这类应用,发送端和接收端需要实时交互,也就是不允许较长延迟,即便有几句话因为网络堵塞没听清,也不允许使用TCP等待丢失的报文,等待的时间太长了,就不能愉快的聊天了。

(3)多播或广播通信。比如学校多媒体机房,老师的电脑屏幕需要教室的学生电脑接收屏幕,在老师的电脑安装多媒体教室服务端软件,学生电脑安装多媒体教室客户端软件,老师电脑使用多播地址或广播地址发送报文,学生电脑都能收到。这类应用在传输层使用UDP。

知道了传输层两个协议的特点和应用场景,就很容易判断某个应用层协议在传输层使用什么协议。

现在判断一下,QQ聊天在传输层使用的是什么协议,QQ传文件在传输层使用的是什么协议?

如果使用QQ给好友传输文件,传输文件会持续几分钟或几十分钟,肯定不是使用一个数据包就能把文件传输完的,需要将要传输的文件分段传输,在传输文件之前需要建立会话,在传输过程中实现可靠传输、流量控制、拥塞避免等,这在传输层使用TCP协议来实现这些功能。

使用QQ聊天,通常一次输入聊天内容不会有太多文字,使用一个数据包就能把聊天内容发送出去,并且聊完第一句,也不定什么时候聊第二句,发送数据不是持续的,发送QQ聊天的内容在传输层使用UDP。

可见一个应用程序通信根据通信的特点,在传输层可以选择不同的协议。

此文章来自于《华为 HCIA-Datacom认证(2021新版HCIA教材)》


©著作权归作者所有:来自51CTO博客作者韩立刚冬青的原创作品,请联系作者获取转载授权,否则将追究法律责任
TCP和UDP的应用场景
https://blog.51cto.com/91xueit/5367097

标签:UDP,场景,TCP,发送,传输,传输层,数据包
From: https://www.cnblogs.com/xmasker/p/16587909.html

相关文章

  • 技术分享 | 如何模拟真实使用场景?mock 技术来帮你
    原文链接mock是一种通过代理修改请求与响应,从而辅助构造更多应用场景的工具。比如在工作中,可能需要mock第三方的回调给到测试人员测试的环境,从而更顺利的开展测试工作,......
  • redis五种数据类型及使用场景(转载)
    (19条消息)【Redis】五种数据类型及其使用场景_编程芝士的博客-CSDN博客_redis有几种数据类型......
  • TCP/UDP学习笔记
    TCP/UDP学习笔记相同点:1.都工作在传输层2.都在程序之间传输数据(二进制文件),可以是文件、视频、图片等不同点:TCP:面向连接(握手挥手)、完整可靠(丢包重发)、顺序(序列传输)......
  • 华为5700三层交换机在生产场景中做策略路由
     我们在工作中经常会遇到这样的问题,就是有两条线路,一条电信一条移动,一条ADSL一条光纤。诸如此类的。但由于有三层交换机,我们往往把默认路由就指向了某一个出口。这样我......
  • 长篇图解java反射机制及其应用场景
    一、什么是java反射?在java的面向对象编程过程中,通常我们需要先知道一个Class类,然后new类名()方式来获取该类的对象。也就是说我们需要在写代码的时候(编译期或者编译期之......
  • 画图TCP协议和三次握手及四次挥手
    1.TCP协议1.1.TCP特性1.TCP提供一种面向连接的、可靠的字节流服务在一个TCP连接中,仅有两方进行彼此通信。广播和多播不能用于TCP2.TCP使用校验和,确认和重传机制来保......
  • 周回顾并发编程与数据库08.14:UDP协议、操作系统发展史、相关名词、进程、线程、验证py
    目录UDP协议操作系统发展史相关名词进程线程锁信号量event事件池协程数据库MySQLSQL与NoSQL内容UDP协议Internet协议集支持一个无连接的传输协议,该协议......
  • 简述 Python 的深浅拷贝以及应用场景
    简述Python的深浅拷贝以及应用场景导入模块:importcopy浅拷贝:copy.copy深拷贝:copy.deepcopy浅拷贝指仅仅拷贝数据集合的第一层数据,深拷贝指拷贝数据集合的所有层。所......
  • # 2.1 TCP/IP 网络模型有哪几层?
    #2.1TCP/IP网络模型有哪几层?问大家,为什么要有TCP/IP网络模型?对于同一台设备上的进程间通信,有很多种方式,比如有管道、消息队列、共享内存、信号等方式,而对于不同设......