tcp和udp的区别和使用场景_TCP跟UDP有什么不同

tcp和udp的区别和使用场景_TCP跟UDP有什么不同TCPTCP是一种面向有连接的传输层协议,能够对自己提供的连接实施控制。适用于要求可靠传输的应用,例如文件传输。UDPUDP是一种面向无连接的传输层协议,不会对自己提供的连接实施控制。适用于实时应用,例如:IP电话、视频会议、直播等。…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

TCP和UDP都是传输层协议

TCP

TCP 是一种面向有连接的传输层协议,能够对自己提供的连接实施控制。适用于要求可靠传输的应用,例如文件传输。面向字节流,传输慢

UDP

UDP 是一种面向无连接的传输层协议,不会对自己提供的连接实施控制。适用于实时应用,例如:IP电话、视频会议、直播等。,以报文的方式传输,效率高

在这里插入图片描述

TCP:Tcp建立连接需要3次握手

好比打电话,连接,稳定
三次握手 四次挥手
最少需要三次,保证稳定连接!
为什么需要三次握手四次挥手见其他文
客户端、服务端角色清晰
传输完成,释放连接,效率低

在这里插入图片描述

UDP:发短信

不连接,不稳定
客户端、服务端:没有明确的界限
不管有没有准备好,都可以发给你…类似导弹攻击;DDOS:洪水攻击!(饱和攻击)

UDP无连接,TCP面向连接

使用UDP协议的双方随时可以发送数据,使用TCP协议的双方在发送数据之前必须使用“三次握手”建立TCP连接,TCP连接建立成功后,才能进行数据传输,数据传输结束后,必须使用“四报文挥手”来释放连接

UDP支持一对一,一对多,一对全的通信TCP仅支持单播

在下图中,任何一台主机都可以向其它3台主机发送广播
在这里插入图片描述

在下图中,任何一台主机都可以向某个多播组发送多播
在这里插入图片描述
在下图中,任何一台主机都可以向其它任一主机发送单播
在这里插入图片描述

TCP仅支持·单播·
在这里插入图片描述

TCP和 UDP对报文的处理

UDP
发送方将应用进程报文交付给传输层的UDP,UDP直接给这个报文添加一个UDP首部,使之成为UDP用户数据报,然后进行发送,接收方收到该UDP数据报后,去掉UDP首部,将应用层报文交付给应用进程,也就是说,UDP对应用进程交付的报文既不合并,也不拆分,而是保留报文边界,即UDP是面向报文的
在这里插入图片描述
TCP
发送方的TCP把应用进程交付下来的数据块,仅仅看做是一连串的无结构的字节流,TCP并不知道这些字节流的具体含义,仅将他们编号,存储在发送缓存中,TCP根据发送策略,从发送缓存中提取一定数量的字节,构建TCP报文段,并发送,接收方的TCP,一方面从所接受到的TCP报文段中,取出数据载荷部分并存储在接收缓存中,一方面将接收缓存中的一些字节交付给应用进程,TCP不保证接收方应用进程所收到的数据块与发送方应用进程发出的数据块具有对应大小的关系,例如发送方的应用进程交给发送方TCP共10个数据块,但接收方的TCP可能只用了4个数据块就把收到的字节流交付给了上层的应用进程。接收方的应用进程必须有能力识别收到的字节流并还原成有意义的应用层数据,TCP面向字节流是TCP实现可靠传输,流量控制,以及拥塞控制的基础。在实际网络中,基于TCP连接的两端,可以同时进行TCP报文段的发送和接收(即全双工通信)
在这里插入图片描述

TCP可靠传输,UDP不可靠传输

UDP
网络层向传输层提供的是无连接的不可靠的传输服务,当传输层使用UDP协议时,传输层给应用层提供的也是无连接的不可靠的传输服务,在数据传输过程中,如果用户数据报收到干扰,发生误码,接收方面UDP可以通过该数据报首部中的校验和字段的值,检查出产生误码的情况,但仅仅丢弃该数据报,其他什么也不做。发送方给接收方发送UDP用户数据报,如果该数据报被因特网中的某个路由器丢弃了,发送方UDP不做任何处理
UDP适用于IP电话,视频会议等实时应用

在这里插入图片描述
TCP

网络层向传输层提供的是无连接的不可靠的传输服务(也就是说IP数据报可能会出现丢失或者误码),当传输层使用tcp协议时,传输层给应用层提供的是面向连接的可靠的传输服务,不会出现误码,丢失,乱序,重复等传输差错

TCP适用于要求可靠传输的应用,例如文件传输

在这里插入图片描述

TCP报文段与UDP数据报的首部的对比

UDP
一个UDP数据报由首部和数据载荷两部分组成,首部仅有4个字段,每个字段长度为2字节,由于UDP不提供可靠传输服务,仅仅在网际层的基础上增加了用于区分应用进程的端口
在这里插入图片描述
TCP
一个TCP报文段由数据载荷和首部两部分组成,首部如下图,最小长度为20字节,最大长度为60字节,这是因为TCP要实现可靠传输,流量控制,拥塞控制等服务
在这里插入图片描述

小结

UDP TCP
是否需要建立连接
通信方式 一对一,一对多,多对一,多对多交互通信 每条TCP连接只能有两个端点,只能是一对一通信
对报文的处理 对应用层交付的报文直接打包 面向字节流
传输是否可靠 尽最大努力交付,也就是不可靠,不使用流量控制和拥塞控制 可靠传输,使用流量控制和拥塞控制
首部对比 仅8字节 最小20字节,最大60字节

推荐及参考

计算机网络微课堂 P59
一文搞懂TCP与UDP的区别

TCP/IP协议,HTTP协议等相关概念的学习

TCP 和 UDP 的区别
TCP和UDP的最完整的区别
TCP和UDP的区别和优缺点
深入理解TCP、UDP协议及两者的区别
TCP和UDP之间的区别
TCP和UDP的区别
面试题:UDP&TCP的区别

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/191457.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • FLAG_ACTIVITY_NEW_TASK与FLAG_ACTIVITY_CLEAR_TOP的理解纠正「建议收藏」

    FLAG_ACTIVITY_NEW_TASK与FLAG_ACTIVITY_CLEAR_TOP的理解纠正「建议收藏」1.单独的FLAG_ACTIVITY_NEW_TASK并不等价于启动模式singleTask,它仅表示寻找activity所需的任务栈压入,(即TaskAffinity指定的任务栈,TaskAffinity默认为应用包名)2.FLAG_ACTIVITY_NEW_TASK+FLAG_ACTIVITY_CLEAR_TOP也不等价于启动模式singleTask3.在FLAG_ACTIVITY_…

    2022年7月17日
    13
  • pycharm虚拟环境与本地环境区别_pycharm自带python吗

    pycharm虚拟环境与本地环境区别_pycharm自带python吗    Python的版本众多,在加上适用不同版本的PythonPackage。这导致在同时进行几个项目时,对库的依赖存在很大的问题。这个时候就牵涉到对Python以及依赖库的版本管理,方便进行开发,virtualenv就是用来解决这个问题的。下面介绍使用PyCharm创建VirtualEnvironment的方法。    PyCharm可以使用virtualenv中的功能来创建虚拟环境。Py…

    2022年8月27日
    5
  • 维度建模方法论[通俗易懂]

    维度建模方法论[通俗易懂]维度建模方法一、前言本人学习《数仓工具箱》的学习总结,纯学习分享,供大家参考。二、经典数仓架构理论围绕着维度建模,那就不得不了解,早期的数据仓库构架方法。这里介绍一下两个经典的数仓架构理论。2.1、Kimball模式Kimball模式从流程上看是是自顶向下的,即从数据集市到数据仓库再到数据源(先有数据集市再有数据仓库)的一种敏捷开发方法。对于Kimball模式,数据源每每是给定的若干个数据库表,数据较为稳定但是数据之间的关联关系比较复杂,须要从这些OLTP中产生的事务型数据结构抽取出分析型

    2022年9月23日
    2
  • char转换为数字_char字符转int

    char转换为数字_char字符转int刷题遇到一个考点是char型数字转int进行计算的问题。一看就会,一做就错,显然是在这里的认识薄弱了。将一番搜索的结果记录下来,以备再忘来打脸。char的定义参考:Java基本数据类型之char。首先,char跟int这两种类型可以直接互转:charch1=’a’;inti=ch1;charch2=(char)i;那么面对charin=‘2’需要转成int做计算,那么很…

    2022年9月27日
    2
  • Postman :中文汉化界面一键配置「建议收藏」

    Postman :中文汉化界面一键配置「建议收藏」开心到飞起!!!Postman工具界面被大佬汉化啦!!Gitee和Github链接跳转地址:黄连木笛大佬的Gitee地址:PostmanCn黄连木笛大佬的Github地址:PostmanCn汉化包下载地址【2021-04-1320:22如有新版可以自己更新下载】:https://gitee.com//hlmd/PostmanCn/attach_files/670442/download/app.zip使用方法:解压并复制app文件夹到路径:C:/Users/用户名/AppData/Lo.

    2022年9月29日
    1
  • 利用按键精灵实现QQ群发和微信群发「建议收藏」

    利用按键精灵实现QQ群发和微信群发「建议收藏」1前言注意:本教程只供学习参考之用,如用于群发广告等影响他人乃至违法犯罪行为等与本文作者无关。另外,转载请注明出处,尊重创作者劳动,谢谢。端午期间需要给微信和QQ的好友发送祝福,但是上千个好友都要发送比较困难,所以想到利用按键精灵撰写脚本的方式实现自动群发祝福。2解释说明&运行环境关于解释说明和程序运行环境请参考我之前的博文的2/3章节:按键精灵实现自动化点qq名片赞3QQ群发3.1几点注意在本demo中群发的是一串文本和一张图片,可以按照需要修改脚本代码。发送图片是通过

    2022年6月4日
    236

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号