0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

嵌入式项目中,UDP与TCP该怎么选?

Q4MP_gh_c472c21 来源:最后一个bug 作者:最后一个bug 2022-04-14 14:56 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

单片机应用程序开发中可能用得比较多有RS485CAN通信等等相对简洁一点的总线,由于所选用的单片机性能和资源有限,以太网并没有在单片机应用中作为一种普遍存在的对外通信接口

但随着MCU工艺、性能的逐渐加强,以及嵌入式Linux平台的推行,以太网通信也慢慢开始成为开发者们所考虑使用的一种可靠通信方式。

经常有一些朋友问到,现在用不到技术和知识点是不是可以不用学?

我只能回答:技术在不断的革新,并且总是朝着更加便利和通用化方向发展,现在看似非常复杂的技术,在以后的应用上都会得以简化,但即使再简化也还是需要有必备的一些基础和认识,所以总归还是要学的,至于什么时候学就看自己的时间精力了,当然越早学习,就越多一种选择。

那么,今天就浅谈一下TCP与UDP的区别与应用,并指引后续在系统通信设计上的设计考虑和选择。

1

TCP VS UDP

要想在通信的两者之间合理的选择TCP还是UDP,首先需要理清楚两者的特点与区别,下面简单梳理一下:

在学习这两种协议的时候你一定看到过这样中一句总结的话:“TCP是面向连接的可靠传输而UDP是无连接的不可靠传输。”

其实这句话已经把这两种协议大部分特点都囊括在内了:

1、面向连接与无连接

TCP在传输数据之前需要经过三次握手建立连接进行相互确认,当需要断开连接的时候需要进行四次挥手;而对于UDP就不需要这么繁琐的连接建立过程,直接传输即可。

所以对于TCP仅仅只支持单播,只能点对点的在连接的两个端点中数据传输数据,不支持多播和广播;而对于UDP而言支持一对多、多对一和多对多的传输,这一点在通信架构设计中对这两种协议的选择非常重要,比如有些资源优先的MCU对socket连接有限等等问题。

2、字节流与数据报

UDP也称之为是用户数据报协议,而TCP为传输控制协议,所以UDP是一种面向应用报文的传输,有明显的传输边界,仅仅只是封包以后进行处理,不会进行合并和拆分,一次就传输一个报文。

但是TCP是一种面向字节流的通信协议,没有明显的边界,其主要是保证数据正确且有序,TCP存在一个数据缓存区,如果数据量较大,其会进行分包发出,而当数据较少也会等待数据达到合适的数量后进行合并发送,所以会存在多个粘包的问题,这一点在设计中需要考虑。

3、可靠传输

TCP是一种可靠传输,确认重传、差错控制、流量控制和拥塞控制等等都是传输数据过程中实现的策略和算法,这就使得TCP能够达到数据上无差错、不丢失、不重复、有序。

所以为了保证这些数据的可靠传输,TCP相比UDP的报文格式要复杂,且占用的资源也相对较多。

而UDP则不同,它仅仅只是一种最大努力交付的协议,其主要是利用IP层的无连接传通信服务,可靠性方面它是无法保障的,有点类似于串口通信,它不需要连接,只管传输。

如果你想让数据可靠,那么用户可以在应用层自己来增加可靠性传输策略和机制来进行实现,所以Udp传输数据是可能会丢失、无序。

4、实时性

UDP由于没有拥塞控制等等策略,协议上会轻量很多,其均以比较恒定的速度进行传输,不会出现发送速率降低的问题,所以在网络不好的情况下就丢包了。

而对于TCP一旦有数据包丢失,就会进行重传等等一系列机制,传输速度大大降低。

2

项目中该怎么选择?

对于TCP和UDP的选择有些朋友在开发的时候比较纠结,因为有时候采用UDP和用户方面可靠的传输机制也能够达到TCP类似的效果,比如许多支持可靠通信的UDP库,所以具体怎么选择还是要根据具体的应用和设计。

比如对于很多直播、游戏等等通过自己加入一些重传机制,可以最大可能的发挥UDP传输实时性的优点,使得呈现给用户更加流畅的画面体验。

在嵌入式、物联网方面由于项目对实时性要求高,且资源有限,UDP相对比较轻量,也是较好的选择。

但对于一些文字、文件的数据传输还是会优先使用TCP,毕竟TCP这块在保证数据的可靠性方面还是做得非常成熟,用户程序这块也可以减少一些可靠性处理。

所以最终得选择,还是要结合TCP与UDP的特点和具体项目综合考虑。

END

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6078

    文章

    45579

    浏览量

    673585
  • TCP
    TCP
    +关注

    关注

    8

    文章

    1433

    浏览量

    83764
  • UDP
    UDP
    +关注

    关注

    0

    文章

    335

    浏览量

    35528

原文标题:嵌入式项目中,UDP与TCP该怎么选?

文章出处:【微信号:gh_c472c2199c88,微信公众号:嵌入式微处理器】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    MAX32558:嵌入式安全的卓越之

    MAX32558:嵌入式安全的卓越之 在当今数字化时代,数据安全至关重要。嵌入式设备需要强大的安全解决方案来保护敏感数据,而 Maxim Integrated 的 MAX32558 正是这样一款
    的头像 发表于 03-26 16:40 132次阅读

    Z02215单芯片调制解调器:嵌入式应用的理想之

    Z02215单芯片调制解调器:嵌入式应用的理想之嵌入式调制解调器应用领域,空间、性能和低功耗是关键考量因素。ZiLOG的Z02215单芯片调制解调器凭借其卓越的性能和丰富的功能,成为了众多
    的头像 发表于 03-11 16:10 329次阅读

    嵌入式单片机开发学习路径

    是个人项目,也可以参与开源项目或公司项目。在实际项目中,你会遇到各种实际问题,这将大大提高你的解决问题的能力。 6. 持续学习 嵌入式
    发表于 02-09 15:42

    STM32开发中的五大嵌入式系统

    :FreeRTOS是开源的,可以免费获取并在商业项目中使用,降低了项目的开发成本。 2.小巧高效:FreeRTOS的内核非常小巧,仅需几KB的内存空间,适用于资源受限的嵌入式系统,并且具有高效的任务调度算法
    发表于 01-21 10:48

    工程项目常用的逆变电源厂家怎么?广州邮科值得关注吗?

    做工程项目的老师傅都明白,逆变电源不对,后期运维跑断腿。无论是通信基站、太阳能电站,还是移动医疗车、野外作业,工程项目常用的逆变电源厂家怎么
    的头像 发表于 01-09 10:34 380次阅读
    工程<b class='flag-5'>项目</b>常用的逆变电源厂家<b class='flag-5'>该</b>怎么<b class='flag-5'>选</b>?广州邮科值得关注吗?

    什么是嵌入式操作系统?

    ):优先 FreeRTOS/UCOS/RT-Thread,避免用 Linux(占用资源太多,适合高端嵌入式处理器如 STM32MP1)。 对于学习 STM32+FreeRTOS 来说,RTOS 的核心
    发表于 12-09 10:33

    TCPUDP的区别

    首先概括一下基本的区别: TCP是一个面向连接的、可靠的、基于字节流的传输层协议。 而UDP是一个面向无连接的传输层协议。(就这么简单,其它TCP的特性也就没有了)。 具体来分析,和 U
    发表于 12-09 07:24

    嵌入式与FPGA的区别

    \"嵌入式开发门槛低、就业广,适合转行;FPGA技术深、薪资高,但要求学历和数学功底。哪个?看你的基础和职业目标。\" ⭕我们先来明白下两者区别在哪? ✅1、嵌入式:分两部分
    发表于 11-20 07:12

    嵌入式需要掌握哪些核心技能?

    嵌入式需要掌握哪些核心技能? 若想通过学习嵌入式技术提升就业竞争力,需重点掌握C语言、嵌入式硬件架构、RTOS/Linux开发、通信协议四大核心技能,并结合行业需求积累项目经验。
    发表于 10-21 16:25

    嵌入式达到什么水平才能就业?

    (三)实战经验拥有2-3 个完整嵌入式项目经验:项目需包含需求分析、方案设计、代码开发、测试优化全流程,能清晰阐述项目难点与解决方案能独立排查
    发表于 09-15 10:20

    【「Yocto项目实战教程:高效定制嵌入式Linux系统」阅读体验】+基础概念学习理解

    。为了对珠峰更了解些,开始接触 Linux 系统开发,并逐渐认识到 Yocto 项目在定制嵌入式 Linux 系统方面的重要性。所以很想拜读下此书。 二、书籍内容概述 基础知识 书中首先回顾了 Linux
    发表于 08-04 22:29

    Linux嵌入式和单片机嵌入式的区别?

    :成本较低,适合预算有限的项目。 Linux嵌入式 :成本较高,适合对功能和性能有较高要求的项目。 8. 社区和支持 : 单片机嵌入式 :社区和支持相对较小,但也有一些专业的论坛
    发表于 06-20 09:46

    嵌入式AI技术漫谈 如何组建一个AI项目开发小组

    我们来谈一谈如何组建一个AI项目开发小组: 为什么要为嵌入式AI项目 组建一个专门的开发小组 相对于以往成熟的项目开发体系,嵌入式AI
    的头像 发表于 06-11 16:34 1553次阅读

    【书籍评测活动NO.61】Yocto项目实战教程:高效定制嵌入式Linux系统

    用的嵌入式 Linux 构建工具之一是 Buildroot。尽管 Buildroot 能在较短时间内提供简单的嵌入式系统,但它的局限性在于对复杂项目和频繁变化的软硬件需求的支持不足。随着嵌入式
    发表于 05-21 10:00

    嵌入式基础构架 from andrew@labs

    一个系列,介绍过去一年多我在不同项目中逐步搭建的嵌入式平台。长久以来,我一直在筹备多个大型嵌入式硬件项目:包含25 Gbps误码率测试仪、48+2端口1/10千兆以太网交换机和2 GH
    的头像 发表于 05-19 11:22 1092次阅读