TCP和UDP的应用场景
传输层的两个协议,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所示,发送方的发送速度由网络是否拥塞和接收端接收速度两个因素控制,哪个速度低,就用哪个速度发送。

图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
TCP和UDP的应用场景的更多相关文章
- [TCP/IP] 传输层-TCP和UDP的使用场景
传输层-TCP和UDP应用场景 TCP(传输控制协议) 需要将要传输的文件分段传输,建立会话,可靠传输,流量控制 UDP(用户报文协议) 一个数据包就能完成数据通信,不需要建立会话,不分段,不用流量控 ...
- 剖析tcp与udp及应用场景协议方案选择
什么是TCP和UDP TCP和UDP是TCP/IP协议中的两个传输层协议,它们使用IP路由功能把数据包发送到目的地,从而为应用程序及应用层协议(包 括:HTTP.SMTP.SNMP.FTP和Telne ...
- c# tcp udp 的使用场景
之前用tcp实现了一个案例(远程协助),后来我考虑用udp去实现它,于是又研究了下udp,我发现理论上udp可以做到,但是有一些问题不知道会不会有瓶颈 我参照网上写了一个简单的示例如下 服务端接收.发 ...
- 传输层协议TCP和UDP
本文力图简洁,让读者对TCP和UDP有个初步的认知.闲话少说,现在开始吧.TCP和UDP都是传输层的协议.TCP通过三次握手建立可靠连接,对未送达的消息重新进行发送.UDP不建立连接而直接发送,对未送 ...
- 一些重要的计算机网络协议(IP、TCP、UDP、HTTP)
一.计算机网络的发展历程 1.计算机网络发展 与其说计算机改变了世界,倒不如说是计算机网络改变了世界.彼时彼刻,你我都因网络而有了交集,岂非一种缘分? 计算机与网络发展大致经历如下过程:
- 【转】HTTP学习---TCP和UDP协议的区别与应用
[原文]https://www.toutiao.com/i6592813624689951239/ 概述 ⊙TCP/IP是个协议组,可分为三个层次:网络层.传输层和应用层. 在网络层有IP协议.ICM ...
- 面试:TCP和UDP协议
目录 TCP 协议 UDP协议 TCP和UDP的区别 TCP和UDP的使用场景 一 TCP协议 1.TCP的头部格式 理解TCP协议,首要的就是TCP协议的头部格式 · Source P ...
- 常用传输层协议(tcp/ip+udp)与常用应用层协议简述(http)
一.计算机网络体系结构 二.TCP与UDP差异 1.TCP是面向连接的可靠传输,UDP是面向无连接的不可靠传输 面向连接表现在3次握手,4次挥手:可靠传输表现在未进行4次挥手时的差错重传,超时重传: ...
- 面试官:说说TCP和UDP的区别和应用场景
原创文章首发于公众号:「码农富哥」,欢迎收藏和关注,如转载请注明出处! 上一篇聊完 一文彻底搞懂 TCP三次握手.四次挥手过程及原理 这次聊聊TCP和UDP的区别和场景 TCP/IP 中有两个具有代表 ...
- TCP与UDP的区别
TCP与UDP的区别 TCP面向连接:UDP是无连接,即发送数据之前不需要建立连接 TCP提供可靠的服务,TCP连接传送的数据,无差错.不丢失.不重复,且按顺序到达:UDP尽最大努力交付,即不保证可靠 ...
随机推荐
- Docker介绍下载安装、制作镜像及容器、做目录映射、做端口映射
在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器.网络.内存及存储等,予以抽象.转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以 ...
- error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file o
error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file o ...
- input输入框输入组合的限制
1 输入大小写字母.数字.下划线: 2 <input type="text" οnkeyup="this.value=this.value.replace(/[^\ ...
- Python 项目:外星人入侵--第二部分
外星人入侵 6.驾驶飞船 玩家左右移动飞船,用户按左或右按键时作出响应. 6.1响应按键 当用户在按键时,在python中注册一个事件,事件都是通过方法pygame.event.get()获取的. 在 ...
- Python 项目:外星人入侵----第一部分
外星人入侵 1.规划项目 玩家控制着一艘最初出现在屏幕底部中央的飞船,玩家可以使用箭头键左右移动飞船,还可以使用空格键进行射击,游戏开始时,一群外星人出现在天空中,他们在屏幕中下移动.玩家任务是射杀这 ...
- [Pytorch框架] 2.1.2 使用PyTorch计算梯度数值
文章目录 使用PyTorch计算梯度数值 Autograd 简单的自动求导 复杂的自动求导 Autograd 过程解析 扩展Autograd import torch torch.__version_ ...
- 2023-03-14:读取摄像头,并且显示视频。代码用go语言编写。
2023-03-14:读取摄像头,并且显示视频.代码用go语言编写. 答案2023-03-14: 大体流程如下: 导入所需的库和包. 初始化 ffmpeg 和 SDL2 库. 打开摄像头并创建 AVF ...
- 2022-07-09:总长度为n的数组中,所有长度为k的子序列里,有多少子序列的和为偶数?
2022-07-09:总长度为n的数组中,所有长度为k的子序列里,有多少子序列的和为偶数? 答案2022-07-09: 方法一:递归,要i还是不要i. 方法二:动态规划.需要两张dp表. 代码用rus ...
- AI DevOps | ChatGPT 与研发效能、效率提升(中)
为啥 ChatGPT 突然火了? 简单概括就是:产品太过惊艳,体验超预期 之前人工智能发展多年,报道最多的也许就是曾经的李世石大战AlphaGo,现实中的特斯拉自动驾驶,还有波士顿动能放出的机器狗.对 ...
- for循环原理补充、生成器对象、yield冷门用法、生成器表达式的面试题、常见内置函数
目录 一.for循环原理补充 二.生成器对象 (1).自定义生成器对标range功能(一个参数 两个参数 三个参数 迭代器对象) 三.yield冷门用法 (1).yield与return的对比 四.生 ...