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

审核编辑 :李倩

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

    关注

    6032

    文章

    44514

    浏览量

    632944
  • TCP
    TCP
    +关注

    关注

    8

    文章

    1349

    浏览量

    78985
  • UDP
    UDP
    +关注

    关注

    0

    文章

    322

    浏览量

    33874

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

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

收藏 人收藏

    评论

    相关推荐

    有什么比较热门的嵌入式项目

    大佬们想问一下可以做什么样的嵌入式项目好找工作?工作1到2年左右
    发表于 11-08 09:57

    TCP&UDP调试工具

    TCP&UDP调试工具
    发表于 10-30 10:41 1次下载

    嵌入式学习建议

    的平衡,要在理解软件工程基本原理基础上理解硬件构件与软件构件等基本概念。 以上建议,仅供初学者参考。当然,以上只是基础阶段的学习建议。要成为良好的嵌入式系统设计师,还需要在实际项目中锻炼,并不断学习与积累经验。
    发表于 10-22 11:41

    嵌入式主板是什么意思?嵌入式主板全面解析

    嵌入式主板,通常被称为嵌入式系统的核心组件,是一种用于控制和数据处理的计算机硬件,其设计旨在嵌入特定设备中执行专门任务。嵌入式主板如同是设备的“大脑”,主要功能是根据需要管理和控制设备
    的头像 发表于 09-30 10:05 365次阅读

    tcpudp的区别和联系

    一、引言 在现代网络通信中,数据传输是至关重要的。为了确保数据的可靠传输,网络协议发挥着关键作用。传输控制协议(TCP)和用户数据报协议(UDP)是两种常用的网络协议,它们在许多应用场景中发
    的头像 发表于 08-16 11:06 527次阅读

    适合初学者的嵌入式项目有哪些?

    适合初学者的嵌入式项目有哪些? 嵌入式学习是一个实践性很强的领域,通过实际项目可以帮助你巩固理论知识并提升技能。以下是几个适合初学者练手的嵌入式
    发表于 07-11 10:23

    如何提升嵌入式编程能力?

    和使用。 9. 网络编程:嵌入式设备越来越多地连接到网络,因此学习TCP/IP、UDP、HTTP等网络协议是必要的。 10. 关注安全性:了解嵌入式系统的安全问题,学习如何编写安全的代
    发表于 06-21 10:01

    通信必备知识!TCPUDP协议介绍及使用

    TCPUDP是两个最常用的通讯协议。TCP是面向连接的协议,需要在收发数据前与对方建立可靠的连接,建立连接的过程为3次握手,断开连接的过程为4次挥手,确保数据传输的可靠性。UDP是一
    的头像 发表于 03-15 08:19 1734次阅读
    通信必备知识!<b class='flag-5'>TCP</b>与<b class='flag-5'>UDP</b>协议介绍及使用

    fpga是嵌入式

    FPGA(现场可编程门阵列)不是嵌入式系统,但FPGA在嵌入式系统中有着重要的应用。
    的头像 发表于 03-14 17:19 2141次阅读

    udp是什么意思 简述TCPUDP的区别和联系

    UDP (User Datagram Protocol) 是一种在计算机网络中使用的传输层协议。它与TCP (Transmission Control Protocol) 一样,都是在因特网协议套件
    的头像 发表于 02-02 16:33 1225次阅读

    高端嵌入式实验平台

    一、整体概述 嵌入式平台具有前沿性、专业性、高集成度、功能丰富等特点,平台涵盖嵌入式计算机技术、嵌入式硬件接口、嵌入式系统软件等关键技术点
    的头像 发表于 01-29 09:55 490次阅读
    高端<b class='flag-5'>嵌入式</b>实验平台

    嵌入式物联网开源项目分享

    很多初学者或者互联网转行从业者,在学习嵌入式技术的基本理论概念之后,可能会感觉到迷茫,感觉自己虽然学了不少,但却不知道怎么用到项目上。
    的头像 发表于 01-24 10:36 1431次阅读
    <b class='flag-5'>嵌入式</b>物联网开源<b class='flag-5'>项目</b>分享

    UDPTCP的主要区别 UDP能否像TCP一样实现可靠传输?

    UDPTCP的主要区别 UDP能否像TCP一样实现可靠传输?TCP如何实现可靠性传输? UDP
    的头像 发表于 01-22 16:10 755次阅读

    什么是嵌入式系统?嵌入式系统的具体应用

    嵌入式,一般是指嵌入式系统。用于控制、监视或者辅助操作机器和设备的装置。
    的头像 发表于 12-20 13:33 2403次阅读

    MIKROE推出世界上最大的嵌入式项目平台EmbeddedWiki

    开发时间的嵌入式解决方案公司,MikroElektronika(MIKROE)今天推出世界上最大的嵌入式项目平台—EmbeddedWiki。平台通过MIKROE 的1500多款 Cl
    发表于 12-11 18:05 441次阅读
    MIKROE推出世界上最大的<b class='flag-5'>嵌入式</b><b class='flag-5'>项目</b>平台EmbeddedWiki