上一篇聊完一文彻底搞懂 TCP三次握手、四次挥手过程及原理

这次聊聊TCP和UDP的区别和场景

TCP/IP 中有两个具有代表性的传输层协议,分别是 TCP 和 UDP。来看看传输层位于OSI七层协议和TCP/IP四层协议的位置:

那么TCP和UDP的区别和使用场景分别是怎样的?我们用一个图来对比一下UDP和TCP:

TCP

TCP 是面向连接的、可靠的流协议。流就是指不间断的数据结构,当应用程序采用 TCP 发送消息时,虽然可以保证发送的顺序,但还是犹如没有任何间隔的数据流发送给接收端。TCP是面向面向字节流,虽然应用程序和TCP的交互是一次一个数据块(大小不等),但TCP把应用程序看成是一连串的无结构的字节流。TCP有一个缓冲,当应用程序传送的数据块太长,TCP就可以把它划分短一些再传送。

TCP 为提供可靠性传输,实行“顺序控制”或“重发控制”机制。此外还具备“流控制(流量控制)”、“拥塞控制”、提高网络利用率等众多功能。

TCP有以下特点:

  • TCP充分地实现了数据传输时各种控制功能,可以进行丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制。而这些在 UDP 中都没有。
  • 此外,TCP 作为一种面向有连接的协议,只有在确认通信对端存在时才会发送数据,从而可以控制通信流量的浪费。
  • 根据 TCP 的这些机制,在 IP 这种无连接的网络上也能够实现高可靠性的通信( 主要通过检验和、序列号、确认应答、重发控制、连接管理以及窗口控制等机制实现)。

UDP

UDP 是面向报文的,所谓面向报文,是指面向报文的传输方式是应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文。因此,应用程序必须选择合适大小的报文。若报文太长,则IP层需要分片,降低效率。若太短,会是IP太小。

UDP 是不具有可靠性的数据报协议,细微的处理它会交给上层的应用去完成。在 UDP 的情况下,虽然可以确保发送消息的大小,却不能保证消息一定会到达。因此,应用有时会根据自己的需要进行重发处理。

UDP有以下特点:

  • UDP 不提供复杂的控制机制,利用 IP 提供面向无连接的通信服务。
  • 传输途中出现丢包,UDP 也不负责重发。
  • 当包的到达顺序出现乱序时,UDP没有纠正的功能。
  • 并且它是将应用程序发来的数据在收到的那一刻,立即按照原样发送到网络上的一种机制。即使是出现网络拥堵的情况,UDP 也无法进行流量控制等避免网络拥塞行为。
  • 如果需要以上的细节控制,不得不交由采用 UDP 的应用程序去处理。
  • UDP 常用于以下几个方面:
    • 1.包总量较少的通信(DNS、SNMP等);
    • 2.视频、音频等多媒体通信(即时通信);
    • 3.限定于 LAN 等特定网络中的应用通信;
    • 4.广播通信(广播、多播)。

UDP 和 TCP 的应用

他们的应用如下图:

总结:

TCP 和 UDP 的优缺点无法简单地、绝对地去做比较:TCP 用于在传输层有必要实现可靠传输的情况;而在一方面,UDP 主要用于那些对高速传输和实时性有较高要求的通信或广播通信。TCP 和 UDP 应该根据应用的目的按需使用。

最后

文章如果对你有收获,可以收藏转发,这会给我一个大大鼓励哟!另外可以关注我公众号「码农富哥」,我会持续输出Python,服务器端架构,计算机基础的 原创 文章

map和foreach的区别和应用场景_面试官:说说UDP和TCP的区别及应用场景相关推荐

  1. Python进阶----网络通信基础 ,OSI七层协议() ,UDP和TCP的区别 , TCP/IP协议(三次握手,四次挥手)...

    Python进阶----网络通信基础 ,OSI七层协议() ,UDP和TCP的区别 , TCP/IP协议(三次握手,四次挥手) 一丶CS/BS 架构 C/S: 客户端/服务器 定义:       这里 ...

  2. python网络通信效率_Python进阶----网络通信基础 ,OSI七层协议() ,UDP和TCP的区别 , TCP/IP协议(三次握手,四次挥手)...

    Python进阶----网络通信基础 ,OSI七层协议() ,UDP和TCP的区别 , TCP/IP协议(三次握手,四次挥手) 一丶CS/BS 架构 C/S: 客户端/服务器 定义: 这里的客户端一般 ...

  3. zookeeper 网关_zookeeper 有哪些应用场景?面试官希望听到这 4 点!

    点击蓝色"架构文摘"关注我哟 加个"星标",每天上午 09:25,干货推送! 作者:中华石杉 来源:github.com/shishan100/Java-Int ...

  4. Spring MVC和Spring Boot有什么区别? 这样答,面试官直呼666

    Spring MVC和Spring Boot有什么区别? 这样答,面试官直呼666 作为初级程序员,这样的问题在面试中,也被问到过,随着越来越了解,发现以前自己答的真水. 一般的回答 ​ 先来说说我以 ...

  5. python怎么接收udp报文_面试官:说说UDP和TCP的区别及应用场景

    上一篇聊完一文彻底搞懂 TCP三次握手.四次挥手过程及原理 这次聊聊TCP和UDP的区别和场景 TCP/IP 中有两个具有代表性的传输层协议,分别是 TCP 和 UDP.来看看传输层位于OSI七层协议 ...

  6. swf缓存文件在哪里_面试官:mybatis一级缓存二级缓存的区别都不知道,知道门在哪吧...

    面试官:虫虫你简历上写了了解mybatis缓存,那你能说说一级缓存和二级缓存的区别吗? 虫虫:我只知道这是用来缓存sql查询的数据 面试官:没了? 虫虫:没了 面试官:公司门知道在哪里吧 自己走还是我 ...

  7. Java UDP和TCP的区别

    为什么要写这篇博客:是这样的,最近听朋友说,有不少公司面试的时候会问道TCP和UDp的却别,所以就写出一篇简单的来描述他们之间的区别,送给那些即将面试的朋友们. UDP: 1.UDP, a.将数据以及 ...

  8. TCP/UDP、TCP/IP区别

    1.TCP和UDP 的区别 TCP: 优点:可靠 稳定  TCP 的可靠体现在 TCP 在传输数据之前,会有三次握手来建立连接,而且在数据传递时,有确认窗口. 重传. 拥塞控制机制,在数据传完之后, ...

  9. 网络状态码302和303的区别究竟是啥?面试官最满意这种回答

    为了避免很多小白进来看到这个问题一脸蒙圈,我想做一个完整的补充.老杨的文章一向是以详细(废话多)出名的,所以,看了开头就觉得好的速度收藏起来看,保证给你搞懂. 周五了,老杨写完回答就准备去海底捞吃顿夜 ...

  10. 面试官:说说 typeof 与 instanceof 区别?

    一.typeof typeof 操作符返回一个字符串,表示未经计算的操作数的类型 使用方法如下: typeof operand typeof(operand) operand表示对象或原始值的表达式, ...

最新文章

  1. IT项目管理入门知识
  2. android 获取网卡mac_防亚马逊账号关联黑科技--如何修改我们的网卡MAC到底重要不?...
  3. Quartz.Net 调度框架配置介绍
  4. 关于@property()的那些属性及ARC简介【nonatomic,atomic,assign,retain,strong,weak,copy。】
  5. Linux账号和权限管理详解(超详细示例操作)!
  6. HDFS分布式文件系统设计思想
  7. 逻辑回归(Logistic Regression)学习笔记
  8. 双机流水作业调度问题——Johnson算法
  9. 通过CImageList加载图标 报错
  10. 神经网络——单层感知器
  11. CBA公布对北京首钢处罚结果 相关工作人员遭重罚
  12. 美团热修复 Robust 方案接入(一)
  13. 【动态规划 floyd】SPOJ ACPC13
  14. [笔试] 搜狗校招哈尔滨,武汉站 - 实现加减乘操作
  15. Unexpected Exception caught setting '' on 'class com.: Error setting expression '' with value ['', ]
  16. [论文阅读] (08) NDSS2020 UNICORN: Runtime Provenance-Based Detector for Advanced Persistent Threats
  17. 华为ensp防火墙web登陆配置
  18. Java毕设项目-医药信息管理系统
  19. 【win10安装Kafka发消息及消费】
  20. python将字符串转换为数字信号的过程_如何检测一个字符串是否可以转换为数字...

热门文章

  1. C++11模板友元语法
  2. MyBatis框架及原理分析
  3. 【UOJ】#37. 【清华集训2014】主旋律
  4. docker nginx 反向代理
  5. 高质量程序设计指南c++/c语言(19)--赋值操作符“=”
  6. 关闭(取消)windows 2003中ie增强的安全配置?
  7. 线程基础阶段性总结和扩展(二)——ThreadLock
  8. Oracle批量、大量Update方法总结
  9. ElasticSearch常用的几种查询方式
  10. 并发编程学习之生产者消费者模式 - 使用Synchronized同步锁方式